|
From: <fg...@us...> - 2013-10-20 14:20:52
|
Revision: 4399
http://openutils.svn.sourceforge.net/openutils/?rev=4399&view=rev
Author: fgiust
Date: 2013-10-20 14:20:48 +0000 (Sun, 20 Oct 2013)
Log Message:
-----------
cleanup a few functions
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/NodeUtilsExt.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java 2013-10-20 12:41:45 UTC (rev 4398)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java 2013-10-20 14:20:48 UTC (rev 4399)
@@ -101,6 +101,11 @@
{
return ((NodeMapWrapper) nodeorcontent).getJCRNode();
}
+ else if (nodeorcontent instanceof String)
+ {
+ // just ignore
+ log.debug("Unable to handle object of type {}", nodeorcontent);
+ }
else
{
log.warn("Unable to handle object of type {}", nodeorcontent);
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2013-10-20 12:41:45 UTC (rev 4398)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2013-10-20 14:20:48 UTC (rev 4399)
@@ -28,15 +28,17 @@
import info.magnolia.cms.security.Permission;
import info.magnolia.cms.security.PermissionUtil;
import info.magnolia.cms.security.SecurityUtil;
-import info.magnolia.cms.security.User;
+import info.magnolia.cms.security.User;
import info.magnolia.context.MgnlContext;
-import info.magnolia.context.WebContext;
-import info.magnolia.init.MagnoliaConfigurationProperties;
+import info.magnolia.init.MagnoliaConfigurationProperties;
+import info.magnolia.jcr.util.ContentMap;
import info.magnolia.jcr.util.NodeUtil;
+import info.magnolia.jcr.wrapper.HTMLEscapingNodeWrapper;
import info.magnolia.link.LinkException;
import info.magnolia.link.LinkUtil;
import info.magnolia.objectfactory.Components;
import info.magnolia.repository.RepositoryConstants;
+import it.openutils.mgnlutils.util.NodeUtilsExt;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
@@ -225,7 +227,7 @@
public static String link(String uuidOrPathOrUrl)
{
String cleanedurl = StringUtils.replace(StringUtils.trim(uuidOrPathOrUrl), "&", "&");
- String contextPath = ((WebContext) MgnlContext.getInstance()).getContextPath();
+ String contextPath = safeContextPath();
if (StringUtils.isBlank(cleanedurl))
{
@@ -261,8 +263,7 @@
// Check if uuidOrPathOrUrl is an UUID
try
{
- cleanedurl = MgnlContext.getContextPath()
- + LinkUtil.convertUUIDtoURI(cleanedurl, RepositoryConstants.WEBSITE);
+ cleanedurl = safeContextPath() + LinkUtil.convertUUIDtoURI(cleanedurl, RepositoryConstants.WEBSITE);
}
catch (LinkException e)
{
@@ -655,7 +656,7 @@
*/
public static String baseUrl()
{
- return baseUrlWithoutContextPath() + MgnlContext.getWebContext().getRequest().getContextPath();
+ return baseUrlWithoutContextPath() + safeContextPath();
}
/**
@@ -753,27 +754,38 @@
}
/**
- * Returns a link from an uuid. Accepts in input uuid. Returns "#" if provided uuid is not found.
+ * Returns a link from an uuid. Accepts an uuid, a path, a Node, Content or ContentMap object. Returns "#" if
+ * provided uuid is not found. Automatically adds the context path.
* @param uuid uuid to find
* @param repo repository within search - can be null - default is 'website'
* @return a link from an uuid.
*/
- public static String repoUuidLink(String uuid, String repo)
+ public static String repoUuidLink(Object uuid, String repo)
{
- String url = "#";
- try
+ return link(uuid, repo, true);
+ }
+
+ /**
+ * Returns a link from an uuid. Accepts an uuid, a path, a Node, Content or ContentMap object. Returns "#" if
+ * provided uuid is not found. Don't add the context path.
+ * @param uuid uuid to find
+ * @param repo repository within search - can be null - default is 'website'
+ * @return a link from an uuid.
+ */
+ public static String linkNoCtx(Object uuid, String repo)
+ {
+ return link(uuid, repo, false);
+ }
+
+ public static String link(Object uuid, String repo, boolean addcontextpath)
+ {
+ Node node = node(uuid, repo);
+ if (node == null)
{
- url = MgnlContext.getContextPath()
- + LinkUtil.convertUUIDtoURI(uuid, StringUtils.isNotBlank(repo) ? repo : RepositoryConstants.WEBSITE);
+ return "#";
}
- catch (LinkException e)
- {
- log.debug("Failed to parse links with from "
- + MgnlContext.getAggregationState().getCurrentURI()
- + e.getMessage());
- }
- return url;
+ return NodeUtilsExt.createLink(node, addcontextpath);
}
/**
@@ -984,7 +996,9 @@
try
{
- Session session = MgnlContext.getJCRSession(repo);
+ Session session = MgnlContext.getJCRSession(StringUtils.isNotBlank(repo)
+ ? repo
+ : RepositoryConstants.WEBSITE);
if (identifier.startsWith("/"))
{
if (session.nodeExists(identifier))
@@ -1049,7 +1063,8 @@
{
Subject subject = MgnlContext.getSubject();
- Set<info.magnolia.cms.security.auth.Entity> principalDetails = subject.getPrincipals(info.magnolia.cms.security.auth.Entity.class);
+ Set<info.magnolia.cms.security.auth.Entity> principalDetails = subject
+ .getPrincipals(info.magnolia.cms.security.auth.Entity.class);
Iterator<info.magnolia.cms.security.auth.Entity> entityIterator = principalDetails.iterator();
info.magnolia.cms.security.auth.Entity userDetails = entityIterator.next();
@@ -1353,6 +1368,13 @@
}
}
+ /**
+ * Loads the ancestor of the given jcr Node/ContentMap. Returns null if the object is null or if requested level is
+ * greater than current depth
+ * @param nodeorcontent input Node or ContentMap
+ * @param level ancestor level
+ * @return Node or null
+ */
public static Node ancestor(Object nodeorcontent, int level)
{
@@ -1385,7 +1407,31 @@
e.getMessage() });
return null;
}
+ }
+ /**
+ * Removes escaping of HTML on properties
+ * @param object Node or ContentMap
+ * @return same Node without wrapping. Null safe
+ */
+ public static Node decode(Object object)
+ {
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(object);
+ if (node == null)
+ {
+ return null;
+ }
+
+ return NodeUtil.deepUnwrap(node, HTMLEscapingNodeWrapper.class);
}
+ private static String safeContextPath()
+ {
+ if (MgnlContext.isWebContext())
+ {
+ return MgnlContext.getContextPath();
+ }
+ return StringUtils.EMPTY;
+ }
+
}
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/NodeUtilsExt.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/NodeUtilsExt.java 2013-10-20 12:41:45 UTC (rev 4398)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/NodeUtilsExt.java 2013-10-20 14:20:48 UTC (rev 4399)
@@ -21,6 +21,7 @@
import info.magnolia.cms.core.AggregationState;
import info.magnolia.cms.core.Path;
+import info.magnolia.cms.util.ContentUtil;
import info.magnolia.content2bean.Content2BeanException;
import info.magnolia.content2bean.Content2BeanUtil;
import info.magnolia.context.MgnlContext;
@@ -31,6 +32,10 @@
import info.magnolia.jcr.wrapper.ChannelVisibilityContentDecorator;
import info.magnolia.jcr.wrapper.HTMLEscapingNodeWrapper;
import info.magnolia.jcr.wrapper.I18nNodeWrapper;
+import info.magnolia.link.LinkFactory;
+import info.magnolia.link.LinkTransformerManager;
+import info.magnolia.link.LinkUtil;
+import info.magnolia.objectfactory.Components;
import java.util.regex.Pattern;
@@ -255,4 +260,19 @@
}
return NodeUtil.getPathIfPossible(node) + "/" + PropertyUtil.getString(node, "fileName");
}
+
+ @SuppressWarnings("deprecation")
+ public static String createLink(Node node, boolean addcontextpath)
+ {
+ if (node == null)
+ {
+ return null;
+ }
+
+ return LinkTransformerManager
+ .getInstance()
+ .getAbsolute(addcontextpath)
+ .transform(LinkFactory.createLink(ContentUtil.asContent(node)));
+
+ }
}
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2013-10-20 12:41:45 UTC (rev 4398)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2013-10-20 14:20:48 UTC (rev 4399)
@@ -241,12 +241,18 @@
<function-signature>java.lang.String activePageFullUrl()</function-signature>
</function>
<function>
- <description>Returns a link from an uuid. Accepts in input uuid.</description>
+ <description>Returns a link from an uuid. Accepts an uuid, path. Node or ContentMap. Automatically adds the context path.</description>
<name>repoUuidLink</name>
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
- <function-signature>java.lang.String repoUuidLink(java.lang.String, java.lang.String)</function-signature>
+ <function-signature>java.lang.String repoUuidLink(java.lang.Object, java.lang.String)</function-signature>
</function>
<function>
+ <description>Returns a link from an uuid. Accepts an uuid, path. Node or ContentMap. Don't add the context path</description>
+ <name>linkNoCtx</name>
+ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
+ <function-signature>java.lang.String linkNoCtx(java.lang.Object, java.lang.String)</function-signature>
+ </function>
+ <function>
<description>Convert a content list into a collection, also wrapping the content inside a I18NNodeMapWrapper</description>
<name>convertToCollection</name>
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
@@ -436,5 +442,11 @@
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
<function-signature>javax.jcr.Node ancestor(java.lang.Object, int)</function-signature>
</function>
+ <function>
+ <description>Removes escaping of HTML on properties.</description>
+ <name>decode</name>
+ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
+ <function-signature>javax.jcr.Node decode(java.lang.Object)</function-signature>
+ </function>
<!-- please don't add new funtions without a meaningfull <description> -->
</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.
|