mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Share Repository Browser support for xpath starting location. See comments in "RepositoryLibrary" section of share-config-custom.xml.sample.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@24021 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
function tagQuery()
|
function tagQuery()
|
||||||
{
|
{
|
||||||
var nodeRef = args.n,
|
var rootNode = args.n,
|
||||||
maxResults = args.m,
|
maxResults = args.m,
|
||||||
sortOrder = args.s,
|
sortOrder = args.s,
|
||||||
tags = [],
|
tags = [],
|
||||||
countMin = Number.MAX_VALUE,
|
countMin = Number.MAX_VALUE,
|
||||||
countMax = 0;
|
countMax = 0;
|
||||||
|
|
||||||
/* nodeRef input */
|
/* rootNode input */
|
||||||
var node = null;
|
var node = null;
|
||||||
if ((nodeRef !== null) && (nodeRef !== ""))
|
if ((rootNode !== null) && (rootNode !== ""))
|
||||||
{
|
{
|
||||||
node = resolveVirtualNodeRef(nodeRef) || search.findNode(nodeRef);
|
node = resolveVirtualNodeRef(rootNode) || resolveXPath(rootNode) || search.findNode(rootNode);
|
||||||
}
|
}
|
||||||
if (node === null)
|
if (node === null)
|
||||||
{
|
{
|
||||||
@@ -144,4 +144,25 @@ function resolveVirtualNodeRef(nodeRef)
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve xpath location
|
||||||
|
*
|
||||||
|
* @method resolveXPath
|
||||||
|
* @param xpath {string} xpath expression
|
||||||
|
* @return {ScriptNode|null} First node corresponding to supplied xpath expression. Results null if xpath doesn't resolve.
|
||||||
|
*/
|
||||||
|
function resolveXPath(xpath)
|
||||||
|
{
|
||||||
|
var node = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
node = companyhome.childrenByXPath(xpath)[0];
|
||||||
|
}
|
||||||
|
catch(e)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
model.tagQuery = tagQuery();
|
model.tagQuery = tagQuery();
|
@@ -1,3 +1,5 @@
|
|||||||
|
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/parse-args.lib.js">
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
||||||
*
|
*
|
||||||
@@ -47,7 +49,7 @@ function main()
|
|||||||
id = url.templateArgs.id;
|
id = url.templateArgs.id;
|
||||||
|
|
||||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||||
rootNode = resolveVirtualNodeRef(nodeRef);
|
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||||
if (rootNode == null)
|
if (rootNode == null)
|
||||||
{
|
{
|
||||||
rootNode = search.findNode(nodeRef);
|
rootNode = search.findNode(nodeRef);
|
||||||
@@ -119,31 +121,6 @@ function main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolve "virtual" nodeRefs into nodes
|
|
||||||
*
|
|
||||||
* @method resolveVirtualNodeRef
|
|
||||||
* @param virtualNodeRef {string} nodeRef
|
|
||||||
* @return {ScriptNode|null} Node corresponding to supplied virtual nodeRef. Returns null if supplied nodeRef isn't a "virtual" type
|
|
||||||
*/
|
|
||||||
function resolveVirtualNodeRef(nodeRef)
|
|
||||||
{
|
|
||||||
var node = null;
|
|
||||||
if (nodeRef == "alfresco://company/home")
|
|
||||||
{
|
|
||||||
node = companyhome;
|
|
||||||
}
|
|
||||||
else if (nodeRef == "alfresco://user/home")
|
|
||||||
{
|
|
||||||
node = userhome;
|
|
||||||
}
|
|
||||||
else if (nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
node = companyhome.childrenByXPath("st:sites")[0];
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get multiple input values
|
* Get multiple input values
|
||||||
*
|
*
|
||||||
|
@@ -112,7 +112,7 @@ var ParseArgs =
|
|||||||
id = url.templateArgs.id;
|
id = url.templateArgs.id;
|
||||||
|
|
||||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||||
rootNode = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||||
if (rootNode == null)
|
if (rootNode == null)
|
||||||
{
|
{
|
||||||
rootNode = search.findNode(nodeRef);
|
rootNode = search.findNode(nodeRef);
|
||||||
@@ -203,24 +203,54 @@ var ParseArgs =
|
|||||||
* Resolve "virtual" nodeRefs into nodes
|
* Resolve "virtual" nodeRefs into nodes
|
||||||
*
|
*
|
||||||
* @method resolveVirtualNodeRef
|
* @method resolveVirtualNodeRef
|
||||||
* @param virtualNodeRef {string} nodeRef
|
* @deprecated for ParseArgs.resolveNode
|
||||||
* @return {ScriptNode|null} Node corresponding to supplied virtual nodeRef. Returns null if supplied nodeRef isn't a "virtual" type
|
|
||||||
*/
|
*/
|
||||||
resolveVirtualNodeRef: function ParseArgs_resolveVirtualNodeRef(nodeRef)
|
resolveVirtualNodeRef: function ParseArgs_resolveVirtualNodeRef(nodeRef)
|
||||||
|
{
|
||||||
|
if (logger.isLoggingEnabled())
|
||||||
|
{
|
||||||
|
logger.log("WARNING: ParseArgs.resolveVirtualNodeRef is deprecated for ParseArgs.resolveNode");
|
||||||
|
}
|
||||||
|
return ParseArgs.resolveNode(nodeRef);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve "virtual" nodeRefs, nodeRefs and xpath expressions into nodes
|
||||||
|
*
|
||||||
|
* @method resolveNode
|
||||||
|
* @param reference {string} "virtual" nodeRef, nodeRef or xpath expressions
|
||||||
|
* @return {ScriptNode|null} Node corresponding to supplied expression. Returns null if node cannot be resolved.
|
||||||
|
*/
|
||||||
|
resolveNode: function ParseArgs_resolveNode(reference)
|
||||||
{
|
{
|
||||||
var node = null;
|
var node = null;
|
||||||
if (nodeRef == "alfresco://company/home")
|
try
|
||||||
|
{
|
||||||
|
if (reference == "alfresco://company/home")
|
||||||
{
|
{
|
||||||
node = companyhome;
|
node = companyhome;
|
||||||
}
|
}
|
||||||
else if (nodeRef == "alfresco://user/home")
|
else if (reference == "alfresco://user/home")
|
||||||
{
|
{
|
||||||
node = userhome;
|
node = userhome;
|
||||||
}
|
}
|
||||||
else if (nodeRef == "alfresco://sites/home")
|
else if (reference == "alfresco://sites/home")
|
||||||
{
|
{
|
||||||
node = companyhome.childrenByXPath("st:sites")[0];
|
node = companyhome.childrenByXPath("st:sites")[0];
|
||||||
}
|
}
|
||||||
|
else if (reference.indexOf("://") > 0)
|
||||||
|
{
|
||||||
|
node = search.findNode(reference);
|
||||||
|
}
|
||||||
|
else if (reference.substring(0, 1) == "/")
|
||||||
|
{
|
||||||
|
node = search.xpathSearch(reference)[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js">
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Document List Component: action
|
* Document List Component: action
|
||||||
*
|
*
|
||||||
@@ -225,25 +227,12 @@ function getNodeRefInputParams()
|
|||||||
id = url.templateArgs.id;
|
id = url.templateArgs.id;
|
||||||
|
|
||||||
var nodeRef = storeType + "://" + storeId + "/" + id,
|
var nodeRef = storeType + "://" + storeId + "/" + id,
|
||||||
rootNode = null;
|
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||||
|
|
||||||
if (nodeRef == "alfresco://company/home")
|
|
||||||
{
|
|
||||||
rootNode = companyhome;
|
|
||||||
}
|
|
||||||
else if (nodeRef == "alfresco://user/home")
|
|
||||||
{
|
|
||||||
rootNode = userhome;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rootNode = search.findNode(nodeRef);
|
|
||||||
|
|
||||||
if (rootNode === null)
|
if (rootNode === null)
|
||||||
{
|
{
|
||||||
return "'" + nodeRef + "' is not a valid nodeRef.";
|
return "'" + nodeRef + "' is not a valid nodeRef.";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Populate the return object
|
// Populate the return object
|
||||||
params =
|
params =
|
||||||
|
@@ -16,11 +16,14 @@ function getDoclist()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parsedArgs.pathNode = ParseArgs.resolveNode(parsedArgs.nodeRef);
|
||||||
|
parsedArgs.location = Common.getLocation(parsedArgs.pathNode, parsedArgs.libraryRoot);
|
||||||
|
|
||||||
var filter = args.filter,
|
var filter = args.filter,
|
||||||
items = [];
|
items = [];
|
||||||
|
|
||||||
var favourites = Common.getFavourites(),
|
var favourites = Common.getFavourites(),
|
||||||
node = parsedArgs.rootNode,
|
node = parsedArgs.pathNode,
|
||||||
parent =
|
parent =
|
||||||
{
|
{
|
||||||
node: node.parent,
|
node: node.parent,
|
||||||
|
@@ -274,6 +274,12 @@ var ParseArgs =
|
|||||||
nodeRef = null,
|
nodeRef = null,
|
||||||
path = "";
|
path = "";
|
||||||
|
|
||||||
|
// Is this library rooted from a non-site nodeRef?
|
||||||
|
if (libraryRoot !== null)
|
||||||
|
{
|
||||||
|
libraryRoot = ParseArgs.resolveNode(libraryRoot);
|
||||||
|
}
|
||||||
|
|
||||||
if (url.templateArgs.store_type !== null)
|
if (url.templateArgs.store_type !== null)
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -284,16 +290,12 @@ var ParseArgs =
|
|||||||
id = url.templateArgs.id;
|
id = url.templateArgs.id;
|
||||||
|
|
||||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||||
rootNode = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
rootNode = libraryRoot || ParseArgs.resolveNode(nodeRef);
|
||||||
if (rootNode == null)
|
if (rootNode == null)
|
||||||
{
|
|
||||||
rootNode = search.findNode(nodeRef);
|
|
||||||
if (rootNode === null)
|
|
||||||
{
|
{
|
||||||
status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'");
|
status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Special case: make sure filter picks up correct mode
|
// Special case: make sure filter picks up correct mode
|
||||||
if (type == null && args.filter == null)
|
if (type == null && args.filter == null)
|
||||||
@@ -345,19 +347,13 @@ var ParseArgs =
|
|||||||
|
|
||||||
// Path input?
|
// Path input?
|
||||||
path = url.templateArgs.path || "";
|
path = url.templateArgs.path || "";
|
||||||
pathNode = path.length > 0 ? rootNode.childByNamePath(path) : rootNode;
|
pathNode = path.length > 0 ? rootNode.childByNamePath(path) : (pathNode || rootNode);
|
||||||
if (pathNode === null)
|
if (pathNode === null)
|
||||||
{
|
{
|
||||||
status.setCode(status.STATUS_NOT_FOUND, "Path not found: '" + path + "'");
|
status.setCode(status.STATUS_NOT_FOUND, "Path not found: '" + path + "'");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is this library rooted from a non-site nodeRef?
|
|
||||||
if (libraryRoot !== null)
|
|
||||||
{
|
|
||||||
libraryRoot = ParseArgs.resolveVirtualNodeRef(libraryRoot) || search.findNode(libraryRoot);
|
|
||||||
}
|
|
||||||
|
|
||||||
var objRet =
|
var objRet =
|
||||||
{
|
{
|
||||||
rootNode: rootNode,
|
rootNode: rootNode,
|
||||||
@@ -383,24 +379,54 @@ var ParseArgs =
|
|||||||
* Resolve "virtual" nodeRefs into nodes
|
* Resolve "virtual" nodeRefs into nodes
|
||||||
*
|
*
|
||||||
* @method resolveVirtualNodeRef
|
* @method resolveVirtualNodeRef
|
||||||
* @param virtualNodeRef {string} nodeRef
|
* @deprecated for ParseArgs.resolveNode
|
||||||
* @return {ScriptNode|null} Node corresponding to supplied virtual nodeRef. Returns null if supplied nodeRef isn't a "virtual" type
|
|
||||||
*/
|
*/
|
||||||
resolveVirtualNodeRef: function ParseArgs_resolveVirtualNodeRef(nodeRef)
|
resolveVirtualNodeRef: function ParseArgs_resolveVirtualNodeRef(nodeRef)
|
||||||
|
{
|
||||||
|
if (logger.isLoggingEnabled())
|
||||||
|
{
|
||||||
|
logger.log("WARNING: ParseArgs.resolveVirtualNodeRef is deprecated for ParseArgs.resolveNode");
|
||||||
|
}
|
||||||
|
return ParseArgs.resolveNode(nodeRef);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve "virtual" nodeRefs, nodeRefs and xpath expressions into nodes
|
||||||
|
*
|
||||||
|
* @method resolveNode
|
||||||
|
* @param reference {string} "virtual" nodeRef, nodeRef or xpath expressions
|
||||||
|
* @return {ScriptNode|null} Node corresponding to supplied expression. Returns null if node cannot be resolved.
|
||||||
|
*/
|
||||||
|
resolveNode: function ParseArgs_resolveNode(reference)
|
||||||
{
|
{
|
||||||
var node = null;
|
var node = null;
|
||||||
if (nodeRef == "alfresco://company/home")
|
try
|
||||||
|
{
|
||||||
|
if (reference == "alfresco://company/home")
|
||||||
{
|
{
|
||||||
node = companyhome;
|
node = companyhome;
|
||||||
}
|
}
|
||||||
else if (nodeRef == "alfresco://user/home")
|
else if (reference == "alfresco://user/home")
|
||||||
{
|
{
|
||||||
node = userhome;
|
node = userhome;
|
||||||
}
|
}
|
||||||
else if (nodeRef == "alfresco://sites/home")
|
else if (reference == "alfresco://sites/home")
|
||||||
{
|
{
|
||||||
node = companyhome.childrenByXPath("st:sites")[0];
|
node = companyhome.childrenByXPath("st:sites")[0];
|
||||||
}
|
}
|
||||||
|
else if (reference.indexOf("://") > 0)
|
||||||
|
{
|
||||||
|
node = search.findNode(reference);
|
||||||
|
}
|
||||||
|
else if (reference.substring(0, 1) == "/")
|
||||||
|
{
|
||||||
|
node = search.xpathSearch(reference)[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return node;
|
return node;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@ function getPermissions()
|
|||||||
storeId = url.templateArgs.store_id,
|
storeId = url.templateArgs.store_id,
|
||||||
id = url.templateArgs.id,
|
id = url.templateArgs.id,
|
||||||
nodeRef = storeType + "://" + storeId + "/" + id,
|
nodeRef = storeType + "://" + storeId + "/" + id,
|
||||||
node = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
node = ParseArgs.resolveNode(nodeRef);
|
||||||
|
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
|
@@ -15,7 +15,7 @@ function main()
|
|||||||
storeId = url.templateArgs.store_id,
|
storeId = url.templateArgs.store_id,
|
||||||
id = url.templateArgs.id,
|
id = url.templateArgs.id,
|
||||||
nodeRef = storeType + "://" + storeId + "/" + id,
|
nodeRef = storeType + "://" + storeId + "/" + id,
|
||||||
node = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
node = ParseArgs.resolveNode(nodeRef);
|
||||||
|
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user