Skip to content

Commit

Permalink
Merge branch 'feature-PRESIDECMS-2845_add-query-string-for-link-picke…
Browse files Browse the repository at this point in the history
…r-sitetree-link' into release-10.27.0
  • Loading branch information
pixl8-brayden committed May 13, 2024
2 parents 0b59ebe + ece66ff commit deb109b
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 2 deletions.
3 changes: 3 additions & 0 deletions system/forms/preside-objects/link/admin.add.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ This form is used to a add a link through general "manage links" screens
<!-- we will show/hide these fieldsets depending on the selected link type -->
<fieldset id="sitetreelink" sortorder="20" class="link-type-group">
<field sortorder="10" binding="link.page" />
<field sortorder="15" binding="link.query_string" control="textinput">
<rule validator="queryString" />
</field>
<field sortorder="20" binding="link.page_anchor" />
</fieldset>

Expand Down
3 changes: 3 additions & 0 deletions system/forms/preside-objects/link/admin.edit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ This form is used edit a link
<!-- we will show/hide these fieldsets depending on the selected link type -->
<fieldset id="sitetreelink" sortorder="20" class="link-type-group">
<field sortorder="10" binding="link.page" />
<field sortorder="15" binding="link.query_string" control="textinput">
<rule validator="queryString" />
</field>
<field sortorder="20" binding="link.page_anchor" />
</fieldset>

Expand Down
3 changes: 3 additions & 0 deletions system/forms/preside-objects/link/admin.quickadd.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ This form is used for the quick add link modal
<!-- we will show/hide these fieldsets depending on the selected link type -->
<fieldset id="sitetree" sortorder="20">
<field sortorder="10" binding="link.page" />
<field sortorder="15" binding="link.query_string" control="textinput">
<rule validator="queryString" />
</field>
<field sortorder="20" binding="link.page_anchor" />
</fieldset>

Expand Down
3 changes: 3 additions & 0 deletions system/forms/preside-objects/link/admin.quickedit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ This form is used for editing links through the link picker form control
<!-- we will show/hide these fieldsets depending on the selected link type -->
<fieldset id="sitetree" sortorder="20">
<field sortorder="10" binding="link.page" />
<field sortorder="15" binding="link.query_string" control="textinput">
<rule validator="queryString" />
</field>
<field sortorder="20" binding="link.page_anchor" />
</fieldset>

Expand Down
1 change: 1 addition & 0 deletions system/i18n/cms.properties
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,7 @@ validation.allowedSenderEmail.default=The email address you have entered does no
validation.allowedSenderEmail.existing.emails=One or more email templates use a FROM email that does not match any of the entered domains. Please ensure all email templates are using a valid FROM email address before changing this setting. Addresses not matching: <strong>{1}</strong>.
validation.allowedSenderEmail.existing.formbuilder=One or more FormBuilder POST actions use a FROM email that does not match any of the entered domains. Please ensure all POST actions are using a valid FROM email address before changing this setting. Addresses not matching: <strong>{1}</strong>.
validation.url.default=Please enter a valid URL.
validation.queryString.default=Pleae enter a valid query string.
datatables.sortAscending=: activate to sort column ascending
datatables.sortDescending=: activate to sort column descending
Expand Down
3 changes: 3 additions & 0 deletions system/i18n/preside-objects/link.properties
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ field.page.title=Page
field.page_anchor.title=Page anchor
field.page_anchor.placeholder=e.g. tab2 (do not include the #)
field.page_anchor.help=This is used to jump to a certain position on the page, defined by an id element or named anchor
field.query_string.title=Query string
field.query_string.placeholder=e.g. foo1=bar1&foo2=bar2 (do not include the ?)
field.query_string.help=This is used to append any additional query string on the page. (Do not include the ?)
field.asset.title=Asset
field.text.title=Link text
field.text.help=The text that appears in place of the link. Leave this blank to have it set automatically based on the type of link.
Expand Down
1 change: 1 addition & 0 deletions system/preside-objects/core/link.cfc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ component extends="preside.system.base.SystemPresideObject" displayname="Link" {
property name="type" type="string" dbtype="varchar" maxlength="20" required=false default="external" enum="linkType";
property name="title" type="string" dbtype="varchar" maxlength="200" required=false;
property name="page_anchor" type="string" dbtype="varchar" maxlength="30" required=false;
property name="query_string" type="string" dbtype="varchar" maxlength="500" required=false;
property name="target" type="string" dbtype="varchar" maxlength="20" required=false enum="linkTarget";
property name="nofollow" type="boolean" dbtype="boolean" required=false default=false;
property name="referrer_policy" type="string" dbtype="varchar" enum="linkReferrerPolicy" required=false default="";
Expand Down
6 changes: 4 additions & 2 deletions system/services/links/LinksService.cfc
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,10 @@ component {
}

private string function _buildSitetreelinkHref( required query link ) {
var anchor = len( link.page_anchor ?: "" ) ? "##" & link.page_anchor : "";
return _getRequestContext().buildLink( page=link.page ) & anchor;
var qs = Len( Trim( link.query_string ?: "" ) ) ? "?#link.query_string#" : "";
var anchor = Len( link.page_anchor ?: "" ) ? "##" & link.page_anchor : "";

return _getRequestContext().buildLink( page=link.page ) & qs & anchor;
}

private string function _buildAssetlinkHref( required query link ) {
Expand Down
7 changes: 7 additions & 0 deletions system/services/validation/CoreValidators.cfc
Original file line number Diff line number Diff line change
Expand Up @@ -362,4 +362,11 @@ component validationProvider=true {
public string function url_js() validatorMessage="validationExtras:validation.simpleUrl.default" {
return "function( value, el, params ){ return !value.length || value.match( /^https?:\/\/([-_A-Z0-9]+\.)+[-_A-Z0-9]+(\/.*)?$/i ) !== null }";
}

public boolean function queryString( required string fieldName, any value="" ) validatorMessage="cms:validation.queryString.default" {
return IsEmpty( arguments.value ) || ReFindNoCase( "^([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*)?$", arguments.value );
}
public string function queryString_js() validatorMessage="validationExtras:validation.simpleUrl.default" {
return "function( value, el, params ){ return !value.length || value.match( /^([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*)?$/i ) !== null }";
}
}

0 comments on commit deb109b

Please sign in to comment.