3
3
*/
4
4
component {
5
5
6
- property name = " formBuilderService" inject = " formBuilderService" ;
7
- property name = " formBuilderValidationService" inject = " formBuilderValidationService" ;
8
- property name = " validationEngine" inject = " validationEngine" ;
6
+ property name = " formBuilderService" inject = " FormBuilderService" ;
7
+ property name = " formBuilderValidationService" inject = " FormBuilderValidationService" ;
8
+ property name = " formBuilderRenderingService" inject = " FormBuilderRenderingService" ;
9
+ property name = " validationEngine" inject = " ValidationEngine" ;
9
10
property name = " rulesEngineWebRequestService" inject = " RulesEngineWebRequestService" ;
10
11
property name = " websiteLoginService" inject = " featureInjector:websiteUsers:websiteLoginService" ;
11
12
@@ -24,6 +25,7 @@ component {
24
25
var checkAccess = formbuilderService .checkAccessAllowed ( formId );
25
26
if ( ! checkAccess .allowed ) {
26
27
if ( checkAccess .reason == " login" ) {
28
+ submission .checkAccess = true ;
27
29
formBuilderService .setTempStoredSubmission ( formId , submission );
28
30
if ( event .isAjax () ) {
29
31
event .renderData ( data = { success = false , response = checkAccess .message }, type = " json" );
@@ -47,32 +49,38 @@ component {
47
49
}
48
50
49
51
var validationResult = validationEngine .newValidationResult ();
52
+ var persistStruct = {}
53
+ var formItemsInPage = [];
50
54
51
55
if ( submission .formPageNumber ?: 0 ) {
52
- var validationResult = formBuilderValidationService .validateFormSubmission (
53
- formItems = formBuilderService .getFormItems ( id = formId , pageNumber = submission .formPageNumber )
56
+ StructAppend ( submission , formBuilderService .getTempStoredSubmission ( formId ) );
57
+
58
+ formItemsInPage = formBuilderService .getFormItems ( id = formId , pageNumber = submission .formPageNumber );
59
+ }
60
+
61
+ if ( ArrayLen ( formItemsInPage ) ) {
62
+ validationResult = formBuilderValidationService .validateFormSubmission (
63
+ formItems = formItemsInPage
54
64
, submissionData = submission
55
65
);
56
66
57
67
if ( validationResult .validated () ) {
58
- var savedData = formBuilderService .getTempStoredSubmission ( formId );
59
-
60
68
submission .formPageNumber + = submission ._formNextPage ?: 1 ;
61
69
62
- StructAppend ( savedData , submission );
63
-
64
- formBuilderService .setTempStoredSubmission ( formId , savedData );
65
-
66
- setNextEvent ( url = cgi .http_referer );
70
+ formBuilderService .setTempStoredSubmission ( formId , submission );
67
71
}
68
72
} else {
73
+ formBuilderService .clearTempStoredSubmission ( formId );
74
+
69
75
validationResult = formBuilderService .saveFormSubmission (
70
76
formId = formId
71
77
, requestData = submission
72
78
, instanceId = ( rc .instanceId ?: " " )
73
79
, instanceSite = ( rc .instanceSite ?: " " )
74
80
, instanceUrl = ( rc .instanceUrl ?: " " )
75
81
);
82
+
83
+ persistStruct .formBuilderFormSubmitted = formId ;
76
84
}
77
85
78
86
if ( event .isAjax () ) {
@@ -83,27 +91,27 @@ component {
83
91
} else {
84
92
var errors = {};
85
93
var messages = validationResult .getMessages ();
86
- for ( var fieldName in messages ) {
94
+ for ( var fieldName in messages ) {
87
95
var message = messages [ fieldName ];
88
96
errors [ fieldName ] = translateResource ( uri = message .message , data = message .params );
89
97
}
90
98
event .renderData ( data = { success = false , errors = errors }, type = " json" );
91
99
}
92
100
} else {
93
- if ( validationResult .validated () ) {
94
- setNextEvent ( url = cgi .http_referer , persistStruct = {
95
- formBuilderFormSubmitted = formId
96
- } );
97
- } else {
98
- submission .validationResult = validationResult ;
99
- setNextEvent ( url = cgi .http_referer , persistStruct = submission );
101
+ if ( ! validationResult .validated () ) {
102
+ persistStruct = submission ;
103
+ persistStruct .validationResult = validationResult ;
100
104
}
105
+
106
+ setNextEvent ( url = cgi .http_referer , persistStruct = persistStruct );
101
107
}
102
108
}
103
109
104
110
private string function formLayout ( event , rc , prc , args = {} ) {
105
- if ( ( rc .formBuilderFormSubmitted ?: " " ) == ( args .form ?: " " ) ) {
106
- return renderViewlet ( event = " formbuilder.core.successMessage" , args = { formId = args .form } )
111
+ var formId = args .form ?: " " ;
112
+
113
+ if ( ( rc .formBuilderFormSubmitted ?: " " ) == formId ) {
114
+ return renderViewlet ( event = " formbuilder.core.successMessage" , args = { formId = formId } )
107
115
}
108
116
109
117
var validationRulesetName = formBuilderValidationService .getRulesetForFormItems ( args .formItems ?: [] );
@@ -114,6 +122,36 @@ component {
114
122
);
115
123
}
116
124
125
+ args .renderedResponses = " " ;
126
+ if ( isEmptyString ( args .renderedItems ) ) {
127
+ var formItems = formBuilderService .getFormItems ( id = formId );
128
+ var savedData = formBuilderService .getTempStoredSubmission ( formId );
129
+
130
+ for ( var formItem in formItems ) {
131
+ formItem .configuration .renderedItem = renderViewlet (
132
+ event = formBuilderRenderingService .getItemTypeViewlet ( itemType = formItem .item_type , context = " response" )
133
+ , args = {
134
+ response = savedData [ formItem .configuration .name ?: " " ] ?: " "
135
+ , itemConfiguration = formItem .configuration
136
+ }
137
+ );
138
+
139
+ formItem .configuration .id = formItem .configuration .id ?: CreateUUID ();
140
+
141
+ if ( StructKeyExists ( formItem .configuration , " layout" ) ) {
142
+ formItem .configuration .renderedItem = renderViewlet (
143
+ event = formBuilderRenderingService .getFormFieldLayoutViewlet (
144
+ itemType = formItem .item_type
145
+ , layout = formItem .configuration .layout
146
+ )
147
+ , args = formItem .configuration
148
+ );
149
+ }
150
+
151
+ args .renderedResponses & = formItem .configuration .renderedItem ;
152
+ }
153
+ }
154
+
117
155
args .renderedButtons = renderViewlet ( event = " formbuilder.core.formButtons" , args = args );
118
156
119
157
event .include ( assetId = " /js/frontend/formbuilder/" );
@@ -127,7 +165,7 @@ component {
127
165
128
166
args .isFormPage = formPageNumber > 0 ;
129
167
args .isFirstPage = formPageNumber == 1 ;
130
- args .isLastPage = formPagesTotal == formPagesTotal ;
168
+ args .isLastPage = formPageNumber > formPagesTotal ;
131
169
132
170
return renderView ( view = " /formbuilder/layouts/core/formButtons" , args = args );
133
171
}
0 commit comments