diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.desc.xml
index 8c3a9b2c5e..c96b753745 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.desc.xml
@@ -2,6 +2,7 @@
PickerList
Service to return metadata of child items in a parent space to display in the object finder
/api/forms/picker/{type}/{store_type}/{store_id}/{id}/children
+ /api/forms/picker/{type}/children
user
required
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.js
index 1191acc800..885eb1ffe1 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/pickerchildren.get.js
@@ -6,6 +6,7 @@ function main()
argsSelectableType = args['selectableType'],
argsSearchTerm = args['searchTerm'],
argsMaxResults = args['size'],
+ argsXPath = args['xpath'],
parent = null,
rootNode = companyhome,
results = [],
@@ -23,10 +24,19 @@ function main()
try
{
+ var nodeRef = url.templateArgs.store_type + "://" + url.templateArgs.store_id + "/" + url.templateArgs.id;
+ if (argsXPath != null)
+ {
+ var nodes = search.xpathSearch(argsXPath);
+ if (nodes.length > 0)
+ {
+ nodeRef = String(nodes[0].nodeRef);
+ }
+ }
+
if (url.templateArgs.type == "node")
{
// nodeRef input
- var nodeRef = url.templateArgs.store_type + "://" + url.templateArgs.store_id + "/" + url.templateArgs.id;
if (nodeRef == "alfresco://company/home")
{
parent = companyhome;
@@ -52,8 +62,9 @@ function main()
var query = "+PARENT:\"" + parent.nodeRef + "\"";
if (argsFilterType != null)
{
- //map short name to long name
- var types = {
+ // map short name to long name
+ var types =
+ {
'rma:dispositionSchedule': '{http://www.alfresco.org/model/recordsmanagement/1.0}dispositionSchedule',
'rma:dispositionActionDefinition': '{http://www.alfresco.org/model/recordsmanagement/1.0}dispositionActionDefinition',
'rma:dispositionAction': '{http://www.alfresco.org/model/recordsmanagement/1.0}dispositionAction',
@@ -61,7 +72,7 @@ function main()
'rma:transfer':'{http://www.alfresco.org/model/recordsmanagement/1.0}transfer',
'cm:thumbnail': '{http://www.alfresco.org/model/content/1.0}thumbnail'
};
-
+
var filterTypes = argsFilterType.split(',');
for (var i=0,len=filterTypes.length; i 1) ? jsonValueTypes[1] : "";
+ }
+
for (count = 0; count < numItems; count++)
- {
- item = jsonItems.get(count);
- if (item != "")
+ {
+ item = jsonItems.get(count);
+ if (item != "")
{
- result = search.findNode(item);
+ result = null;
+ if (itemValueType == "nodeRef")
+ {
+ result = search.findNode(item);
+ }
+ else if (itemValueType == "xpath")
+ {
+ result = search.xpathSearch(itemValueTypeHint.replace("%VALUE%", search.ISO9075Encode(item)))[0];
+ }
+
if (result != null)
- {
+ {
// create a separate object if the node represents a user or group
if (result.isSubType("cm:person"))
{
@@ -40,11 +58,11 @@ function main()
result = createNodeResult(result);
}
- results.push(
- {
- item: result
+ results.push(
+ {
+ item: result
});
- }
+ }
}
}