Goal
Restrict results to assets from certain folder by default when user opens the Search Inner Rail in Touch UI. Projects assets are generally placed in certain root folder (eg. /content/dam/MyProject) and it'd be nice if the search rail by default returns assets from this folder and not entire DAM
Demo | Package Install
Solution
1) Create a Search Facet with Path Predicate
a. Open Search Facets console (http://localhost:4502/libs/dam/gui/content/customsearch/searchfacetformlister.html/dam/gui/content/facets) and Edit Assets search facets
d. The predicate shows up in search inner rail
2) The next step is to code a small extension to select path predicate by default when user opens search rail, so that we save author additional 2 clicks each time, for getting the assets results from configured path
a) Login to CRXDE Lite (http://localhost:4502/crx/de) and create folder /apps/touchui-select-path-predicates
b) Create node /apps/touchui-select-path-predicates/clientlib of type cq:ClientLibraryFolder and add a String property categories with value dam.admin.search.predicates
c) Create file (nt:file) /apps/touchui-select-path-predicates/clientlib/js.txt and add
select.js
d) Create file (nt:file) /apps/touchui-select-path-predicates/clientlib/select.js and add the following code.
(function(document, $) { $(document).ready(function(){ var $path = $("[data-type='path']"); if($path.length == 0){ return; } //defined in /libs/dam/gui/content/assets/jcr:content/body/content/aside/items/search var ASSET_RAIL_SEARCH = "#aem-assets-rail-search"; var $button = $path.find("[role='button']"); var $checkbox = $path.find("input[type='checkbox']"); var doSearch = function(){ $button.click(); $checkbox.click(); }; if($.cookie("endor.innerrail.current") == ASSET_RAIL_SEARCH){ doSearch(); } $(document).on('click', '.js-endor-innerrail-toggle', function(e) { doSearch(); }); }); })(document, Granite.$);
No comments:
Post a Comment