Skip to content

Commit 1ccf3f1

Browse files
committed
Merge branch 'hotfix-10.27.28' into stable
2 parents 3e45cdd + 657d3a8 commit 1ccf3f1

File tree

11 files changed

+106
-30
lines changed

11 files changed

+106
-30
lines changed

system/handlers/formbuilder/Core.cfc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@ component {
4747
}
4848

4949
var validationResult = formBuilderService.saveFormSubmission(
50-
formId = formId
51-
, requestData = submission
52-
, instanceId = ( rc.instanceId ?: "" )
50+
formId = formId
51+
, requestData = submission
52+
, instanceId = ( rc.instanceId ?: "" )
53+
, instanceSite = ( rc.instanceSite ?: "" )
54+
, instanceUrl = ( rc.instanceUrl ?: "" )
5355
);
5456

5557
if ( event.isAjax() ) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @feature formbuilder
3+
*/
4+
component {
5+
6+
property name="formBuilderService" inject="SiteService";
7+
property name="formBuilderService" inject="FormBuilderService";
8+
9+
private string function default( event, rc, prc, args={} ) {
10+
if ( !isEmptyString( args.data ?: "" ) ) {
11+
var submissionId = ( rc.submissionId ?: ( args.record.id ?: ( rc.id ?: "" ) ) );
12+
13+
var submission = formBuilderService.getSubmission( submissionId );
14+
15+
if ( !isEmptyString( submission.form_site ?: "" ) ) {
16+
17+
var link = event.getSiteUrl( submission.form_site ) & args.data;
18+
19+
return '<a href="#link#">#link#</a>';
20+
}
21+
}
22+
23+
return "";
24+
}
25+
26+
}

system/handlers/widgets/FormBuilderForm.cfc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ component {
6464
rendered &= '<div class="alert alert-info"><p>' & translateResource( "formbuilder:#resubmitMessage#") & '</p></div>';
6565
}
6666

67+
args.instanceSite = args.instanceSite ?: event.getSiteId();
68+
args.instanceUrl = args.instanceUrl ?: event.getCurrentUrl();
69+
6770
rendered &= formbuilderService.renderForm(
6871
formId = formId
6972
, layout = layout

system/i18n/cms.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ validation.languageCode.default=Must be valid ISO 639-1 format (e.g 'en' or 'en_
531531
validation.slug.default=Must only contain lowercase letters and dashes
532532
validation.email.default=Please enter a valid email address
533533
validation.fileUpload.default=File size must be less than {1} MB
534-
validation.fileType.default=Invalid file type. File types accepted are: {1}. Please choose another file.
534+
validation.fileType.default=Invalid file type. Accepted file types are: {1}. Please choose a different file.
535535
validation.fileNameSlug.default=May only contain numbers, letters and dashes
536536
validation.presideObjectUniqueIndex.default=Must be unique
537537
validation.presideObjectForeignKey.default=The selected option could not be found. Please choose another option.

system/i18n/preside-objects/formbuilder_formsubmission.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ field.submitted_by.title=Submitted by
55
field.datecreated.title=Submitted on
66
field.submitted_data.title=Response
77
field.form_instance.title=Form instance
8+
field.form_site.title=Form site
9+
field.form_url.title=Form url
810
field.ip_address.title=IP Address
911
field.user_agent.title=User agent

system/preside-objects/formbuilder/formbuilder_formsubmission.cfc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ component displayname="Form builder: form" extends="preside.system.base.SystemPr
99
property name="form" relationship="many-to-one" relatedto="formbuilder_form" required=true;
1010
property name="submitted_by" relationship="many-to-one" relatedTo="website_user" required=false renderer="websiteUser" ondelete="set-null-if-no-cycle-check" onupdate="cascade-if-no-cycle-check" feature="websiteUsers";
1111

12-
property name="submitted_data" type="string" dbtype="text" required=false renderer="formbuilderSubmission";
13-
property name="form_instance" type="string" dbtype="varchar" maxlength=200 required=false;
14-
property name="ip_address" type="string" dbtype="varchar" maxlength=50 required=false;
15-
property name="user_agent" type="string" dbtype="text" required=false;
12+
property name="submitted_data" type="string" dbtype="text" required=false renderer="formbuilderSubmission";
13+
14+
property name="form_instance" type="string" dbtype="varchar" maxlength=200 required=false;
15+
property name="form_url" type="string" dbtype="text" required=false renderer="formbuilderSubmissionFormUrl";
16+
property name="form_site" relationship="many-to-one" relatedTo="site" required=false;
17+
18+
property name="ip_address" type="string" dbtype="varchar" maxlength=50 required=false;
19+
property name="user_agent" type="string" dbtype="text" required=false;
1620
}

system/services/admin/DataManagerService.cfc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,13 @@ component {
182182

183183
var fields = [];
184184
var propertyNames = _getPresideObjectService().getObjectAttribute( objectName=objectName, attributeName="propertyNames" );
185+
var batchEditableDefault = _getPresideObjectService().getObjectAttribute( objectName=objectName, attributeName="batchEditableDefault", defaultValue=true );
185186
var props = _getPresideObjectService().getObjectProperties( objectName );
186187
var dao = _getPresideObjectService().getObject( objectName );
187188
var forbiddenFields = [ dao.getIdField(), dao.getLabelField(), dao.getDateCreatedField(), dao.getDateModifiedField(), dao.getFlagField() ];
188189
var isFieldBatchEditable = function( propertyName, attributes ) {
189190
if ( forbiddenFields.findNoCase( propertyName ) ) {
190-
return false
191+
return false;
191192
}
192193
if ( attributes.relationship == "one-to-many" ) {
193194
return false;
@@ -201,11 +202,11 @@ component {
201202
if ( propertyName.reFind( "^_" ) ) {
202203
return false;
203204
}
204-
if ( IsBoolean( attributes.batcheditable ?: "" ) && !attributes.batcheditable ) {
205-
return false;
205+
if ( IsBoolean( attributes.batcheditable ?: "" ) ) {
206+
return attributes.batcheditable;
206207
}
207208

208-
return true;
209+
return batchEditableDefault;
209210
}
210211

211212
for( var propertyName in propertyNames ) {

system/services/formbuilder/FormBuilderService.cfc

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,9 +1023,11 @@ component {
10231023
public any function saveFormSubmission(
10241024
required string formId
10251025
, required struct requestData
1026-
, string instanceId = ""
1027-
, string ipAddress = Trim( ListLast( cgi.remote_addr ?: "" ) )
1028-
, string userAgent = ( cgi.http_user_agent ?: "" )
1026+
, string instanceId = ""
1027+
, string instanceSite = ""
1028+
, string instanceUrl = ""
1029+
, string ipAddress = Trim( ListLast( cgi.remote_addr ?: "" ) )
1030+
, string userAgent = ( cgi.http_user_agent ?: "" )
10291031
) {
10301032
setFormBuilderSubmissionContextData( arguments.formId, arguments.requestData );
10311033

@@ -1056,20 +1058,26 @@ component {
10561058
if ( validationResult.validated() ) {
10571059
if ( isV2Form( arguments.formid ) ) {
10581060
submissionId = $getPresideObject( "formbuilder_formsubmission" ).insertData( data={
1059-
form = arguments.formId
1060-
, submitted_by = $getWebsiteLoggedInUserId()
1061-
, form_instance = arguments.instanceId
1062-
, ip_address = arguments.ipAddress
1063-
, user_agent = arguments.userAgent
1061+
form = arguments.formId
1062+
, submitted_by = $getWebsiteLoggedInUserId()
1063+
, form_instance = arguments.instanceId
1064+
, form_site = arguments.instanceSite
1065+
, form_url = arguments.instanceUrl
1066+
, ip_address = arguments.ipAddress
1067+
, user_agent = arguments.userAgent
10641068
} );
1069+
10651070
saveV2Responses( formId=arguments.formId, formData=formData, formItems=formItems, submissionId=submissionId );
10661071
} else {
10671072
formData = renderResponsesForSaving( formId=arguments.formId, formData=formData, formItems=formItems );
1073+
10681074
submissionId = $getPresideObject( "formbuilder_formsubmission" ).insertData( data={
10691075
form = arguments.formId
10701076
, submitted_by = $getWebsiteLoggedInUserId()
10711077
, submitted_data = SerializeJson( formData )
10721078
, form_instance = arguments.instanceId
1079+
, form_site = arguments.instanceSite
1080+
, form_url = arguments.instanceUrl
10731081
, ip_address = arguments.ipAddress
10741082
, user_agent = arguments.userAgent
10751083
} );

system/services/updateManager/AppDatabaseMigrationService.cfc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,27 @@ component {
4949
}
5050
}
5151

52+
if ( arguments.async ) {
53+
var migrationsWithPriority = {};
54+
55+
for ( var migration in migrations ) {
56+
var asyncPriorityHandler = "dbmigrations.#migration#.asyncPriority";
57+
if ( $getColdbox().handlerExists( asyncPriorityHandler ) ) {
58+
var priority = $runEvent(
59+
event = asyncPriorityHandler
60+
, private = true
61+
, prepostExempt = true
62+
);
63+
64+
migrationsWithPriority[ migration ] = priority ?: 1;
65+
} else {
66+
migrationsWithPriority[ migration ] = 1;
67+
}
68+
}
69+
70+
migrations = StructSort( migrationsWithPriority, "numeric" );
71+
}
72+
5273
return migrations;
5374
}
5475

system/views/admin/formbuilder/viewSubmission.cfm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
<dt>#translateResource( "preside-objects.formbuilder_formsubmission:field.form_instance.title")#</dt>
1919
<dd>#renderField( 'formbuilder_formsubmission', 'form_instance', prc.submission.form_instance )#</dd>
2020

21+
<dt>#translateResource( "preside-objects.formbuilder_formsubmission:field.form_url.title")#</dt>
22+
<dd>#renderField( 'formbuilder_formsubmission', 'form_url', prc.submission.form_url )#</dd>
23+
2124
<dt>#translateResource( "preside-objects.formbuilder_formsubmission:field.ip_address.title")#</dt>
2225
<dd>#renderField( 'formbuilder_formsubmission', 'ip_address', prc.submission.ip_address )#</dd>
2326

0 commit comments

Comments
 (0)