From 95957a470ce5ca468c8930658e6c49362434fabe Mon Sep 17 00:00:00 2001 From: David Webster Date: Thu, 20 Aug 2015 14:22:56 +0000 Subject: [PATCH] RM-2501: New RM API, mirroring existing slingshot search API but adds in full node details to results. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@110562 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rmsearch/faceted/rmsearch.get.desc.xml | 9 ++ .../rmsearch/faceted/rmsearch.get.js | 25 ++++++ .../rmsearch/faceted/rmsearch.get.json.ftl | 88 +++++++++++++++++++ .../rmsearch/faceted/rmsearch.lib.js | 13 +++ 4 files changed, 135 insertions(+) create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.desc.xml create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.js create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.json.ftl create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.lib.js diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.desc.xml new file mode 100644 index 0000000000..7cec801193 --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.desc.xml @@ -0,0 +1,9 @@ + + RM Faceted Search + RM Faceted Search Component Data Webscript + /slingshot/rmsearch/faceted/rmsearch?term={term?}&tag={tag?}&site={site?}&container={container?}&sort={sort?}&query={query?}&repo={repo?} + argument + user + required + internal + \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.js b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.js new file mode 100644 index 0000000000..22bccf03de --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.js @@ -0,0 +1,25 @@ + + +function main() { + var params = + { + siteId: args.site, + containerId: args.container, + repo: (args.repo !== null) ? (args.repo == "true") : false, + term: args.term, + tag: args.tag, + query: args.query, + rootNode: args.rootNode, + sort: args.sort, + maxResults: (args.maxResults !== null) ? parseInt(args.maxResults, 10) : DEFAULT_MAX_RESULTS, + pageSize: (args.pageSize !== null) ? parseInt(args.pageSize, 10) : DEFAULT_PAGE_SIZE, + startIndex: (args.startIndex !== null) ? parseInt(args.startIndex, 10) : 0, + facetFields: args.facetFields, + filters: args.filters, + spell: (args.spellcheck !== null) ? (args.spellcheck == "true") : false + }; + + model.data = getSearchResults(params); +}; + +main(); \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.json.ftl new file mode 100644 index 0000000000..585f66d0c7 --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.get.json.ftl @@ -0,0 +1,88 @@ +<#--Copied from Share's search.get.json.ftl with RM specific additions noted below:--> +<#escape x as jsonUtils.encodeJSONString(x)> +{ +"totalRecords": ${data.paging.totalRecords?c}, +"totalRecordsUpper": ${data.paging.totalRecordsUpper?c}, +"startIndex": ${data.paging.startIndex?c}, +"numberFound": ${(data.paging.numberFound!-1)?c}, +"facets": +{ + <#if data.facets??><#list data.facets?keys as field> + "${field}": + [ + <#assign facets=data.facets[field]><#list facets as f> + { + "label": "${f.facetLabel}", + "value": "${f.facetValue}", + "hits": ${f.hits?c}, + "index": ${f.facetLabelIndex?c} + }<#if f_has_next>, + + ]<#if field_has_next>, + +}, +"items": +[ + <#list data.items as item> + { + "nodeRef": "${item.nodeRef}", + "type": "${item.type}", + "name": "${item.name!''}", + "displayName": "${item.displayName!''}", + <#if item.title??> + "title": "${item.title}", + + "description": "${item.description!''}", + "modifiedOn": "${xmldate(item.modifiedOn)}", + "modifiedByUser": "${item.modifiedByUser}", + "modifiedBy": "${item.modifiedBy}", + "fromDate": "${xmldate(item.fromDate)}", + "size": ${item.size?c}, + "mimetype": "${item.mimetype!''}", + <#if item.site??> + "site": + { + "shortName": "${item.site.shortName}", + "title": "${item.site.title}" + }, + "container": "${item.container}", + + <#if item.path??> + "path": "${item.path}", + + "lastThumbnailModification": + [ + <#if item.lastThumbnailModification??> + <#list item.lastThumbnailModification as lastThumbnailMod> + "${lastThumbnailMod}" + <#if lastThumbnailMod_has_next>, + + + ], + "tags": [<#list item.tags as tag>"${tag}"<#if tag_has_next>,], + <#--Add in full node details--> + "node": <#noescape>${item.nodeJSON} + + }<#if item_has_next>, + +], +"spellcheck": +{ + <#if data.spellcheck?? && data.spellcheck.spellCheckExist> + "searchRequest": "${data.spellcheck.originalSearchTerm}", + <#if data.spellcheck.searchedFor> + <#list data.spellcheck.results as collationQueryStr> + "searchedFor": "${collationQueryStr?string}" + <#break> + + <#else> + "searchSuggestions": [ + <#list data.spellcheck.results as suggestion> + "${suggestion?string}"<#if suggestion_has_next>, + + ] + + +} +} + \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.lib.js b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.lib.js new file mode 100644 index 0000000000..4f6d855942 --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/rmsearch/faceted/rmsearch.lib.js @@ -0,0 +1,13 @@ +// RM Search Lib. + +// Wrap the original document item method with our own one that appends RM specific properties. +// Additional properties will also need rendering in rmsearch.get.json.ftl. +var getOriginalDocumentItem = getDocumentItem; +getDocumentItem = function(siteId, containerId, pathParts, node, populate){ + // Get original Document item. + var item = getOriginalDocumentItem(siteId, containerId, pathParts, node, populate); + + item.nodeJSON = appUtils.toJSON(node, true); + + return item; +}; \ No newline at end of file