|
From: <die...@us...> - 2012-04-10 09:19:42
|
Revision: 3947
http://openutils.svn.sourceforge.net/openutils/?rev=3947&view=rev
Author: diego_schivo
Date: 2012-04-10 09:19:31 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
mu:canEdit()
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.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/MgnlUtilsElFunctions.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2012-04-10 09:10:22 UTC (rev 3946)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2012-04-10 09:19:31 UTC (rev 3947)
@@ -29,12 +29,14 @@
import info.magnolia.cms.i18n.I18nContentSupportFactory;
import info.magnolia.cms.i18n.I18nContentWrapper;
import info.magnolia.cms.i18n.MessagesManager;
+import info.magnolia.cms.security.Permission;
import info.magnolia.cms.security.User;
import info.magnolia.cms.security.auth.Entity;
import info.magnolia.cms.util.NodeMapWrapper;
import info.magnolia.context.MgnlContext;
import info.magnolia.context.WebContext;
import info.magnolia.jaas.principal.EntityImpl;
+import info.magnolia.jcr.util.NodeUtil;
import info.magnolia.link.LinkException;
import info.magnolia.link.LinkUtil;
import info.magnolia.repository.RepositoryConstants;
@@ -983,4 +985,9 @@
}
}
+ // magnolia-templating-compatibility-taglib-cms: info.magnolia.cms.taglibs.CmsFunctions.canEdit()
+ public static boolean canEdit() {
+ return NodeUtil.isGranted(MgnlContext.getAggregationState().getMainContent().getJCRNode(), Permission.SET);
+ }
+
}
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 2012-04-10 09:10:22 UTC (rev 3946)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2012-04-10 09:19:31 UTC (rev 3947)
@@ -338,5 +338,11 @@
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
<function-signature>void setActivePage(info.magnolia.cms.core.Content)</function-signature>
</function>
+ <function>
+ <name>canEdit</name>
+ <description>Check if the current user can edit the active page</description>
+ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
+ <function-signature>boolean canEdit()</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.
|
|
From: <fg...@us...> - 2012-12-17 20:30:48
|
Revision: 4153
http://openutils.svn.sourceforge.net/openutils/?rev=4153&view=rev
Author: fgiust
Date: 2012-12-17 20:30:42 +0000 (Mon, 17 Dec 2012)
Log Message:
-----------
remove some deprecations, convert from Content to ContentMap
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java
Added: 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 (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java 2012-12-17 20:30:42 UTC (rev 4153)
@@ -0,0 +1,83 @@
+package it.openutils.mgnlutils.el;
+
+import info.magnolia.cms.core.AggregationState;
+import info.magnolia.cms.core.Content;
+import info.magnolia.context.MgnlContext;
+import info.magnolia.context.WebContext;
+import info.magnolia.jcr.util.ContentMap;
+
+import javax.jcr.Node;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Adapters for methods deprecated in magnolia 4.5 without a clear or non deprecated replacement.
+ * @author fgiust
+ * @version $Id$
+ */
+@SuppressWarnings("deprecation")
+public class MgnlUtilsDeprecatedAdapters
+{
+
+ private static Logger log = LoggerFactory.getLogger(MgnlUtilsDeprecatedAdapters.class);
+
+ public static Node getCurrentContent()
+ {
+ AggregationState aggregationState = safeGetAggregationStateIfAvailable();
+ if (aggregationState != null)
+ {
+ Content mainContent = aggregationState.getCurrentContent();
+ return mainContent != null ? mainContent.getJCRNode() : null;
+ }
+ return null;
+ }
+
+ public static Node getCurrentMain()
+ {
+ AggregationState aggregationState = safeGetAggregationStateIfAvailable();
+ if (aggregationState != null)
+ {
+ Content mainContent = aggregationState.getMainContent();
+ return mainContent != null ? mainContent.getJCRNode() : null;
+ }
+ return null;
+ }
+
+ public static AggregationState safeGetAggregationStateIfAvailable()
+ {
+ WebContext ctx = MgnlContext.getWebContextOrNull();
+ if (ctx != null)
+ {
+ return ctx.getAggregationState();
+ }
+ return null;
+ }
+
+ public static Node toNode(Object nodeorcontent)
+ {
+ if (nodeorcontent == null)
+ {
+ return null;
+ }
+ if (nodeorcontent instanceof Node)
+ {
+ return (Node) nodeorcontent;
+ }
+ else if (nodeorcontent instanceof ContentMap)
+ {
+ return ((ContentMap) nodeorcontent).getJCRNode();
+ }
+ else if (nodeorcontent instanceof Content)
+ {
+ return ((Content) nodeorcontent).getJCRNode();
+ }
+ else
+ {
+ log.warn("Unable to handle object of type {}", nodeorcontent);
+ }
+
+ return null;
+ }
+}
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
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 2012-12-10 20:28:23 UTC (rev 4152)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2012-12-17 20:30:42 UTC (rev 4153)
@@ -39,6 +39,7 @@
import info.magnolia.context.MgnlContext;
import info.magnolia.context.WebContext;
import info.magnolia.jaas.principal.EntityImpl;
+import info.magnolia.jcr.util.ContentMap;
import info.magnolia.jcr.util.NodeUtil;
import info.magnolia.link.LinkException;
import info.magnolia.link.LinkUtil;
@@ -58,11 +59,17 @@
import java.util.Properties;
import java.util.Set;
+import javax.jcr.Item;
import javax.jcr.ItemNotFoundException;
+import javax.jcr.LoginException;
+import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
+import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResult;
+import net.sourceforge.openutils.mgnlcriteria.jcr.query.Criteria;
import net.sourceforge.openutils.mgnlcriteria.jcr.query.JCRCriteriaFactory;
import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Restrictions;
@@ -129,16 +136,29 @@
* @param repository repository type
* @return the content of a given path and repository
*/
- public static Content contentByPath(String path, String repository)
+ public static ContentMap contentByPath(String path, String repository)
{
+ if (path == null || repository == null)
+ {
+ return null;
+ }
try
{
- return MgnlContext.getHierarchyManager(repository).getContent(path);
+ Node node = MgnlContext.getJCRSession(repository).getNode(path);
+ if (node != null)
+ {
+ return wrapNode(node);
+ }
}
catch (RepositoryException e)
{
- return null;
+ log.debug("{} loading path {} from workspace {}:{}", new Object[]{
+ e.getClass().getName(),
+ path,
+ repository,
+ e.getMessage() });
}
+ return null;
}
/**
@@ -1002,23 +1022,35 @@
}
/**
- * Get a Content node by its UUID. Internally uses JCR Criteria.
+ * Get a node by its UUID, wrapped as ContentMap.
* @param uuid content UUID
* @param repo workspace name
- * @return Content or null if not found
+ * @return ContentMap or null if not found
*/
- public static Content contentByUUID(String uuid, String repo)
+ public static ContentMap contentByUUID(String uuid, String repo) throws RepositoryException
{
if (StringUtils.isBlank(uuid))
{
return null;
}
- return JCRCriteriaFactory
- .createCriteria()
- .setWorkspace(repo)
- .add(Restrictions.eq("@jcr:uuid", uuid))
- .execute()
- .getFirstResult();
+
+ Session session;
+ try
+ {
+ session = MgnlContext.getJCRSession(repo);
+ Node loaded = session.getNodeByIdentifier(uuid);
+
+ if (loaded != null)
+ {
+ return wrapNode(loaded);
+ }
+ }
+ catch (ItemNotFoundException e)
+ {
+ // ignore
+ }
+
+ return null;
}
/**
@@ -1177,4 +1209,43 @@
}
}
+ public static ContentMap ancestor(Object nodeorcontent, int level)
+ {
+
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(nodeorcontent);
+
+ if (node == null)
+ {
+ return null;
+ }
+
+ try
+ {
+ if (node.getDepth() < level)
+ {
+ return null;
+ }
+ if (node.getDepth() == level)
+ {
+ return wrapNode(node);
+ }
+
+ return wrapNode((Node) node.getAncestor(level));
+ }
+ catch (RepositoryException e)
+ {
+ log.debug("Got a {} while loading level {} starting from {}: {}", new Object[]{
+ e.getClass().getName(),
+ level,
+ node,
+ e.getMessage() });
+ return null;
+ }
+
+ }
+
+ private static ContentMap wrapNode(Node node)
+ {
+ return new ContentMap(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 2012-12-10 20:28:23 UTC (rev 4152)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2012-12-17 20:30:42 UTC (rev 4153)
@@ -101,7 +101,7 @@
<description>Return the content of a given path and repository</description>
<name>contentByPath</name>
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
- <function-signature>info.magnolia.cms.core.Content contentByPath(java.lang.String, java.lang.String)</function-signature>
+ <function-signature>info.magnolia.jcr.util.ContentMap contentByPath(java.lang.String, java.lang.String)</function-signature>
<example>
<![CDATA[
${mu:contentByPath('Magnolia-Utils','website')}
@@ -339,10 +339,10 @@
<function-signature>void setActivePage(info.magnolia.cms.core.Content)</function-signature>
</function>
<function>
- <description>Get a Content node by its UUID. Internally uses JCR Criteria. Params are UUID and repository name.</description>
+ <description>Get a node by its UUID, wrapped as ContentMap.</description>
<name>contentByUUID</name>
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
- <function-signature>info.magnolia.cms.core.Content contentByUUID(java.lang.String, java.lang.String)</function-signature>
+ <function-signature>info.magnolia.jcr.util.ContentMap contentByUUID(java.lang.String, java.lang.String)</function-signature>
</function>
<function>
<description>Check if the current user belongs the given role</description>
@@ -436,5 +436,11 @@
<function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
<function-signature>java.util.Collection nodeDataIterator(info.magnolia.cms.core.Content, java.lang.String)</function-signature>
</function>
+ <function>
+ <description>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</description>
+ <name>ancestor</name>
+ <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class>
+ <function-signature>info.magnolia.jcr.util.ContentMap ancestor(java.lang.Object, int)</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.
|
|
From: <fg...@us...> - 2012-12-17 22:39:00
|
Revision: 4154
http://openutils.svn.sourceforge.net/openutils/?rev=4154&view=rev
Author: fgiust
Date: 2012-12-17 22:38:52 +0000 (Mon, 17 Dec 2012)
Log Message:
-----------
remove usage of deprecated objects, adjust EL functions signatures accordingly
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/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 2012-12-17 20:30:42 UTC (rev 4153)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsDeprecatedAdapters.java 2012-12-17 22:38:52 UTC (rev 4154)
@@ -1,7 +1,11 @@
package it.openutils.mgnlutils.el;
+import java.util.Properties;
+
import info.magnolia.cms.core.AggregationState;
import info.magnolia.cms.core.Content;
+import info.magnolia.cms.core.DefaultContent;
+import info.magnolia.cms.core.SystemProperty;
import info.magnolia.context.MgnlContext;
import info.magnolia.context.WebContext;
import info.magnolia.jcr.util.ContentMap;
@@ -25,7 +29,7 @@
public static Node getCurrentContent()
{
- AggregationState aggregationState = safeGetAggregationStateIfAvailable();
+ AggregationState aggregationState = getAggregationStateIfAvailable();
if (aggregationState != null)
{
Content mainContent = aggregationState.getCurrentContent();
@@ -34,9 +38,9 @@
return null;
}
- public static Node getCurrentMain()
+ public static Node getMainContent()
{
- AggregationState aggregationState = safeGetAggregationStateIfAvailable();
+ AggregationState aggregationState = getAggregationStateIfAvailable();
if (aggregationState != null)
{
Content mainContent = aggregationState.getMainContent();
@@ -45,7 +49,7 @@
return null;
}
- public static AggregationState safeGetAggregationStateIfAvailable()
+ public static AggregationState getAggregationStateIfAvailable()
{
WebContext ctx = MgnlContext.getWebContextOrNull();
if (ctx != null)
@@ -80,4 +84,32 @@
return null;
}
+
+ public static String getProperty(String name)
+ {
+ return SystemProperty.getProperty(name);
+ }
+
+ public static boolean getBooleanProperty(String name)
+ {
+ return SystemProperty.getBooleanProperty(name);
+ }
+
+ public static Properties systemProperties()
+ {
+ return SystemProperty.getProperties();
+ }
+
+ public static void setCurrentContent(Object content)
+ {
+ Node node = toNode(content);
+ if (node != null)
+ {
+ AggregationState aggregationState = getAggregationStateIfAvailable();
+ if (aggregationState != null)
+ {
+ aggregationState.setCurrentContent(new DefaultContent(node));
+ }
+ }
+ }
}
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 2012-12-17 20:30:42 UTC (rev 4153)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/el/MgnlUtilsElFunctions.java 2012-12-17 22:38:52 UTC (rev 4154)
@@ -21,21 +21,15 @@
import info.magnolia.cms.beans.config.ServerConfiguration;
import info.magnolia.cms.core.AggregationState;
-import info.magnolia.cms.core.Content;
-import info.magnolia.cms.core.HierarchyManager;
-import info.magnolia.cms.core.ItemType;
import info.magnolia.cms.core.MgnlNodeType;
-import info.magnolia.cms.core.NodeData;
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.i18n.I18nContentSupport;
import info.magnolia.cms.i18n.MessagesManager;
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.auth.Entity;
-import info.magnolia.cms.util.NodeMapWrapper;
import info.magnolia.context.MgnlContext;
import info.magnolia.context.WebContext;
import info.magnolia.jaas.principal.EntityImpl;
@@ -43,6 +37,7 @@
import info.magnolia.jcr.util.NodeUtil;
import info.magnolia.link.LinkException;
import info.magnolia.link.LinkUtil;
+import info.magnolia.objectfactory.Components;
import info.magnolia.repository.RepositoryConstants;
import java.io.UnsupportedEncodingException;
@@ -50,6 +45,7 @@
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -59,20 +55,16 @@
import java.util.Properties;
import java.util.Set;
-import javax.jcr.Item;
import javax.jcr.ItemNotFoundException;
-import javax.jcr.LoginException;
import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
-import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResult;
-import net.sourceforge.openutils.mgnlcriteria.jcr.query.Criteria;
-import net.sourceforge.openutils.mgnlcriteria.jcr.query.JCRCriteriaFactory;
-import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Restrictions;
-
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.jackrabbit.util.ISO9075;
@@ -107,24 +99,32 @@
*/
public static boolean firstPageWithCollection(String collectionName)
{
- Content actpage = MgnlContext.getAggregationState().getCurrentContent();
+ Node actpage = MgnlUtilsDeprecatedAdapters.getCurrentContent();
+ if (actpage == null)
+ {
+ return false;
+ }
try
{
- while (actpage.getLevel() > 1)
+ while (actpage.getDepth() > 1)
{
actpage = actpage.getParent();
- if (actpage.hasContent(collectionName) && actpage.getContent(collectionName).hasChildren())
+ if (actpage.hasNode(collectionName) && actpage.getNode(collectionName).hasNodes())
{
- MgnlContext.getAggregationState().setCurrentContent(actpage);
+ MgnlUtilsDeprecatedAdapters.setCurrentContent(actpage);
return true;
}
}
}
catch (RepositoryException e)
{
- log.error("Error looking for collection " + collectionName + " in " + actpage.getHandle(), e);
+ log.error("{} looking for collection {} in {}: {}", new Object[]{
+ e.getClass().getName(),
+ collectionName,
+ NodeUtil.getPathIfPossible(actpage),
+ e.getMessage() });
}
return false;
@@ -190,7 +190,8 @@
*/
public static String message(String key)
{
- String value = MessagesManager.getMessages(I18nContentSupportFactory.getI18nSupport().getLocale()).get(key);
+ String value = MessagesManager.getMessages(Components.getComponent(I18nContentSupport.class).getLocale()).get(
+ key);
return value;
}
@@ -203,7 +204,7 @@
*/
public static String messageWithArgs(String key, Object[] arguments)
{
- String value = MessagesManager.getMessages(I18nContentSupportFactory.getI18nSupport().getLocale()).get(
+ String value = MessagesManager.getMessages(Components.getComponent(I18nContentSupport.class).getLocale()).get(
key,
arguments);
@@ -216,7 +217,7 @@
*/
public static boolean develop()
{
- return SystemProperty.getBooleanProperty("magnolia.develop");
+ return MgnlUtilsDeprecatedAdapters.getBooleanProperty("magnolia.develop");
}
/**
@@ -242,13 +243,19 @@
// Check if there is already an extensions, else add default one
if (cleanedurl.startsWith("/"))
{
- String defaultExtension = "." + ServerConfiguration.getInstance().getDefaultExtension();
- cleanedurl = I18nContentSupportFactory.getI18nSupport().toI18NURI(cleanedurl);
- cleanedurl = contextPath + cleanedurl;
+ String configuredExtension = Components.getComponent(ServerConfiguration.class).getDefaultExtension();
- if (!cleanedurl.endsWith(defaultExtension) && cleanedurl.indexOf(".") < 0)
+ if (StringUtils.isNotBlank(configuredExtension))
{
- return cleanedurl + defaultExtension;
+
+ String defaultExtension = "." + configuredExtension;
+ cleanedurl = Components.getComponent(I18nContentSupport.class).toI18NURI(cleanedurl);
+ cleanedurl = contextPath + cleanedurl;
+
+ if (!cleanedurl.endsWith(defaultExtension) && cleanedurl.indexOf(".") < 0)
+ {
+ return cleanedurl + defaultExtension;
+ }
}
return cleanedurl;
@@ -334,20 +341,27 @@
* @param subnode String
* @return the number of nodes in a collection
*/
- public static int countNodesInCollection(Content content, String subnode)
+ public static int countNodesInCollection(Object content, String subnode)
{
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
int count = 0;
- Content collection = null;
if (content != null)
{
try
{
- if (content.hasContent(subnode))
+ if (node.hasNode(subnode))
{
- collection = content.getContent(subnode);
- count = collection.getChildren().size();
+ Node collection = node.getNode(subnode);
+ Iterator<Node> iterator = NodeUtil
+ .getNodes(node, collection.getPrimaryNodeType().getName())
+ .iterator();
+
+ while (iterator.hasNext())
+ {
+ count++;
+ }
}
}
catch (RepositoryException e)
@@ -364,14 +378,30 @@
* @param content Content
* @return the number of subpages
*/
- public static int countSubpages(Content content)
+ public static int countSubpages(Object content)
{
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+ if (node == null)
+ {
+ return 0;
+ }
+
int count = 0;
- if (content != null)
+ try
{
- count = content.getChildren(MgnlNodeType.NT_CONTENT).size();
+
+ Iterator<Node> iterator = NodeUtil.getNodes(node, MgnlNodeType.NT_PAGE).iterator();
+
+ while (iterator.hasNext())
+ {
+ count++;
+ }
}
+ catch (RepositoryException e)
+ {
+ log.debug(e.getMessage());
+ }
return count;
}
@@ -380,16 +410,39 @@
* Return the collection of subpages of a given page
* @param content Content
* @return a Collection<Content> of subpages of a given page
+ * @deprecated avoid methods that works with collections, use iterators
*/
- public static Collection<Content> subpages(Content content)
+ @Deprecated
+ public static Collection<ContentMap> subpages(Object content)
{
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+ if (node == null)
+ {
+ return Collections.EMPTY_LIST;
+ }
- if (content != null)
+ Iterable<Node> nodes;
+ try
{
- return content.getChildren(MgnlNodeType.NT_CONTENT);
+ nodes = NodeUtil.getNodes(node, MgnlNodeType.NT_PAGE);
}
+ catch (RepositoryException e)
+ {
+ return Collections.EMPTY_LIST;
+ }
+ Iterator<Node> iterator = nodes.iterator();
- return null;
+ Collection<ContentMap> result = new ArrayList<ContentMap>();
+ while (iterator.hasNext())
+ {
+ ContentMap contentMap = wrapNode(iterator.next());
+ if (contentMap != null)
+ {
+ result.add(contentMap);
+ }
+ }
+
+ return result;
}
/**
@@ -407,9 +460,21 @@
* @param content Content
* @return boolean value
*/
- public static boolean isPage(Content content)
+ public static boolean isPage(Object content)
{
- return content != null && !content.isNodeType(ItemType.CONTENTNODE.getSystemName());
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+ if (node != null)
+ {
+ try
+ {
+ return NodeUtil.isNodeType(node, MgnlNodeType.NT_PAGE);
+ }
+ catch (RepositoryException e)
+ {
+ // ignore
+ }
+ }
+ return false;
}
/**
@@ -417,23 +482,38 @@
* @param content Content
* @return the Content of the object passed or of the first parent page that has content type = mgnl:content
*/
- public static Content getPage(Content content)
+ public static ContentMap getPage(Object content)
{
- Content page = content;
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
- while (page != null && page.isNodeType(ItemType.CONTENTNODE.getSystemName()))
+ try
{
- try
+ while (node != null && !NodeUtil.isNodeType(node, MgnlNodeType.NT_PAGE))
{
- page = page.getParent();
+ if (node.getDepth() <= 1)
+ {
+ node = null;
+ }
+ else
+ {
+ node = node.getParent();
+ }
}
- catch (RepositoryException e)
- {
- log.debug("Unable to read parent of " + page.getHandle(), e);
- }
}
- return page;
+ catch (RepositoryException e)
+ {
+ log.debug(
+ "Got a {} while loading parent of {}: {}",
+ new Object[]{e.getClass().getName(), NodeUtil.getPathIfPossible(node), e.getMessage() });
+ return null;
+ }
+
+ if (node != null)
+ {
+ return wrapNode(node);
+ }
+ return null;
}
/**
@@ -636,13 +716,18 @@
* @param content magnolia content
* @return the full url to the given content (starting with http)
*/
- public static String pageFullUrl(Content content)
+ public static String pageFullUrl(Object content)
{
- if (content != null)
+
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+
+ if (node == null)
{
- return baseUrl() + content.getHandle() + ".html";
+ return null;
}
- return null;
+
+ return baseUrl() + NodeUtil.getPathIfPossible(node) + ".html";
+
}
/**
@@ -653,11 +738,21 @@
{
try
{
+ Node mainContent = MgnlUtilsDeprecatedAdapters.getMainContent();
+ if (mainContent == null)
+ {
+ return null;
+ }
+
return baseUrl()
- + LinkUtil.convertUUIDtoURI(MgnlContext.getAggregationState().getMainContent().getUUID(), MgnlContext
+ + LinkUtil.convertUUIDtoURI(mainContent.getIdentifier(), MgnlContext
.getAggregationState()
.getRepository());
}
+ catch (RepositoryException e)
+ {
+ log.warn("Error generating link", e);
+ }
catch (LinkException e)
{
log.warn("Error generating link", e);
@@ -694,15 +789,20 @@
* @param list the list to be converted
* @return a collection with the user's content
*/
- public static List<NodeMapWrapper> convertToCollection(List<Content> list)
+ @Deprecated
+ public static List<ContentMap> convertToCollection(List<Object> list)
{
- List<NodeMapWrapper> itemsList = new ArrayList<NodeMapWrapper>();
- Collection<Content> result = list;
- for (Content content : result)
+ List<ContentMap> result = new ArrayList<ContentMap>();
+
+ for (Object content : list)
{
- itemsList.add(new NodeMapWrapper(content, content.getHandle()));
+ ContentMap contentMap = wrapNode(MgnlUtilsDeprecatedAdapters.toNode(content));
+ if (contentMap != null)
+ {
+ result.add(contentMap);
+ }
}
- return itemsList;
+ return result;
}
/**
@@ -711,16 +811,34 @@
* @param title
* @return
*/
- public static Boolean hasChildWithTitle(Content content, String title)
+ public static Boolean hasChildWithTitle(Object content, String title)
{
- Collection<Content> children = content.getChildren();
- for (Content currentChild : children)
+
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+
+ if (node == null)
{
- if (currentChild.getTitle() != null && currentChild.getTitle().equalsIgnoreCase(title))
+ return false;
+ }
+ try
+ {
+ NodeIterator children = node.getNodes();
+
+ while (children.hasNext())
{
- return true;
+ Node child = (Node) children.next();
+
+ if (child.hasProperty("title")
+ && StringUtils.equalsIgnoreCase(child.getProperty("title").getString(), title))
+ {
+ return true;
+ }
}
}
+ catch (RepositoryException e)
+ {
+ log.debug(e.getMessage());
+ }
return false;
}
@@ -731,9 +849,38 @@
* @param contentType
* @return
*/
- public static Collection<Content> contentChildrenOfType(Content content, String contentType)
+ public static Collection<ContentMap> contentChildrenOfType(Object content, String contentType)
{
- return content.getChildren(contentType);
+
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(content);
+ if (node == null)
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ Iterable<Node> nodes;
+ try
+ {
+ nodes = NodeUtil.getNodes(node, contentType);
+ }
+ catch (RepositoryException e)
+ {
+ log.debug(e.getMessage());
+ return Collections.EMPTY_LIST;
+ }
+ Iterator<Node> iterator = nodes.iterator();
+
+ Collection<ContentMap> result = new ArrayList<ContentMap>();
+ while (iterator.hasNext())
+ {
+ ContentMap contentMap = wrapNode(iterator.next());
+ if (contentMap != null)
+ {
+ result.add(contentMap);
+ }
+ }
+
+ return result;
}
/**
@@ -830,15 +977,29 @@
* @param obj
* @param repo
* @return
+ * @deprecated, use node()
*/
- public static Content content(Object obj, String repo)
+ @Deprecated
+ public static ContentMap content(Object obj, String repo)
{
+
+ return node(obj, repo);
+ }
+
+ /**
+ * @param obj
+ * @param repo
+ * @return
+ */
+ public static ContentMap node(Object obj, String repo)
+ {
+
if (obj == null)
{
return null;
}
- Content content = null;
+ ContentMap content = null;
if (obj instanceof String)
{
@@ -849,19 +1010,19 @@
return null;
}
- HierarchyManager hm = MgnlContext.getHierarchyManager(repo);
try
{
+ Session session = MgnlContext.getJCRSession(repo);
if (identifier.startsWith("/"))
{
- if (hm.isExist(identifier))
+ if (session.nodeExists(identifier))
{
- content = hm.getContent(identifier);
+ content = wrapNode(session.getNode(identifier));
}
}
else
{
- content = hm.getContentByUUID(StringUtils.trim(identifier));
+ content = wrapNode(session.getNodeByIdentifier(StringUtils.trim(identifier)));
}
}
catch (ItemNotFoundException e)
@@ -873,42 +1034,15 @@
log.error(e.getClass().getName() + " getting node \"" + identifier + "\"", e);
}
}
- else if (obj instanceof Content)
+ else
{
- content = (Content) obj;
+ content = wrapNode(MgnlUtilsDeprecatedAdapters.toNode(content));
}
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;
- }
-
- /**
* Get a user property calling MgnlContext.getUser().getProperty(property)
* @param property property name
* @return
@@ -972,29 +1106,33 @@
*/
public static String pagePropertyInherited(String property)
{
- Content content = MgnlContext.getAggregationState().getMainContent();
+ Node node = MgnlUtilsDeprecatedAdapters.getMainContent();
try
{
- while (content.getLevel() >= 1)
+ while (node.getDepth() >= 1)
{
- String value = content.getNodeData(property).getString();
+ if (node.hasProperty(property))
+ {
- if (!StringUtils.isEmpty(value))
- {
- return value;
+ String value = node.getProperty(property).getString();
+
+ if (!StringUtils.isEmpty(value))
+ {
+ return value;
+ }
+
}
-
- content = content.getParent();
+ node = node.getParent();
}
}
catch (RepositoryException e)
{
- log.warn(e.getClass().getName()
- + " caught while reading property "
- + property
- + " from "
- + MgnlContext.getAggregationState().getMainContent().getHandle());
+ log.warn("{} caught while reading property {} from {}: {}", new Object[]{
+ e.getClass().getName(),
+ property,
+ NodeUtil.getPathIfPossible(MgnlUtilsDeprecatedAdapters.getMainContent()),
+ e.getMessage() });
}
return null;
@@ -1004,12 +1142,9 @@
* Sets the given content as the active page, calling MgnlContext.getAggregationState().setCurrentContent)
* @param content current content to set
*/
- public static void setActivePage(Content content)
+ public static void setActivePage(Object content)
{
- if (content != null)
- {
- MgnlContext.getAggregationState().setCurrentContent(content);
- }
+ MgnlUtilsDeprecatedAdapters.setCurrentContent(content);
}
/**
@@ -1018,7 +1153,13 @@
*/
public static boolean canEdit()
{
- return NodeUtil.isGranted(MgnlContext.getAggregationState().getMainContent().getJCRNode(), Permission.SET);
+ Node mainContent = MgnlUtilsDeprecatedAdapters.getMainContent();
+
+ if (mainContent != null)
+ {
+ return NodeUtil.isGranted(mainContent, Permission.SET);
+ }
+ return false;
}
/**
@@ -1077,27 +1218,28 @@
* Returns the current active page (can be set using the loadPage tag).
* @return current page
*/
- public static Content currentPage()
+ public static ContentMap currentPage()
{
- return MgnlContext.getAggregationState().getCurrentContent();
+ return wrapNode(MgnlUtilsDeprecatedAdapters.getCurrentContent());
}
/**
* Returns the main loaded page (doesn't change when using the loadPage tag).
* @return loaded page
*/
- public static Content mainPage()
+ public static ContentMap mainPage()
{
- return MgnlContext.getAggregationState().getMainContent();
+ return wrapNode(MgnlUtilsDeprecatedAdapters.getMainContent());
+
}
/**
* Returns the current paragraph.
* @return current paragraph
*/
- public static Content currentParagraph()
+ public static ContentMap currentParagraph()
{
- return MgnlContext.getAggregationState().getCurrentContent();
+ return wrapNode(MgnlUtilsDeprecatedAdapters.getCurrentContent());
}
/**
@@ -1107,7 +1249,7 @@
*/
public static String systemProperty(String key)
{
- return SystemProperty.getProperty(key);
+ return MgnlUtilsDeprecatedAdapters.getProperty(key);
}
/**
@@ -1116,7 +1258,7 @@
*/
public static Properties systemProperties()
{
- return SystemProperty.getProperties();
+ return MgnlUtilsDeprecatedAdapters.systemProperties();
}
/**
@@ -1135,12 +1277,29 @@
*/
public static boolean isEditMode()
{
- final AggregationState aggregationState = MgnlContext.getAggregationState();
- Content activePage = aggregationState.getMainContent();
- return ServerConfiguration.getInstance().isAdmin()
- && !aggregationState.isPreviewMode()
- && activePage != null
- && activePage.isGranted(Permission.SET);
+ Node activePage = MgnlUtilsDeprecatedAdapters.getMainContent();
+ if (activePage == null)
+ {
+ return false;
+ }
+
+ AggregationState aggregationState = MgnlUtilsDeprecatedAdapters.getAggregationStateIfAvailable();
+
+ if (aggregationState == null)
+ {
+ return false;
+ }
+
+ try
+ {
+ return Components.getComponent(ServerConfiguration.class).isAdmin()
+ && !aggregationState.isPreviewMode()
+ && PermissionUtil.isGranted(activePage, Permission.SET);
+ }
+ catch (RepositoryException e)
+ {
+ return false;
+ }
}
/**
@@ -1163,28 +1322,28 @@
*/
public static boolean firstPageWithNode(String nodeName, int minlevel)
{
- Content actpage = MgnlContext.getAggregationState().getCurrentContent();
- if (actpage == null)
+ Node node = MgnlUtilsDeprecatedAdapters.getCurrentContent();
+ if (node == null)
{
- actpage = MgnlContext.getAggregationState().getMainContent();
+ node = MgnlUtilsDeprecatedAdapters.getMainContent();
}
try
{
- while (actpage.getLevel() > minlevel)
+ while (node.getDepth() > minlevel)
{
- actpage = actpage.getParent();
+ node = node.getParent();
- if (actpage.hasContent(nodeName))
+ if (node.hasNode(nodeName))
{
- MgnlContext.getAggregationState().setCurrentContent(actpage);
+ MgnlUtilsDeprecatedAdapters.setCurrentContent(node);
return true;
}
}
}
catch (RepositoryException e)
{
- log.error("Error looking for node " + nodeName + " in " + actpage.getHandle(), e);
+ log.error("Error looking for node " + nodeName + " in " + NodeUtil.getPathIfPossible(node), e);
}
return false;
@@ -1193,12 +1352,27 @@
/**
* Function to iterate over a node Data that has "checkbox" as control type, for example. See
* http://jira.magnolia-cms.com/browse/MAGNOLIA-1969
+ * @deprecated use standard jcr Node methods, based on iterators instead of collections
*/
- public static Collection<NodeData> nodeDataIterator(Content c, String collection)
+ @Deprecated
+ public static Collection<Property> nodeDataIterator(Object c, String collection)
{
+ Node node = MgnlUtilsDeprecatedAdapters.toNode(c);
try
{
- return c.getContent(collection).getNodeDataCollection();
+ if (node.hasNode(collection))
+ {
+ return Collections.EMPTY_LIST;
+ }
+ PropertyIterator properties = node.getNode(collection).get...
[truncated message content] |
|
From: <fg...@us...> - 2013-10-19 12:13:53
|
Revision: 4386
http://openutils.svn.sourceforge.net/openutils/?rev=4386&view=rev
Author: fgiust
Date: 2013-10-19 12:13:50 +0000 (Sat, 19 Oct 2013)
Log Message:
-----------
samples, work in progress
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/setup/MgnlUtilsModuleVersionHandler.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap.min.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/js/bootstrap.js
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/js/bootstrap.min.js
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-ftl.xml
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-jsp.xml
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/website.sample-magnoliautils.xml
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/sample-magnoliautils.jsp
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap-theme.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap-theme.min.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/fonts/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/fonts/glyphicons-halflings-regular.eot
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/fonts/glyphicons-halflings-regular.svg
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/fonts/glyphicons-halflings-regular.ttf
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/fonts/glyphicons-halflings-regular.woff
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/js/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/samples-utils/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/samples-utils/sample-magnoliautils.ftl
Removed Paths:
-------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap-responsive.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap-responsive.min.css
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/css/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/img/
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/js/
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/setup/MgnlUtilsModuleVersionHandler.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/setup/MgnlUtilsModuleVersionHandler.java 2013-10-19 12:13:16 UTC (rev 4385)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/setup/MgnlUtilsModuleVersionHandler.java 2013-10-19 12:13:50 UTC (rev 4386)
@@ -19,9 +19,25 @@
package it.openutils.mgnlutils.setup;
+import info.magnolia.cms.core.Path;
+import info.magnolia.init.MagnoliaConfigurationProperties;
import info.magnolia.module.DefaultModuleVersionHandler;
+import info.magnolia.module.InstallContext;
+import info.magnolia.module.delta.AbstractTask;
+import info.magnolia.module.delta.Task;
+import info.magnolia.module.delta.TaskExecutionException;
+import info.magnolia.module.files.FileExtractionLogger;
+import info.magnolia.module.files.FileExtractor;
+import info.magnolia.module.files.MD5CheckingFileExtractor;
+import info.magnolia.objectfactory.Components;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang.StringUtils;
+
+
/**
* @author fgiust
* @version $Id$
@@ -29,4 +45,74 @@
public class MgnlUtilsModuleVersionHandler extends DefaultModuleVersionHandler
{
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected List<Task> getStartupTasks(InstallContext installContext)
+ {
+ List<Task> tasks = new ArrayList<Task>();
+
+ if (Components.getComponent(MagnoliaConfigurationProperties.class).getBooleanProperty(
+ "magnolia.bootstrap.samples"))
+ {
+ tasks.add(new FilesExtractionTask());
+ }
+
+ return tasks;
+ }
+
+ public static class FilesExtractionTask extends AbstractTask
+ {
+
+ public FilesExtractionTask()
+ {
+ super("Files extraction", "Extracts files to webapp root.");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void execute(final InstallContext ctx) throws TaskExecutionException
+ {
+ final MD5CheckingFileExtractor extractor = new MD5CheckingFileExtractor(new FileExtractionLogger()
+ {
+
+ public void error(String message)
+ {
+ ctx.warn(message);
+ }
+ }, ctx.getConfigHierarchyManager());
+ try
+ {
+ extractor.extractFiles(new FileExtractor.Transformer()
+ {
+
+ public String accept(String resourcePath)
+ {
+ if (!FilesExtractionTask.this.accept(resourcePath))
+ {
+ return null;
+ }
+ final String relTargetPath = StringUtils.removeStart(resourcePath, "/mgnl-files/");
+ return Path.getAbsoluteFileSystemPath(relTargetPath);
+ }
+
+ });
+ }
+ catch (IOException e)
+ {
+ throw new TaskExecutionException("Could not extract files for module "
+ + ctx.getCurrentModuleDefinition()
+ + ": "
+ + e.getMessage(), e);
+ }
+ }
+
+ protected boolean accept(String resource)
+ {
+ return StringUtils.contains(resource, "/samples/sample-magnoliautils");
+ }
+ }
+
}
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-ftl.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-ftl.xml (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-ftl.xml 2013-10-19 12:13:50 UTC (rev 4386)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sv:node sv:name="sample-magnoliautils-ftl" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>952478d8-67d5-4f76-b126-19c06bf2b2de</sv:value>
+ </sv:property>
+ <sv:property sv:name="class" sv:type="String">
+ <sv:value>info.magnolia.module.samples.templates.SampleTemplate</sv:value>
+ </sv:property>
+ <sv:property sv:name="i18nBasename" sv:type="String">
+ <sv:value>info.magnolia.module.samples.messages</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="renderType" sv:type="String">
+ <sv:value>freemarker</sv:value>
+ </sv:property>
+ <sv:property sv:name="templateScript" sv:type="String">
+ <sv:value>/samples-utils/sample-magnoliautils.ftl</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Sample Magnoliautils (freemarker)</sv:value>
+ </sv:property>
+ <sv:property sv:name="titleSize" sv:type="String">
+ <sv:value>1</sv:value>
+ </sv:property>
+ <sv:property sv:name="visible" sv:type="String">
+ <sv:value>true</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2008-09-23T16:56:46.344+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T22:49:40.002+02:00</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="parameters">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>684b9f09-f89c-4e23-b2cb-a3a1de697c01</sv:value>
+ </sv:property>
+ <sv:property sv:name="dummy" sv:type="String">
+ <sv:value>This parameter has been set in the template definition</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2009-01-15T12:21:10.608+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T22:49:23.238+02:00</sv:value>
+ </sv:property>
+ </sv:node>
+ </sv:node>
+</sv:node>
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-ftl.xml
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-jsp.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-jsp.xml (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-jsp.xml 2013-10-19 12:13:50 UTC (rev 4386)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sv:node sv:name="sample-magnoliautils-jsp" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>2ec97963-d0ab-4e59-87cd-7ceefc0fc59d</sv:value>
+ </sv:property>
+ <sv:property sv:name="class" sv:type="String">
+ <sv:value>info.magnolia.module.samples.templates.SampleTemplate</sv:value>
+ </sv:property>
+ <sv:property sv:name="i18nBasename" sv:type="String">
+ <sv:value>info.magnolia.module.samples.messages</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="renderType" sv:type="String">
+ <sv:value>jsp</sv:value>
+ </sv:property>
+ <sv:property sv:name="templateScript" sv:type="String">
+ <sv:value>/samples/sample-magnoliautils.jsp</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Sample Magnoliautils (jsp)</sv:value>
+ </sv:property>
+ <sv:property sv:name="titleSize" sv:type="String">
+ <sv:value>1</sv:value>
+ </sv:property>
+ <sv:property sv:name="visible" sv:type="String">
+ <sv:value>true</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2008-09-23T16:56:46.344+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T22:49:10.765+02:00</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="parameters">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>33f0a097-9df7-4dc9-a328-0a92ee3a0e7d</sv:value>
+ </sv:property>
+ <sv:property sv:name="dummy" sv:type="String">
+ <sv:value>This parameter has been set in the template definition</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2009-01-15T12:21:10.608+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T22:48:19.950+02:00</sv:value>
+ </sv:property>
+ </sv:node>
+ </sv:node>
+</sv:node>
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/config.modules.mgnlutils.templates.pages.sample-magnoliautils-jsp.xml
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/website.sample-magnoliautils.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/website.sample-magnoliautils.xml (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/website.sample-magnoliautils.xml 2013-10-19 12:13:50 UTC (rev 4386)
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sv:node sv:name="sample-magnoliautils" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:content</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>9854e9ac-0cde-4a3a-b019-e95a8634207c</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Magnolia Utils</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:10:07.718+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T23:33:04.789+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:template" sv:type="String">
+ <sv:value>mgnlutils:pages/sample-magnoliautils-jsp</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="sample1">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:content</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>ce2e0ee4-97bc-4a28-ab36-9283dd39af2e</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Magnolia Utils Test page 1</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:10:07.718+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T23:33:13.055+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:template" sv:type="String">
+ <sv:value>mgnlutils:pages/sample-magnoliautils-ftl</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="newcontent">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>7766ee9e-bcbe-4f8f-951f-07a57823f03c</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:11:22.602+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2010-01-18T14:11:22.618+01:00</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="0">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>ef4fe54e-a6f9-4ab6-980a-2395a4a6e194</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="text" sv:type="String">
+ <sv:value><p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever si</p></sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Paragraph test</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:11:22.618+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2010-01-18T14:11:22.618+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:template" sv:type="String">
+ <sv:value>samplesHowToJSP</sv:value>
+ </sv:property>
+ </sv:node>
+ <sv:node sv:name="text_files">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:contentNode</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>7c158483-8813-47b5-b176-643694dbc857</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:11:22.618+01:00</sv:value>
+ </sv:property>
+ </sv:node>
+ </sv:node>
+ </sv:node>
+ </sv:node>
+ <sv:node sv:name="sample1b">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:content</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>f064acbd-0eb1-44f8-b2a4-f561dd49c805</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Magnolia Utils Test page 1b</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:10:07.718+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T23:33:25.686+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:template" sv:type="String">
+ <sv:value>mgnlutils:pages/sample-magnoliautils-jsp</sv:value>
+ </sv:property>
+ </sv:node>
+ </sv:node>
+ </sv:node>
+ <sv:node sv:name="sample2">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:content</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true">
+ <sv:value>mix:lockable</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:uuid" sv:type="String">
+ <sv:value>e1285f01-769e-4791-b9de-afcb8771fdc8</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="title" sv:type="String">
+ <sv:value>Magnolia Utils Test page 2</sv:value>
+ </sv:property>
+ <sv:node sv:name="MetaData">
+ <sv:property sv:name="jcr:primaryType" sv:type="Name">
+ <sv:value>mgnl:metaData</sv:value>
+ </sv:property>
+ <sv:property sv:name="jcr:createdBy" sv:type="String">
+ <sv:value>admin</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:activated" sv:type="Boolean">
+ <sv:value>false</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:authorid" sv:type="String">
+ <sv:value>superuser</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:creationdate" sv:type="Date">
+ <sv:value>2010-01-18T14:10:07.718+01:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:lastmodified" sv:type="Date">
+ <sv:value>2013-10-13T23:33:17.839+02:00</sv:value>
+ </sv:property>
+ <sv:property sv:name="mgnl:template" sv:type="String">
+ <sv:value>mgnlutils:pages/sample-magnoliautils-jsp</sv:value>
+ </sv:property>
+ </sv:node>
+ </sv:node>
+</sv:node>
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-bootstrap-samples/mgnlutils/website.sample-magnoliautils.xml
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/sample-magnoliautils.jsp
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/sample-magnoliautils.jsp (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/sample-magnoliautils.jsp 2013-10-19 12:13:50 UTC (rev 4386)
@@ -0,0 +1,355 @@
+<jsp:root version="2.1" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core"
+ xmlns:fmt="http://java.sun.com/jsp/jstl/fmt" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:cms="http://magnolia-cms.com/taglib...
[truncated message content] |
|
From: <fg...@us...> - 2013-10-19 20:58:39
|
Revision: 4390
http://openutils.svn.sourceforge.net/openutils/?rev=4390&view=rev
Author: fgiust
Date: 2013-10-19 20:58:36 +0000 (Sat, 19 Oct 2013)
Log Message:
-----------
new renderExceptionHandler
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/magnolia/mgnlutils.xml
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/ClassicRenderExceptionHandler.java
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/RuntimeRenderException.java
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/ClassicRenderExceptionHandler.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/ClassicRenderExceptionHandler.java (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/ClassicRenderExceptionHandler.java 2013-10-19 20:58:36 UTC (rev 4390)
@@ -0,0 +1,125 @@
+/**
+ *
+ * Generic utilities for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnlutils.html)
+ * Copyright(C) 2009-2012, Openmind S.r.l. http://www.openmindonline.it
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package it.openutils.mgnlutils.util;
+
+import info.magnolia.cms.beans.config.ServerConfiguration;
+import info.magnolia.context.MgnlContext;
+import info.magnolia.init.MagnoliaConfigurationProperties;
+import info.magnolia.rendering.context.RenderingContext;
+import info.magnolia.rendering.engine.RenderException;
+import info.magnolia.rendering.engine.RenderExceptionHandler;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+import javax.inject.Inject;
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Simple exception renderer that avoid the ugly yellow box that popped up in magnolia 4.5. Just let the exception flow
+ * up to tomcat, which usually shows a more meaningful error page.
+ * @author fgiust
+ * @version $Id$
+ */
+public class ClassicRenderExceptionHandler implements RenderExceptionHandler
+{
+
+ private static Logger log = LoggerFactory.getLogger(ClassicRenderExceptionHandler.class);
+
+ private ServerConfiguration serverConfiguration;
+
+ private MagnoliaConfigurationProperties configurationProperties;
+
+ @Inject
+ public ClassicRenderExceptionHandler(ServerConfiguration config)
+ {
+ this.serverConfiguration = config;
+ }
+
+ @Inject
+ public void setConfigurationProperties(MagnoliaConfigurationProperties configurationProperties)
+ {
+ this.configurationProperties = configurationProperties;
+ }
+
+ @Override
+ public void handleException(RenderException renderException, RenderingContext renderingContext)
+ {
+ String path;
+ try
+ {
+ path = renderingContext.getCurrentContent().getPath();
+ }
+ catch (RepositoryException e)
+ {
+ path = "Can't read content";
+ }
+ String id = renderingContext.getRenderableDefinition().getId();
+
+ String msg = "Error while rendering ["
+ + path
+ + "] with template ["
+ + id
+ + "]: "
+ + ExceptionUtils.getMessage(renderException);
+ if (serverConfiguration.isAdmin() || configurationProperties.getBooleanProperty("magnolia.develop"))
+ {
+ log.error(msg, renderException);
+
+ throw new RuntimeRenderException(renderException);
+ }
+ else
+ {
+ log.error(msg, renderException);
+
+ try
+ {
+ PrintWriter out = getPrintWriterFor(renderingContext.getAppendable());
+ out.write("\n <!-- ");
+ out.write(msg);
+ out.write("\n-->\n");
+
+ out.flush();
+ }
+
+ catch (IOException e)
+ {
+ throw new RuntimeException("Can't log template exception.", e);
+ }
+ }
+
+ }
+
+ private PrintWriter getPrintWriterFor(Writer out)
+ {
+ return (out instanceof PrintWriter) ? (PrintWriter) out : new PrintWriter(out);
+ }
+
+ protected void inPublicMode(String msg, RenderException renderException, PrintWriter out)
+ {
+ log.error(msg, renderException);
+ }
+
+}
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/ClassicRenderExceptionHandler.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/RuntimeRenderException.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/RuntimeRenderException.java (rev 0)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/RuntimeRenderException.java 2013-10-19 20:58:36 UTC (rev 4390)
@@ -0,0 +1,37 @@
+/**
+ *
+ * Generic utilities for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnlutils.html)
+ * Copyright(C) 2009-2012, Openmind S.r.l. http://www.openmindonline.it
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package it.openutils.mgnlutils.util;
+
+import info.magnolia.rendering.engine.RenderException;
+
+
+/**
+ * Runtime version of RenderException, used to let exceptions flow up to tomcat.
+ * @author fgiust
+ * @version $Id$
+ */
+public class RuntimeRenderException extends RuntimeException
+{
+
+ public RuntimeRenderException(RenderException cause)
+ {
+ super(cause.getMessage(), cause.getCause());
+ }
+
+}
Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/util/RuntimeRenderException.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/magnolia/mgnlutils.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/magnolia/mgnlutils.xml 2013-10-19 20:58:16 UTC (rev 4389)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/magnolia/mgnlutils.xml 2013-10-19 20:58:36 UTC (rev 4390)
@@ -7,14 +7,25 @@
<class>it.openutils.mgnlutils.setup.MgnlUtilsModule</class>
<versionHandler>it.openutils.mgnlutils.setup.MgnlUtilsModuleVersionHandler</versionHandler>
<version>${project.version}</version>
+ <components>
+ <id>main</id>
+ <component>
+ <type>info.magnolia.rendering.engine.RenderExceptionHandler</type>
+ <implementation>it.openutils.mgnlutils.util.ClassicRenderExceptionHandler</implementation>
+ </component>
+ </components>
<dependencies>
<dependency>
<name>core</name>
- <version>4.5/*</version>
+ <version>4.5.11/*</version>
</dependency>
<dependency>
<name>criteria</name>
<version>5.0.1/*</version>
</dependency>
+ <dependency>
+ <name>rendering</name>
+ <version>4.5.11/*</version>
+ </dependency>
</dependencies>
</module>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|