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()
|
||||
{
|
||||
var nodeRef = args.n,
|
||||
var rootNode = args.n,
|
||||
maxResults = args.m,
|
||||
sortOrder = args.s,
|
||||
tags = [],
|
||||
countMin = Number.MAX_VALUE,
|
||||
countMax = 0;
|
||||
|
||||
/* nodeRef input */
|
||||
/* rootNode input */
|
||||
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)
|
||||
{
|
||||
@@ -144,4 +144,25 @@ function resolveVirtualNodeRef(nodeRef)
|
||||
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();
|
@@ -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.
|
||||
*
|
||||
@@ -47,7 +49,7 @@ function main()
|
||||
id = url.templateArgs.id;
|
||||
|
||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||
rootNode = resolveVirtualNodeRef(nodeRef);
|
||||
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||
if (rootNode == null)
|
||||
{
|
||||
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
|
||||
*
|
||||
|
@@ -112,7 +112,7 @@ var ParseArgs =
|
||||
id = url.templateArgs.id;
|
||||
|
||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||
rootNode = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
||||
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||
if (rootNode == null)
|
||||
{
|
||||
rootNode = search.findNode(nodeRef);
|
||||
@@ -203,23 +203,53 @@ var ParseArgs =
|
||||
* 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
|
||||
* @deprecated for ParseArgs.resolveNode
|
||||
*/
|
||||
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;
|
||||
if (nodeRef == "alfresco://company/home")
|
||||
try
|
||||
{
|
||||
node = companyhome;
|
||||
if (reference == "alfresco://company/home")
|
||||
{
|
||||
node = companyhome;
|
||||
}
|
||||
else if (reference == "alfresco://user/home")
|
||||
{
|
||||
node = userhome;
|
||||
}
|
||||
else if (reference == "alfresco://sites/home")
|
||||
{
|
||||
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];
|
||||
}
|
||||
}
|
||||
else if (nodeRef == "alfresco://user/home")
|
||||
catch (e)
|
||||
{
|
||||
node = userhome;
|
||||
}
|
||||
else if (nodeRef == "alfresco://sites/home")
|
||||
{
|
||||
node = companyhome.childrenByXPath("st:sites")[0];
|
||||
return null;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
@@ -1,3 +1,5 @@
|
||||
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/parse-args.lib.js">
|
||||
|
||||
/**
|
||||
* Document List Component: action
|
||||
*
|
||||
@@ -225,24 +227,11 @@ function getNodeRefInputParams()
|
||||
id = url.templateArgs.id;
|
||||
|
||||
var nodeRef = storeType + "://" + storeId + "/" + id,
|
||||
rootNode = null;
|
||||
rootNode = ParseArgs.resolveNode(nodeRef);
|
||||
|
||||
if (nodeRef == "alfresco://company/home")
|
||||
if (rootNode === null)
|
||||
{
|
||||
rootNode = companyhome;
|
||||
}
|
||||
else if (nodeRef == "alfresco://user/home")
|
||||
{
|
||||
rootNode = userhome;
|
||||
}
|
||||
else
|
||||
{
|
||||
rootNode = search.findNode(nodeRef);
|
||||
|
||||
if (rootNode === null)
|
||||
{
|
||||
return "'" + nodeRef + "' is not a valid nodeRef.";
|
||||
}
|
||||
return "'" + nodeRef + "' is not a valid nodeRef.";
|
||||
}
|
||||
|
||||
// Populate the return object
|
||||
|
@@ -16,11 +16,14 @@ function getDoclist()
|
||||
return;
|
||||
}
|
||||
|
||||
parsedArgs.pathNode = ParseArgs.resolveNode(parsedArgs.nodeRef);
|
||||
parsedArgs.location = Common.getLocation(parsedArgs.pathNode, parsedArgs.libraryRoot);
|
||||
|
||||
var filter = args.filter,
|
||||
items = [];
|
||||
|
||||
var favourites = Common.getFavourites(),
|
||||
node = parsedArgs.rootNode,
|
||||
node = parsedArgs.pathNode,
|
||||
parent =
|
||||
{
|
||||
node: node.parent,
|
||||
|
@@ -274,6 +274,12 @@ var ParseArgs =
|
||||
nodeRef = null,
|
||||
path = "";
|
||||
|
||||
// Is this library rooted from a non-site nodeRef?
|
||||
if (libraryRoot !== null)
|
||||
{
|
||||
libraryRoot = ParseArgs.resolveNode(libraryRoot);
|
||||
}
|
||||
|
||||
if (url.templateArgs.store_type !== null)
|
||||
{
|
||||
/**
|
||||
@@ -284,15 +290,11 @@ var ParseArgs =
|
||||
id = url.templateArgs.id;
|
||||
|
||||
nodeRef = storeType + "://" + storeId + "/" + id;
|
||||
rootNode = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
||||
rootNode = libraryRoot || ParseArgs.resolveNode(nodeRef);
|
||||
if (rootNode == null)
|
||||
{
|
||||
rootNode = search.findNode(nodeRef);
|
||||
if (rootNode === null)
|
||||
{
|
||||
status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'");
|
||||
return null;
|
||||
}
|
||||
status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Special case: make sure filter picks up correct mode
|
||||
@@ -345,19 +347,13 @@ var ParseArgs =
|
||||
|
||||
// Path input?
|
||||
path = url.templateArgs.path || "";
|
||||
pathNode = path.length > 0 ? rootNode.childByNamePath(path) : rootNode;
|
||||
pathNode = path.length > 0 ? rootNode.childByNamePath(path) : (pathNode || rootNode);
|
||||
if (pathNode === null)
|
||||
{
|
||||
status.setCode(status.STATUS_NOT_FOUND, "Path not found: '" + path + "'");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Is this library rooted from a non-site nodeRef?
|
||||
if (libraryRoot !== null)
|
||||
{
|
||||
libraryRoot = ParseArgs.resolveVirtualNodeRef(libraryRoot) || search.findNode(libraryRoot);
|
||||
}
|
||||
|
||||
var objRet =
|
||||
{
|
||||
rootNode: rootNode,
|
||||
@@ -383,23 +379,53 @@ var ParseArgs =
|
||||
* 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
|
||||
* @deprecated for ParseArgs.resolveNode
|
||||
*/
|
||||
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;
|
||||
if (nodeRef == "alfresco://company/home")
|
||||
try
|
||||
{
|
||||
node = companyhome;
|
||||
if (reference == "alfresco://company/home")
|
||||
{
|
||||
node = companyhome;
|
||||
}
|
||||
else if (reference == "alfresco://user/home")
|
||||
{
|
||||
node = userhome;
|
||||
}
|
||||
else if (reference == "alfresco://sites/home")
|
||||
{
|
||||
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];
|
||||
}
|
||||
}
|
||||
else if (nodeRef == "alfresco://user/home")
|
||||
catch (e)
|
||||
{
|
||||
node = userhome;
|
||||
}
|
||||
else if (nodeRef == "alfresco://sites/home")
|
||||
{
|
||||
node = companyhome.childrenByXPath("st:sites")[0];
|
||||
return null;
|
||||
}
|
||||
return node;
|
||||
},
|
||||
|
@@ -14,7 +14,7 @@ function getPermissions()
|
||||
storeId = url.templateArgs.store_id,
|
||||
id = url.templateArgs.id,
|
||||
nodeRef = storeType + "://" + storeId + "/" + id,
|
||||
node = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
||||
node = ParseArgs.resolveNode(nodeRef);
|
||||
|
||||
if (node == null)
|
||||
{
|
||||
|
@@ -15,7 +15,7 @@ function main()
|
||||
storeId = url.templateArgs.store_id,
|
||||
id = url.templateArgs.id,
|
||||
nodeRef = storeType + "://" + storeId + "/" + id,
|
||||
node = ParseArgs.resolveVirtualNodeRef(nodeRef);
|
||||
node = ParseArgs.resolveNode(nodeRef);
|
||||
|
||||
if (node == null)
|
||||
{
|
||||
|
Reference in New Issue
Block a user