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