diff --git a/rm-community/rm-community-repo/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/live-search.lib.js b/rm-community/rm-community-repo/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/live-search.lib.js
new file mode 100644
index 0000000000..930890813a
--- /dev/null
+++ b/rm-community/rm-community-repo/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/live-search.lib.js
@@ -0,0 +1,316 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2017 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+
+/**
+ * NOTE: This file is a copy of the ~/slingshot/search/live-search.lib.js from core repository code and replaces that
+ * file when built with RM, in order to exclude some RM specific files from live search results. Ideally, any changes
+ * to the core file should be replicated here.
+ */
+
+/**
+ * Live Search Component
+ *
+ * Takes the following object as Input:
+ * params
+ * {
+ * type: search mode type - one of "documents|sites|people"
+ * term: search terms
+ * maxResults: maximum results to return
+ * };
+ *
+ * Outputs:
+ * items - Array of objects containing the search results
+ */
+
+const DEFAULT_MAX_RESULTS = 5;
+const SITES_SPACE_QNAME_PATH = "/app:company_home/st:sites/";
+const SURF_CONFIG_QNAMEPATH = "/cm:surf-config/";
+
+/**
+ * Returns site information data structure.
+ * { shortName: siteId, title: title }
+ *
+ * Caches the data to avoid repeatedly querying the repository.
+ */
+var siteDataCache = {};
+
+function getSiteData(siteId) {
+ if (typeof siteDataCache[siteId] === "object")
+ {
+ return siteDataCache[siteId];
+ }
+ var site = siteService.getSite(siteId);
+ var data =
+ {
+ shortName : siteId,
+ title : (site !== null ? site.title : "unknown")
+ };
+ siteDataCache[siteId] = data;
+ return data;
+}
+
+/**
+ * Return the fts-alfresco query template to use.
+ * The default searches name, title, descripton, calendar, link, full text and tag fields.
+ * It is configurable via the .config.xml attached to this webscript.
+ */
+function getQueryTemplate() {
+ var t =
+ [{
+ field: "keywords",
+ template: "%(cm:name cm:title cm:description TEXT TAG)"
+ }],
+ qt = new XML(config.script)["default-query-template"];
+ if (qt != null && qt.length() != 0)
+ {
+ t[0].template = qt.toString();
+ }
+ return t;
+}
+
+/**
+ * Process and return a document item node
+ */
+function getDocumentItem(container, node) {
+ // check whether this is a valid folder or a file
+ var item = null;
+ if (node.qnamePath.indexOf(SURF_CONFIG_QNAMEPATH) === -1)
+ {
+ if (node.isDocument)
+ {
+ item =
+ {
+ nodeRef: node.nodeRef.toString(),
+ name: node.name,
+ title: node.properties["cm:title"],
+ description: node.properties["cm:description"],
+ modifiedOn: node.properties["cm:modified"],
+ modifiedBy: node.properties["cm:modifier"],
+ createdOn: node.properties["cm:created"],
+ createdBy: node.properties["cm:creator"],
+ mimetype: node.mimetype,
+ size: node.size
+ };
+ if (container.siteId !== null)
+ {
+ item.site = getSiteData(container.siteId);
+ item.container = container.containerId;
+ }
+ if (node.hasAspect("{http://www.alfresco.org/model/content/1.0}thumbnailModification"))
+ {
+ var dates = node.properties["lastThumbnailModification"];
+ for (var i=0; i= 1)
+ {
+ var siteQName = Packages.org.alfresco.util.ISO9075.decode(tmp.split("/")[0]);
+ siteId = siteQName.substring(siteQName.indexOf(":") + 1);
+ tmp = tmp.substring(pos + 1);
+ pos = tmp.indexOf('/');
+ if (pos >= 1)
+ {
+ // strip container id from the path
+ var containerId = tmp.substring(0, pos);
+ containerId = containerId.substring(containerId.indexOf(":") + 1);
+
+ container.siteId = siteId;
+ container.containerId = containerId;
+ }
+ }
+ }
+
+ return container;
+}
+
+/**
+ * Dispatch a live search to the appropriate search method for the requested result type.
+ */
+function liveSearch(params) {
+ switch (params.type)
+ {
+ case "documents":
+ return getDocResults(params);
+ break;
+ case "sites":
+ return getSiteResults(params);
+ break;
+ case "people":
+ return getPeopleResults(params);
+ break;
+ }
+}
+
+/**
+ * Return Document Search results with the given search terms.
+ *
+ * "AND" is the default operator unless configured otherwise, OR, AND and NOT are also supported -
+ * as is any other valid fts-alfresco elements such as "quoted terms" and (bracket terms) and also
+ * propname:propvalue syntax.
+ *
+ * @param params Object containing search parameters - see API description above
+ */
+function getDocResults(params) {
+ // ensure a TYPE is specified
+ var ftsQuery = params.term + ' AND +TYPE:"cm:content"';
+
+ // site constraint
+ if (params.siteId !== null)
+ {
+ // use SITE syntax to restrict to specific site
+ ftsQuery += ' AND SITE:"' + params.siteId + '"';
+ }
+
+ // root node - generally used for overridden Repository root in Share
+ if (params.rootNode !== null)
+ {
+ ftsQuery = 'PATH:"' + rootNode.qnamePath + '//*" AND (' + ftsQuery + ')';
+ }
+
+ // main query construction
+ ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating" AND -TYPE:"fm:post" AND -ASPECT:"sys:hidden" AND -ASPECT:"rma:savedSearch" AND -cm:creator:system';
+
+ if (logger.isLoggingEnabled())
+ logger.log("LiveQuery:\r\n" + ftsQuery);
+
+ // get default fts operator from the config
+ //
+ // TODO: common search lib - for both live and standard e.g. to get values like this...
+ //
+ var operator = "AND";
+ var cf = new XML(config.script)["default-operator"];
+ if (cf != null && cf.length != 0)
+ {
+ operator = cf.toString();
+ }
+
+ // perform fts-alfresco language query
+ var queryDef = {
+ query: ftsQuery,
+ language: "fts-alfresco",
+ templates: getQueryTemplate(),
+ defaultField: "keywords",
+ defaultOperator: operator,
+ onerror: "no-results",
+ page: {
+ maxItems: params.maxResults,
+ skipCount: params.startIndex
+ }
+ };
+ var rs = search.queryResultSet(queryDef);
+ nodes = rs.nodes,
+ results = [];
+
+ if (logger.isLoggingEnabled())
+ logger.log("Processing resultset of length: " + nodes.length);
+
+ for (var i=0, item; ialfresco-rm-community-repo
true
${project.build.directory}/solr/home
+
+ 5.1.1
1.4
@@ -362,7 +364,7 @@
${alfresco.groupId}
alfresco-repository
- ${alfresco.version}
+ ${alfresco.h2scripts.version}
h2scripts
@@ -613,7 +615,7 @@
${alfresco.groupId}
alfresco-repository
- ${alfresco.version}
+ ${alfresco.h2scripts.version}
h2scripts