File tree 7 files changed +22
-6
lines changed
app/assets/javascripts/discourse/app 7 files changed +22
-6
lines changed Original file line number Diff line number Diff line change 126
126
@disableTextarea ={{ this.composer.disableTextarea }}
127
127
@formTemplateIds ={{ this.composer.formTemplateIds }}
128
128
@formTemplateInitialValues ={{ this.composer.formTemplateInitialValues }}
129
+ @onSelectFormTemplate ={{ this.composer.onSelectFormTemplate }}
129
130
>
130
131
<div class =" composer-fields" >
131
132
<PluginOutlet
Original file line number Diff line number Diff line change 18
18
@popupMenuOptions ={{ this.popupMenuOptions }}
19
19
@formTemplateIds ={{ this.formTemplateIds }}
20
20
@formTemplateInitialValues ={{ @formTemplateInitialValues }}
21
+ @onSelectFormTemplate ={{ @onSelectFormTemplate }}
21
22
@replyingToTopic ={{ this.composer.replyingToTopic }}
22
23
@editingPost ={{ this.composer.editingPost }}
23
24
@disabled ={{ this.disableTextarea }}
Original file line number Diff line number Diff line change 18
18
<FormTemplateField::Wrapper
19
19
@id ={{ this.selectedFormTemplateId }}
20
20
@initialValues ={{ @formTemplateInitialValues }}
21
+ @onSelectFormTemplate ={{ @onSelectFormTemplate }}
21
22
/>
22
23
</form >
23
24
{{ else }}
Original file line number Diff line number Diff line change @@ -23,6 +23,8 @@ export default class FormTemplateFieldWrapper extends Component {
23
23
_loadTemplate ( templateContent ) {
24
24
try {
25
25
this . parsedTemplate = Yaml . load ( templateContent ) ;
26
+
27
+ this . args . onSelectFormTemplate ?. ( this . parsedTemplate ) ;
26
28
} catch ( e ) {
27
29
this . error = e ;
28
30
}
Original file line number Diff line number Diff line change 1
1
import I18n from "I18n" ;
2
2
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
+
4
9
const formData = new FormData ( form ) ;
5
10
6
11
// Validate the form template
@@ -36,7 +41,7 @@ export default function prepareFormTemplateData(form) {
36
41
const key = Object . keys ( item ) [ 0 ] ;
37
42
const value = item [ key ] ;
38
43
if ( value ) {
39
- return `### ${ key } \n${ value } ` ;
44
+ return `### ${ labelMap [ key ] } \n${ value } ` ;
40
45
}
41
46
} ) ;
42
47
Original file line number Diff line number Diff line change @@ -182,6 +182,11 @@ export default class ComposerService extends Service {
182
182
return this . set ( "_formTemplateInitialValues" , values ) ;
183
183
}
184
184
185
+ @action
186
+ onSelectFormTemplate ( formTemplate ) {
187
+ this . selectedFormTemplate = formTemplate ;
188
+ }
189
+
185
190
@discourseComputed ( "showPreview" )
186
191
toggleText ( showPreview ) {
187
192
return showPreview
@@ -920,7 +925,8 @@ export default class ComposerService extends Service {
920
925
! this . get ( "model.editingPost" )
921
926
) {
922
927
const formTemplateData = prepareFormTemplateData (
923
- document . querySelector ( "#form-template-form" )
928
+ document . querySelector ( "#form-template-form" ) ,
929
+ this . selectedFormTemplate
924
930
) ;
925
931
if ( formTemplateData ) {
926
932
this . model . set ( "reply" , formTemplateData ) ;
Original file line number Diff line number Diff line change 229
229
composer . fill_title ( topic_title )
230
230
composer . fill_form_template_field ( "input" , "Bruce Wayne" )
231
231
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
235
232
236
233
expect ( topic_page ) . to have_topic_title ( topic_title )
237
234
expect ( find ( "#{ topic_page . post_by_number_selector ( 1 ) } .cooked p" ) ) . to have_content (
238
235
"Bruce Wayne" ,
239
236
)
237
+ expect ( find ( "#{ topic_page . post_by_number_selector ( 1 ) } .cooked h3" ) ) . to have_content (
238
+ "What is your full name?" ,
239
+ )
240
240
end
241
241
242
242
it "creates a post with an upload field" do
You can’t perform that action at this time.
0 commit comments