Saturday, August 25, 2018

AEM 62 Touch UI Create Page Wizard Set Tags Widget Required

AEM 62 Touch UI Create Page Wizard Set Tags Widget Required


Goal


Make the Tags field required in Touch UI Create Page wizard

Demo | Package Install | Github




Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de), create folder /apps/eaem-touchui-create-page-tag-required

2) Create node /apps/eaem-touchui-create-page-tag-required/clientlib of type cq:ClientLibraryFolder, add String property categories with value cq.gui.common.tagspicker, String property dependencies with value underscore

3) Create file (nt:file) /apps/eaem-touchui-create-page-tag-required/clientlib/js.txt, add

                       tag-required.js

4) Create file (nt:file) /apps/eaem-touchui-create-page-tag-required/clientlib/tag-required.js, add the following code

(function ($, $document) {
var CREATE_PAGE_WIZARD_URL = "/mnt/overlay/wcm/core/content/sites/createpagewizard.html",
TAGS_FIELD = "./cq:tags";

if(window.location.pathname.indexOf(CREATE_PAGE_WIZARD_URL) !== 0){
return;
}

$document.on("foundation-contentloaded", function(){
var $tagsPicker = $("[data-property-path=" + TAGS_FIELD + "]");

if(_.isEmpty($tagsPicker)){
return;
}

var $tagsTextField = $tagsPicker.find("input:text"),
cuiPathBrowser = $tagsPicker.data("pathBrowser");

cuiPathBrowser.$picker.on("coral-pathbrowser-picker-confirm.tagspicker", triggerChange);

cuiPathBrowser.dropdownList.on("selected.tagspicker", triggerChange);

$document.on("click", ".coral-TagList-tag-removeButton", triggerChange);

function triggerChange(){
setTimeout(function(){
$tagsTextField.trigger("change");
}, 250);
}
});

$.validator.register({
selector: ".js-cq-TagsPickerField input:text",

validate: function ($textField) {
var $tagsPicker = $textField.closest(".js-cq-TagsPickerField"),
$tagList = $tagsPicker.parent().find(".coral-TagList");

$tagsPicker.prev("label").html("Tags *");

if ($tagList.find(".coral-TagList-tag").length <= 0) {
return "Please fill out this field";
}
}
});
}(jQuery, jQuery(document)));



visit link download