Quantcast
Channel: Experiencing Adobe Experience Manager (AEM, CQ)
Viewing all articles
Browse latest Browse all 525

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

$
0
0

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

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


Viewing all articles
Browse latest Browse all 525

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>