Monday, August 6, 2018

AEM 61 SP1 TouchUI set User Default Search Keyword in Asset Finder

AEM 61 SP1 TouchUI set User Default Search Keyword in Asset Finder


Goal


Set the users search keyword and results in Asset Finder when loading TouchUI authoring editor - http://localhost:4502/editor.html

Demo | Package Install


Keyword in User Profile

          Set the property searchKeyword in users profile manually or by extending user editor - check this post



TouchUI Editor with Keyword and Results


Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/touchui-asset-finder-set-search-text

2) Create node /apps/touchui-asset-finder-set-search-text/clientlib of type cq:ClientLibraryFolder and add a String property categories with value cq.authoring.editor.hook.assetfinder

3) Create file (nt:file) /apps/touchui-asset-finder-set-search-text/clientlib/js.txt and add

                       set-search-text.js

4) Create file (nt:file) /apps/touchui-asset-finder-set-search-text/clientlib/set-search-text.js and add the following code

(function ($, $document) {
"use strict";

//id "assetfinder-filter" and "assetsearch" are defined in
///libs/wcm/core/content/editor/jcr:content/sidepanels/edit/items/assetsTab/items/filterPanel/items/views/items/search/items/searchpanel
var ASSET_FINDER_FILTER = "#assetfinder-filter",
KEYWORD_SELECTOR = "#assetsearch",
ASSET_FINDER_CONTAINER = ".assetfinder-content-container",
PROFILE_SEARCH_KEYWORD = "searchKeyword";

$document.on(cq-layer-activated, getDefaultKeyword);

function getDefaultKeyword(ev){
if ( ev.layer !== Edit ) {
return;
}

//Granite.author.ContentFrame.contentWindow.CQ.shared.User.getUserPropsUrl()
$.ajax("/libs/cq/security/userinfo.json").done(function(data){
$.ajax(data.home + ".1.json").done(searchWithKeyword);
});
}

function searchWithKeyword(data){
if(!data || !data.profile || !data.profile[PROFILE_SEARCH_KEYWORD]){
return;
}

var $assetFinderFilter = $(ASSET_FINDER_FILTER),
$assetFinderContainer = $(ASSET_FINDER_CONTAINER),
$assetFinderKeyword = $assetFinderFilter.find(KEYWORD_SELECTOR);

$assetFinderKeyword.val(data.profile[PROFILE_SEARCH_KEYWORD]);

$assetFinderContainer.trigger({
type: "loadAssets",
append: false
})
}
})(jQuery, jQuery(document));





visit link download