Skip to content

Commit 3eef3dc

Browse files
authored
FIX: form template cooked heading from label (#23359)
1 parent f1d8cd5 commit 3eef3dc

File tree

7 files changed

+22
-6
lines changed

7 files changed

+22
-6
lines changed

app/assets/javascripts/discourse/app/components/composer-container.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
@disableTextarea={{this.composer.disableTextarea}}
127127
@formTemplateIds={{this.composer.formTemplateIds}}
128128
@formTemplateInitialValues={{this.composer.formTemplateInitialValues}}
129+
@onSelectFormTemplate={{this.composer.onSelectFormTemplate}}
129130
>
130131
<div class="composer-fields">
131132
<PluginOutlet

app/assets/javascripts/discourse/app/components/composer-editor.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
@popupMenuOptions={{this.popupMenuOptions}}
1919
@formTemplateIds={{this.formTemplateIds}}
2020
@formTemplateInitialValues={{@formTemplateInitialValues}}
21+
@onSelectFormTemplate={{@onSelectFormTemplate}}
2122
@replyingToTopic={{this.composer.replyingToTopic}}
2223
@editingPost={{this.composer.editingPost}}
2324
@disabled={{this.disableTextarea}}

app/assets/javascripts/discourse/app/components/d-editor.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<FormTemplateField::Wrapper
1919
@id={{this.selectedFormTemplateId}}
2020
@initialValues={{@formTemplateInitialValues}}
21+
@onSelectFormTemplate={{@onSelectFormTemplate}}
2122
/>
2223
</form>
2324
{{else}}

app/assets/javascripts/discourse/app/components/form-template-field/wrapper.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export default class FormTemplateFieldWrapper extends Component {
2323
_loadTemplate(templateContent) {
2424
try {
2525
this.parsedTemplate = Yaml.load(templateContent);
26+
27+
this.args.onSelectFormTemplate?.(this.parsedTemplate);
2628
} catch (e) {
2729
this.error = e;
2830
}

app/assets/javascripts/discourse/app/lib/form-template-validation.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import I18n from "I18n";
22

3-
export default function prepareFormTemplateData(form) {
3+
export default function prepareFormTemplateData(form, formTemplate) {
4+
const labelMap = formTemplate.reduce((acc, field) => {
5+
acc[field.id] = field.attributes.label;
6+
return acc;
7+
}, {});
8+
49
const formData = new FormData(form);
510

611
// Validate the form template
@@ -36,7 +41,7 @@ export default function prepareFormTemplateData(form) {
3641
const key = Object.keys(item)[0];
3742
const value = item[key];
3843
if (value) {
39-
return `### ${key}\n${value}`;
44+
return `### ${labelMap[key]}\n${value}`;
4045
}
4146
});
4247

app/assets/javascripts/discourse/app/services/composer.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ export default class ComposerService extends Service {
182182
return this.set("_formTemplateInitialValues", values);
183183
}
184184

185+
@action
186+
onSelectFormTemplate(formTemplate) {
187+
this.selectedFormTemplate = formTemplate;
188+
}
189+
185190
@discourseComputed("showPreview")
186191
toggleText(showPreview) {
187192
return showPreview
@@ -920,7 +925,8 @@ export default class ComposerService extends Service {
920925
!this.get("model.editingPost")
921926
) {
922927
const formTemplateData = prepareFormTemplateData(
923-
document.querySelector("#form-template-form")
928+
document.querySelector("#form-template-form"),
929+
this.selectedFormTemplate
924930
);
925931
if (formTemplateData) {
926932
this.model.set("reply", formTemplateData);

spec/system/composer/category_templates_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,14 +229,14 @@
229229
composer.fill_title(topic_title)
230230
composer.fill_form_template_field("input", "Bruce Wayne")
231231
composer.create
232-
topic = Topic.where(user: user, title: topic_title)
233-
topic_id = Topic.where(user: user, title: topic_title).pluck(:id)
234-
post = Post.where(topic_id: topic_id).first
235232

236233
expect(topic_page).to have_topic_title(topic_title)
237234
expect(find("#{topic_page.post_by_number_selector(1)} .cooked p")).to have_content(
238235
"Bruce Wayne",
239236
)
237+
expect(find("#{topic_page.post_by_number_selector(1)} .cooked h3")).to have_content(
238+
"What is your full name?",
239+
)
240240
end
241241

242242
it "creates a post with an upload field" do

0 commit comments

Comments
 (0)