Monday, August 20, 2018

AEM 62 Touch UI Create Page Wizard Select Target Path

AEM 62 Touch UI Create Page Wizard Select Target Path


Goal


Extend Touch UI Create Page Wizard to select target path

Demo | Package Install | GitHub




Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de), create folder /apps/eaem-touch-ui-create-page-select-loc

2) Create node /apps/eaem-touch-ui-create-page-select-loc/clientlib of type cq:ClientLibraryFolder, add String property categories with value granite.ui.coral.foundation, String property dependencies with value lodash

3) For the path browser html, create sling:Folder /apps/eaem-touch-ui-create-page-select-loc/content and  nt:unstructured /apps/eaem-touch-ui-create-page-select-loc/content/path with the following xml

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root
jcr_primaryType="nt:unstructured"
sling_resourceType="granite/ui/components/coral/foundation/form/pathbrowser"
fieldLabel="Path"
name="eaemPath"
rootPath="/content"/>

4) Create file (nt:file) /apps/eaem-touch-ui-create-page-select-loc/clientlib/js.txt, add

                       select-loc.js

5) Create file (nt:file) /apps/eaem-touch-ui-create-page-select-loc/clientlib/select-loc.js, add the following code

(function ($, $document) {
var CREATE_PAGE_WIZARD_URL = "/mnt/overlay/wcm/core/content/sites/createpagewizard.html",
PATH_BROWSER = "/apps/eaem-touch-ui-create-page-select-loc/content/path.html",
PATH_BROWSE_NAME = "[name=eaemPath]",
FORM_CREATE_PAGE = "form.cq-siteadmin-admin-createpage",
FOUNDATION_CONTENTLOADED = "foundation-contentloaded",
PARENT_PATH = "parentPath",
TAGS_FIELD = "[data-fieldname=./cq:tags]";

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

$document.on(FOUNDATION_CONTENTLOADED, addPathBrowser);

function addPathBrowser(){
if(!_.isEmpty($(PATH_BROWSE_NAME))){
return;
}

$.ajax(PATH_BROWSER).done(handler);

function handler(html){
var $tagsField = $(TAGS_FIELD).closest(".foundation-field-editable");

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

var $pathBrowser = $(html).insertAfter($tagsField),
currentPath = $("[name=" + PARENT_PATH + "]").val();

$pathBrowser.find(input).val(currentPath);

$document.trigger(FOUNDATION_CONTENTLOADED);

$(FORM_CREATE_PAGE).submit(function() {
$("[name=" + PARENT_PATH + "]").val($pathBrowser.find(input).val());
});
}
}
}(jQuery, jQuery(document)));



visit link download