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