From: <die...@us...> - 2011-02-09 07:55:33
|
Revision: 3325 http://openutils.svn.sourceforge.net/openutils/?rev=3325&view=rev Author: diego_schivo Date: 2011-02-09 07:55:26 +0000 (Wed, 09 Feb 2011) Log Message: ----------- MGNLUTILS-25 EL function returning a content given a UUID/path/content Modified Paths: -------------- trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld Modified: trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java =================================================================== --- trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2011-02-08 18:09:30 UTC (rev 3324) +++ trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2011-02-09 07:55:26 UTC (rev 3325) @@ -22,10 +22,12 @@ import info.magnolia.cms.beans.config.ContentRepository; import info.magnolia.cms.beans.config.ServerConfiguration; import info.magnolia.cms.core.Content; +import info.magnolia.cms.core.HierarchyManager; import info.magnolia.cms.core.ItemType; import info.magnolia.cms.core.Path; import info.magnolia.cms.core.SystemProperty; import info.magnolia.cms.i18n.I18nContentSupportFactory; +import info.magnolia.cms.i18n.I18nContentWrapper; import info.magnolia.cms.util.NodeMapWrapper; import info.magnolia.context.MgnlContext; import info.magnolia.context.WebContext; @@ -42,6 +44,7 @@ import java.util.Map; import java.util.Map.Entry; +import javax.jcr.ItemNotFoundException; import javax.jcr.RepositoryException; import javax.servlet.http.HttpServletRequest; @@ -767,4 +770,86 @@ return string; } } + + /** + * @param obj + * @param repo + * @return + */ + public static Content content(Object obj, String repo) + { + if (obj == null) + { + return null; + } + + Content content = null; + + if (obj instanceof String) + { + String mediaIdentifier = (String) obj; + + if (StringUtils.isBlank(mediaIdentifier)) + { + return null; + } + + HierarchyManager hm = MgnlContext.getHierarchyManager(repo); + try + { + if (mediaIdentifier.startsWith("/")) + { + if (hm.isExist(mediaIdentifier)) + { + content = hm.getContent(mediaIdentifier); + } + } + else + { + content = hm.getContentByUUID(StringUtils.trim(mediaIdentifier)); + } + } + catch (ItemNotFoundException e) + { + log.debug("Node \"" + mediaIdentifier + "\" not found"); + } + catch (RepositoryException e) + { + log.error(e.getClass().getName() + " getting node \"" + mediaIdentifier + "\"", e); + } + } + else if (obj instanceof Content) + { + content = (Content) obj; + } + + return content; + } + + /** + * @param obj + * @param repo + * @return + */ + public static NodeMapWrapper node(Object obj, String repo) + { + Content content = content(obj, repo); + + NodeMapWrapper node = null; + if (content instanceof NodeMapWrapper) + { + node = (NodeMapWrapper) content; + } + else if (content != null) + { + Content currentpage = MgnlContext.getAggregationState().getMainContent(); + if (currentpage == null) + { + currentpage = content; + } + node = new NodeMapWrapper(new I18nContentWrapper(content), currentpage.getHandle()); + } + + return node; + } } Modified: trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld =================================================================== --- trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2011-02-08 18:09:30 UTC (rev 3324) +++ trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2011-02-09 07:55:26 UTC (rev 3325) @@ -289,4 +289,16 @@ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> <function-signature>java.util.String buildQuerystringIncluding(java.lang.String)</function-signature> </function> + <function> + <description></description> + <name>content</name> + <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> + <function-signature>info.magnolia.cms.core.Content content(java.lang.Object, java.lang.String)</function-signature> + </function> + <function> + <description></description> + <name>node</name> + <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> + <function-signature>info.magnolia.cms.util.NodeMapWrapper node(java.lang.Object, java.lang.String)</function-signature> + </function> </taglib> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |