Tuesday, August 28, 2018

AEM 62 Touch UI extend Path Browser picker window to show file name nodename NOT dc title or jcr title

AEM 62 Touch UI extend Path Browser picker window to show file name nodename NOT dc title or jcr title


Goal


Touch UI Path Browser widget (/libs/granite/ui/components/foundation/form/pathbrowser) shows dc:title metadata for files and jcr:title for folders, in the picker; this post is on extending the widget to always show node name in picker

Dialog of foundation image component - /libs/foundation/components/image/cq:dialog/content/items/column/items/linkURL was modified for demo purposes only

For Classic UI check this post

Demo | Package Install


Product - Path Browser Auto Complete



Product - Path Browser Picker

  


Extension - Path Browser Picker




Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/eaem-touchui-pathbrowser-picker-show-filename

2) Create node /apps/eaem-touchui-pathbrowser-picker-show-filename/clientlib of type cq:ClientLibraryFolder and add a String property categories with value cq.authoring.dialog and dependencies to underscore

3) Create file (nt:file) /apps/eaem-touchui-pathbrowser-picker-show-filename/clientlib/js.txt and add

                       show-file-name.js

4) Create file (nt:file) /apps/eaem-touchui-pathbrowser-picker-show-filename/clientlib/show-file-name.js and add the following code

(function ($, $document, gAuthor) {
var LINK_URL = "./linkURL",
COMPONENT = "foundation/components/image";

if(!gAuthor){
return;
}

$document.on(dialog-ready, handlePathBrowser);

function handlePathBrowser(){
var $linkUrl = $("[name=" + LINK_URL + "]"),
editable = gAuthor.DialogFrame.currentDialog.editable;

//if not an image component dialog, return
if((editable.type !== COMPONENT) || _.isEmpty($linkUrl)){
return;
}

var cuiPathBrowser = $linkUrl.closest(".coral-PathBrowser").data("pathBrowser");

if(!cuiPathBrowser){
return;
}

//handle picker columns
extendPicker(cuiPathBrowser);
}

//extend picker to disable columns
function extendPicker(cuiPathBrowser){
var cuiPicker = cuiPathBrowser.$picker.data("picker");

cuiPathBrowser.$button.on("click", function() {
setTimeout(function(){
if(!cuiPicker.columnView){
console.log("EAEM - could not initialize column view");
return;
}

extendColumnView(cuiPicker.columnView);
}, 200);
});
}

function extendColumnView(columnView){
function handler(event){
var $element = event && event.currentTarget ? $(event.currentTarget) : columnView.$element,
$items = $element.find(".coral-ColumnView-item"),
$item, dataValue;

$items.each(function(index, item){
$item = $(item);

dataValue = $item.data("value");

if(_.isEmpty(dataValue)){
return;
}

$item.find(".coral-ColumnView-label").html(getStringAfterLastSlash(dataValue));
});
}

handler();

columnView.$element.on(coral-columnview-load, handler);

columnView.$element.on(coral-columnview-item-select, function(){
// event coral-columnview-item-select is triggered before selected column load
// hope the data gets loaded in 1000 msecs
setTimeout(handler, 1000);
});
}

function getStringAfterLastSlash(str){
if(!str || (str.indexOf("/") == -1)){
return "";
}

return str.substr(str.lastIndexOf("/") + 1);
}
}(jQuery, jQuery(document), Granite.author));



visit link download