Goal
Load the layer specified in eaemMode URL Parameter
http://localhost:4502/editor.html/content/geometrixx/en.html?eaemMode=Preview
http://localhost:4502/editor.html/content/geometrixx/en.html?eaemMode=Edit
http://localhost:4502/editor.html/content/geometrixx/en.html?eaemMode=Developer
etc...
Demo | Package Install | Github
Solution
1) Login to CRXDE Lite (http://localhost:4502/crx/de), create folder /apps/eaem-touchui-mode-url-parameter
2) Create node /apps/eaem-touchui-mode-url-parameter/clientlib of type cq:ClientLibraryFolder, add String property categories with value cq.authoring.dialog, String property dependencies with value underscore
3) Create file (nt:file) /apps/eaem-touchui-mode-url-parameter/clientlib/js.txt, add
mode-parameter.js
4) Create file (nt:file) /apps/eaem-touchui-mode-url-parameter/clientlib/mode-parameter.js, add the following code
(function ($, $document) { var EAEM_MODE = "eaemMode", pageLoaded = false; $document.on("cq-page-info-loaded", loadDesiredLayer); function loadDesiredLayer(){ if(pageLoaded){ return; } pageLoaded = true; var layerManager = Granite.author.layerManager, queryParams = queryParameters(), eaemMode = queryParams[EAEM_MODE], currentLayerName = layerManager.getCurrentLayerName(); if(_.isEmpty(eaemMode) || _.isEmpty(currentLayerName) || (currentLayerName.toLowerCase() === eaemMode.toLowerCase())) { return; } layerManager.activateLayer(eaemMode); } function queryParameters() { var result = {}, param, params = document.location.search.split(/\?|\&/); params.forEach( function(it) { if (_.isEmpty(it)) { return; } param = it.split("="); result[param[0]] = param[1]; }); return result; } }(jQuery, jQuery(document)));
https://experience-aem.blogspot.in/2016/08/aem-62-touch-ui-nested-composite-multifield-store-data-as-child-nodes.html?showComment=1471626741233#c5252424193345448514
ReplyDelete