Skip to main content
JonMaguire
Level 3
August 26, 2024
Solved

Alert message if page name exists

On page creation, page move, etc., can an alert somehow be added to warn the author the page name already exists instead of AEM creating a page variation with a number at the end?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Dipti_Chauhan
Dipti_ChauhanAccepted solution
Community Advisor
August 27, 2024

Hi @jonmaguire 

 For PageName property, you can add new custom validator. Normally for this you have "foundation.jcr.name" and regex already attached but you want to put custom validator , you can do it.

 

example- This is validator for page name regex and your "validation" property looks like " foundation.jcr.name,pagename-regex"

(function(window, $, Granite) { "use strict"; var NON_VALID_CHARS = "^([a-z0-9-_])*$"; $(window).adaptTo("foundation-registry").register("foundation.validation.validator", { selector: "[data-validation~='pagename-regex']", validate (el) { var pattern = new RegExp(NON_VALID_CHARS); var value = el.value; for (var i = 0, ln = value.length; i < ln; i++) { if (!pattern.test(value[i]) ) { return Granite .I18n.get("Invalid character '{0}'. It must be a valid JCR name (only lowercase letters, numbers, dashes and underscores are allowed).", [ value[i] ]); } } } }); var pageNamePattern = /^[a-z0-9_-]+$/; $(window).adaptTo("foundation-registry").register("foundation.validation.validator", { selector: '[data-foundation-validation~="admin.pagename"]', validate (el) { var valid = pageNamePattern.test(el.value) || el.value === ""; if (!valid) { return Granite.I18n.get("This field must only contain lowercase letters, numbers, dashes and underscores."); } } }); })(window, Granite.$, Granite);

  

2 replies

RiteshY18
Community Advisor
Community Advisor
August 26, 2024

consider using workflow to get triggered on page event to validate page name on current or destination content tree 

Translate
Dipti_Chauhan
Community Advisor
Dipti_ChauhanCommunity AdvisorAccepted solution
Community Advisor
August 27, 2024

Hi @jonmaguire 

 For PageName property, you can add new custom validator. Normally for this you have "foundation.jcr.name" and regex already attached but you want to put custom validator , you can do it.

 

example- This is validator for page name regex and your "validation" property looks like " foundation.jcr.name,pagename-regex"

(function(window, $, Granite) { "use strict"; var NON_VALID_CHARS = "^([a-z0-9-_])*$"; $(window).adaptTo("foundation-registry").register("foundation.validation.validator", { selector: "[data-validation~='pagename-regex']", validate (el) { var pattern = new RegExp(NON_VALID_CHARS); var value = el.value; for (var i = 0, ln = value.length; i < ln; i++) { if (!pattern.test(value[i]) ) { return Granite .I18n.get("Invalid character '{0}'. It must be a valid JCR name (only lowercase letters, numbers, dashes and underscores are allowed).", [ value[i] ]); } } } }); var pageNamePattern = /^[a-z0-9_-]+$/; $(window).adaptTo("foundation-registry").register("foundation.validation.validator", { selector: '[data-foundation-validation~="admin.pagename"]', validate (el) { var valid = pageNamePattern.test(el.value) || el.value === ""; if (!valid) { return Granite.I18n.get("This field must only contain lowercase letters, numbers, dashes and underscores."); } } }); })(window, Granite.$, Granite);

  

Translate