Alert message if page name exists | Community
Skip to main content
JonMaguire
Level 3
August 26, 2024
Solved

Alert message if page name exists

  • August 26, 2024
  • 2 replies
  • 637 views

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.
Best answer by Dipti_Chauhan

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 

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);