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).getProperties(); + + Collection<Property> result = new ArrayList<Property>(); + while (properties.hasNext()) + { + result.add(properties.nextProperty()); + } + + return result; } catch (RepositoryException e) { @@ -1237,7 +1411,7 @@ log.debug("Got a {} while loading level {} starting from {}: {}", new Object[]{ e.getClass().getName(), level, - node, + NodeUtil.getPathIfPossible(node), e.getMessage() }); return null; } @@ -1246,6 +1420,10 @@ private static ContentMap wrapNode(Node node) { + if (node == null) + { + return null; + } 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-17 20:30:42 UTC (rev 4153) +++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/META-INF/tld/mgnlutils.tld 2012-12-17 22:38:52 UTC (rev 4154) @@ -19,13 +19,13 @@ </example> </function> <function> - <description>Evaluate if primary node type of the associated Node of an object is a mgnl:contentNode</description> + <description>Evaluate if primary node type of the associated Node of an object is a mgnl:page</description> <name>isPage</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.lang.Boolean isPage(info.magnolia.cms.core.Content)</function-signature> + <function-signature>java.lang.Boolean isPage(java.lang.Object)</function-signature> <example> <![CDATA[ - ${mu:isPage(actpage)} + ${mu:isPage(content)} ]]> </example> </function> @@ -33,7 +33,7 @@ <description>Return the object passed or the first parent page that has content type = mgnl:content</description> <name>getPage</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.core.Content getPage(info.magnolia.cms.core.Content)</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap getPage(java.lang.Object)</function-signature> <example> <![CDATA[ ${mu:getPage(actpage)} @@ -55,7 +55,7 @@ <description>Count the nodes in a collection with a given content and the name of the collection</description> <name>countNodesInCollection</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.lang.Integer countNodesInCollection(info.magnolia.cms.core.Content, java.lang.String)</function-signature> + <function-signature>java.lang.Integer countNodesInCollection(java.lang.Object, java.lang.String)</function-signature> <example> <![CDATA[ <cms:newBar contentNodeCollectionName="newcontent" paragraph="xyz" /> @@ -67,7 +67,7 @@ <description>Count subpages with a given content</description> <name>countSubpages</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.lang.Integer countSubpages(info.magnolia.cms.core.Content)</function-signature> + <function-signature>java.lang.Integer countSubpages(java.lang.Object)</function-signature> <example> <![CDATA[ ${mu:countSubpages(actpage)} @@ -78,7 +78,7 @@ <description>Return the collection of subpages of a given page</description> <name>subpages</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.util.Collection subpages(info.magnolia.cms.core.Content)</function-signature> + <function-signature>java.util.Collection subpages(java.lang.Object)</function-signature> </function> <function> <description>Return the current user logged</description> @@ -224,7 +224,7 @@ </description> <name>pageFullUrl</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.lang.String pageFullUrl(info.magnolia.cms.core.Content)</function-signature> + <function-signature>java.lang.String pageFullUrl(java.lang.Object)</function-signature> </function> <function> <description> @@ -256,13 +256,13 @@ <description>Check if the content parameter has a child with title equal the title parameter</description> <name>hasChildWithTitle</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.lang.Boolean hasChildWithTitle(info.magnolia.cms.core.Content, java.lang.String)</function-signature> + <function-signature>java.lang.Boolean hasChildWithTitle(java.lang.Object, java.lang.String)</function-signature> </function> <function> <description>Get child nodes of specified content type and its subtypes</description> <name>contentChildrenOfType</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>java.util.Collection contentChildrenOfType(info.magnolia.cms.core.Content, java.lang.String)</function-signature> + <function-signature>java.util.Collection contentChildrenOfType(java.lang.Object, java.lang.String)</function-signature> </function> <function> <description>Creates a list of Page objects that can be used to draw a pagination bar. @@ -299,13 +299,13 @@ <description></description> <name>content</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.core.Content content(java.lang.Object, java.lang.String)</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap content(java.lang.Object, java.lang.String)</function-signature> </function> <function> <description></description> <name>node</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.util.NodeMapWrapper node(java.lang.Object, java.lang.String)</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap node(java.lang.Object, java.lang.String)</function-signature> </function> <function> <description>Get a user property calling MgnlContext.getUser().getProperty(propertyname)</description> @@ -336,7 +336,7 @@ <description>Sets the given content as the active page, calling MgnlContext.getAggregationState().setCurrentContent)</description> <name>setActivePage</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>void setActivePage(info.magnolia.cms.core.Content)</function-signature> + <function-signature>void setActivePage(java.lang.Object)</function-signature> </function> <function> <description>Get a node by its UUID, wrapped as ContentMap.</description> @@ -360,19 +360,19 @@ <description>Returns the current active page (can be set using the loadPage tag).</description> <name>currentPage</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.core.Content currentPage()</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap currentPage()</function-signature> </function> <function> <description>Returns the main loaded page (doesn't change when using the loadPage tag).</description> <name>mainPage</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.core.Content mainPage()</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap mainPage()</function-signature> </function> <function> <description>Returns the current paragraph.</description> <name>currentParagraph</name> <function-class>it.openutils.mgnlutils.el.MgnlUtilsElFunctions</function-class> - <function-signature>info.magnolia.cms.core.Content currentParagraph()</function-signature> + <function-signature>info.magnolia.jcr.util.ContentMap currentParagraph()</function-signature> </function> <function> <description>Returns the value of a system property</description> @@ -434,7 +434,7 @@ </description> <name>nodeDataIterator</name> <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-signature>java.util.Collection nodeDataIterator(java.lang.Object, 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> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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/templating-components/cms" + xmlns:cmsfn="http://magnolia-cms.com/taglib/templating-components/cmsfn" xmlns:mu="mgnlutils" + xmlns:tags="urn:jsptagdir:/WEB-INF/tags/openutils"> + <jsp:directive.page contentType="text/html; charset=UTF-8" session="false" /> +<![CDATA[ +<!DOCTYPE html> +]]> + <html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <title> ${content.title} + </title> + <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/.resources/bootstrap/3.0/css/bootstrap.min.css" /> + <style> + <![CDATA[ + code { display: block} + ]]> + </style> + <cms:init /> + </head> + <body> + <div id="main" class="container"> + <div id="header"> + <h1>Magnolia Utils Samples</h1> + </div> + <c:set var="oldcontent" value="${state.currentContent}" /> + <c:set var="contentMap" value="${content}" /> + <c:set var="node" value="${oldcontent.JCRNode}" /> + <table class="table table-striped table-bordered table-hover"> + <thead> + <tr> + <th>Property</th> + <th>Node</th> + <th>ContentMap</th> + <th>Content</th> + </tr> + </thead> + <tbody> + <tr> + <th><!-- --> + </th> + <td>${node} + </td> + <td>${contentMap} + </td> + <td>${oldcontent} + </td> + </tr> + <tr> + <th>class + </th> + <td>${node.class.name} + </td> + <td>${contentMap.class.name } + </td> + <td>${oldcontent.class.name} + </td> + </tr> + <tr> + <th>UUID + </th> + <td>${node.UUID} + </td> + <td>${contentMap.UUID} + </td> + <td>${oldcontent.UUID} + </td> + </tr> + <tr> + <th>@uuid + </th> + <td>${node['@uuid']} + </td> + <td>${contentMap['@uuid']} + </td> + <td>${oldcontent['@uuid']} + </td> + </tr> + <tr> + <th>@UUID + </th> + <td>${node['@UUID']} + </td> + <td>${contentMap['@UUID']} + </td> + <td>${oldcontent['@UUID']} + </td> + </tr> + <tr> + <th>@id + </th> + <td>${node['@id']} + </td> + <td>${contentMap['@id']} + </td> + <td>${oldcontent['@id']} + </td> + </tr> + <tr> + <th>handle + </th> + <td>${node.handle} + </td> + <td>${contentMap.handle} + </td> + <td>${oldcontent.handle} + </td> + </tr> + <tr> + <th>path + </th> + <td>${node.path} + </td> + <td>${contentMap.path} + </td> + <td>${oldcontent.path} + </td> + </tr> + <tr> + <th>@handle + </th> + <td>${node['@handle']} + </td> + <td>${contentMap['@handle']} + </td> + <td>${oldcontent['@handle']} + </td> + </tr> + <tr> + <th>@path + </th> + <td>${node['@path']} + </td> + <td>${contentMap['@path']} + </td> + <td>${oldcontent['@path']} + </td> + </tr> + <tr> + <th>@depth + </th> + <td>${node['@depth']} + </td> + <td>${contentMap['@depth']} + </td> + <td>${oldcontent['@depth']} + </td> + </tr> + <tr> + <th>@level + </th> + <td>${node['@level']} + </td> + <td>${contentMap['@level']} + </td> + <td>${oldcontent['@level']} + </td> + </tr> + <tr> + <th>level + </th> + <td>${node.level} + </td> + <td>${contentMap.level} + </td> + <td>${oldcontent.level} + </td> + </tr> + <tr> + <th>title + </th> + <td>${node.title} + </td> + <td>${contentMap.title} + </td> + <td>${oldcontent.title} + </td> + </tr> + <tr> + <th>@name + </th> + <td>${node['@name']} + </td> + <td>${contentMap['@name']} + </td> + <td>${oldcontent['@name']} + </td> + </tr> + <tr> + <th>name + </th> + <td>${node.name} + </td> + <td>${contentMap.name} + </td> + <td>${oldcontent.name} + </td> + </tr> + </tbody> + </table> + + <!-- Variable titleSize is set in the template definition, if empty sets it to 1 --> + <!-- + <cms:contentNodeIterator contentNodeCollectionName="newcontent"> + <cms:includeTemplate /> + </cms:contentNodeIterator> + <cms:newBar contentNodeCollectionName="newcontent" paragraph="samplesHowToJSP" /> + --> + <div class="well"> + <h2>firstPageWithCollection</h2> + <p>Test if exists a parent page with content in the collectionName given as parameter, if exist set the parent + page as actpage + </p> + <pre class="prettyprint"> + <code>firstPageWithCollection("newcontent")</code> + <code class="text-success">${mu:firstPageWithCollection("newcontent")}</code> + </pre> + </div> + <div class="well"> + <h2>isPage</h2> + <p>Evaluete if primary node type of the associated Node of an object is a mgnl:contentNode</p> + <pre class="prettyprint"> + <code>isPage(actpage)</code> + <code class="text-success">${mu:isPage(actpage)}</code> + </pre> + </div> + <div class="well"> + <h2>getPage</h2> + <p>Return the object passed or the first parent page that has content type = mgnl:content</p> + <pre class="prettyprint"> + <code>getPage(actpage))</code> + <code class="text-success">${mu:getPage(actpage)}</code> + </pre> + </div> + <div class="well"> + <h2>requestAttributeMap</h2> + <p>Return a map key=value of all magnolia request attributes</p> + <pre class="prettyprint"> + <code>requestAttributeMap()["javax.servlet.forward.request_uri"]</code> + <code class="text-success">${mu:requestAttributeMap()["javax.servlet.forward.request_uri"]}</code> + </pre> + </div> + <div class="well"> + <h2>countNodesInCollection</h2> + <p>Count the nodes in a collection with a given content and the name of the collection</p> + <pre class="prettyprint"> + <code>countNodesInCollection(actpage,"newcontent")</code> + <code class="text-success">${mu:countNodesInCollection(actpage,"newcontent")}</code> + </pre> + </div> + <div class="well"> + <h2>countSubpages</h2> + <p>Count subpages with a given content</p> + <pre class="prettyprint"> + <code>countSubpages(actpage)</code> + <code class="text-success">${mu:countSubpages(actpage)}</code> + </pre> + </div> + <div class="well"> + <h2>subpages</h2> + <p>Return the collection of subpages of a given page</p> + <pre class="prettyprint"> + <code>subpages(actpage)</code> + <code class="text-success">${mu:subpages(actpage)}</code> + </pre> + </div> + <div class="well"> + <h2>user</h2> + <p>Return the current user logged</p> + <pre class="prettyprint"> + <code>user()</code> + <code class="text-success">${mu:user()}</code> + </pre> + </div> + <div class="well"> + <h2>develop</h2> + <p>Test the system property 'magnolia.develop'</p> + <pre class="prettyprint"> + <code>develop()</code> + <code class="text-success">${mu:develop()}</code> + </pre> + </div> + <div class="well"> + <h2>userInRole</h2> + <p>Return true if the current user has a given role</p> + <pre class="prettyprint"> + <code>userInRole("superuser")</code> + <code class="text-success">${mu:userInRole("superuser")}</code> + </pre> + </div> + <div class="well"> + <h2>ctx</h2> + <p>Get the current context of this thread.</p> + <pre class="prettyprint"> + <code>ctx()</code> + <code class="text-success">${mu:ctx()}</code> + </pre> + </div> + <div class="well"> + <h2>contentByPath</h2> + <p>Return the content of a given path and repository</p> + <pre class="prettyprint"> + <code>contentByPath('Magnolia-Utils','website')</code> + <code class="text-success">${mu:contentByPath('Magnolia-Utils','website')}</code> + </pre> + </div> + <div class="well"> + <h2>contentByPath</h2> + <p>Return the content of a given path and repository</p> + <pre class="prettyprint"> + <code>contentByPath('Magnolia-Utils','website')</code> + <code class="text-success">${mu:contentByPath('Magnolia-Utils','website')}</code> + </pre> + </div> + <div class="well"> + <h2>encodeISO9075</h2> + <p>encode handle for a JackRabbit search</p> + <pre class="prettyprint"> + <code>encodeISO9075('Magnolia$Utils')</code> + <code class="text-success">${mu:encodeISO9075('Magnolia$Utils')}</code> + </pre> + </div> + <div class="well"> + <h2>isStringInSeparatedList</h2> + <p> splits the first argument based on the third (regex) argument and checks if the second argument is present + in the resulting array + </p> + <pre class="prettyprint"> + <code>mu:isStringInSeparatedList('xAxBxC', 'B', '[A|B]x')</code> + <code class="text-success">${mu:isStringInSeparatedList('xAxBxC', 'B', '[A|B]x')}</code> + </pre> + </div> + <div class="well"> + <h2>isLine</h2> + <p> check if the second argument string equals one line of the first argument string, same as + isStringInSeparatedList with third argument "\n" + </p> + <pre class="prettyprint"> + <code>mu:isLine('test', 'prova')</code> + <code class="text-success">${mu:isLine('test', 'prova')}</code> + </pre> + </div> + <div class="well"> + <h2>getValidatedLabel</h2> + <p>Retrieve validate label for input string</p> + <pre class="prettyprint"> + <code>mu:getValidatedLabel('validlabel!test')</code> + <code class="text-success">${mu:getValidatedLabel('validlabel!test')}</code> + </pre> + </div> + </div> + </body> + </html> +</jsp:root> \ No newline at end of file Property changes on: magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-files/samples/sample-magnoliautils.jsp ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Deleted: 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/css/bootstrap-responsive.css 2013-10-13 13:46:57 UTC (rev 4371) +++ magnoliamodules/trunk/openutils-mgnlutils/src/main/resources/mgnl-resources/bootstrap/3.0/css/bootstrap-responsive.css 2013-10-19 12:13:50 UTC (rev 4386) @@ -1,1109 +0,0 @@ -/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ - -.clearfix { - *zoom: 1; -} - -.clearfix:before, -.clearfix:after { - display: table; - line-height: 0; - content: ""; -} - -.clearfix:after { - clear: both; -} - -.hide-text { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.input-block-level { - display: block; - width: 100%; - min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -@-ms-viewport { - width: device-width; -} - -.hidden { - display: none; - visibility: hidden; -} - -.visible-phone { - display: none !important; -} - -.visible-tablet { - display: none !important; -} - -.hidden-desktop { - display: none !important; -} - -.visible-desktop { - display: inherit !important; -} - -@media (min-width: 768px) and (max-width: 979px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important ; - } - .visible-tablet { - display: inherit !important; - } - .hidden-tablet { - display: none !important; - } -} - -@media (max-width: 767px) { - .hidden-desktop { - display: inherit !important; - } - .visible-desktop { - display: none !important; - } - .visible-phone { - display: inherit !important; - } - .hidden-phone { - display: none !important; - } -} - -.visible-print { - display: none !important; -} - -@media print { - .visible-print { - display: inherit !important; - } - .hidden-print { - display: none !important; - } -} - -@media (min-width: 1200px) { - .row { - margin-left: -30px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - line-height: 0; - content: ""; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 30px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 1170px; - } - .span12 { - width: 1170px; - } - .span11 { - width: 1070px; - } - .span10 { - width: 970px; - } - .span9 { - width: 870px; - } - .span8 { - width: 770px; - } - .span7 { - width: 670px; - } - .span6 { - width: 570px; - } - .span5 { - width: 470px; - } - .span4 { - width: 370px; - } - .span3 { - width: 270px; - } - .span2 { - width: 170px; - } - .span1 { - width: 70px; - } - .offset12 { - margin-left: 1230px; - } - .offset11 { - margin-left: 1130px; - } - .offset10 { - margin-left: 1030px; - } - .offset9 { - margin-left: 930px; - } - .offset8 { - margin-left: 830px; - } - .offset7 { - margin-left: 730px; - } - .offset6 { - margin-left: 630px; - } - .offset5 { - margin-left: 530px; - } - .offset4 { - margin-left: 430px; - } - .offset3 { - margin-left: 330px; - } - .offset2 { - margin-left: 230px; - } - .offset1 { - margin-left: 130px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.564102564102564%; - *margin-left: 2.5109110747408616%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.564102564102564%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; - } - .row-fluid .span11 { - width: 91.45299145299145%; - *width: 91.39979996362975%; - } - .row-fluid .span10 { - width: 82.90598290598291%; - *width: 82.8527914166212%; - } - .row-fluid .span9 { - width: 74.35897435897436%; - *width: 74.30578286961266%; - } - .row-fluid .span8 { - width: 65.81196581196582%; - *width: 65.75877432260411%; - } - .row-fluid .span7 { - width: 57.26495726495726%; - *width: 57.21176577559556%; - } - .row-fluid .span6 { - width: 48.717948717948715%; - *width: 48.664757228587014%; - } - .row-fluid .span5 { - width: 40.17094017094017%; - *width: 40.11774868157847%; - } - .row-fluid .span4 { - width: 31.623931623931625%; - *width: 31.570740134569924%; - } - .row-fluid .span3 { - width: 23.076923076923077%; - *width: 23.023731587561375%; - } - .row-fluid .span2 { - width: 14.52991452991453%; - *width: 14.476723040552828%; - } - .row-fluid .span1 { - width: 5.982905982905983%; - *width: 5.929714493544281%; - } - .row-fluid .offset12 { - margin-left: 105.12820512820512%; - *margin-left: 105.02182214948171%; - } - .row-fluid .offset12:first-child { - margin-left: 102.56410256410257%; - *margin-left: 102.45771958537915%; - } - .row-fluid .offset11 { - margin-left: 96.58119658119658%; - *margin-left: 96.47481360247316%; - } - .row-fluid .offset11:first-child { - margin-left: 94.01709401709402%; - *margin-left: 93.91071103837061%; - } - .row-fluid .offset10 { - margin-left: 88.03418803418803%; - *margin-left: 87.92780505546462%; - } - .row-fluid .offset10:first-child { - margin-left: 85.47008547008548%; - *margin-left: 85.36370249136206%; - } - .row-fluid .offset9 { - margin-left: 79.48717948717949%; - *margin-left: 79.38079650845607%; - } - .row-fluid .offset9:first-child { - margin-left: 76.92307692307693%; - *margin-left: 76.81669394435352%; - } - .row-fluid .offset8 { - margin-left: 70.94017094017094%; - *margin-left: 70.83378796144753%; - } - .row-fluid .offset8:first-child { - margin-left: 68.37606837606839%; - *margin-left: 68.26968539734497%; - } - .row-fluid .offset7 { - margin-left: 62.393162393162385%; - *margin-left: 62.28677941443899%; - } - .row-fluid .offset7:first-child { - margin-left: 59.82905982905982%; - *margin-left: 59.72267685033642%; - } - .row-fluid .offset6 { - margin-left: 53.84615384615384%; - *margin-left: 53.739770867430444%; - } - .row-fluid .offset6:first-child { - margin-left: 51.28205128205128%; - *margin-left: 51.175668303327875%; - } - .row-fluid .offset5 { - margin-left: 45.299145299145295%; - *margin-left: 45.1927623204219%; - } - .row-fluid .offset5:first-child { - margin-left: 42.73504273504273%; - *margin-left: 42.62865975631933%; - } - .row-fluid .offset4 { - margin-left: 36.75213675213675%; - *margin-left: 36.645753773413354%; - } - .row-fluid .offset4:first-child { - margin-left: 34.18803418803419%; - *margin-left: 34.081651209310785%; - } - .row-fluid .offset3 { - margin-left: 28.205128205128204%; - *margin-left: 28.0987452264048%; - } - .row-fluid .offset3:first-child { - margin-left: 25.641025641025642%; - *margin-left: 25.53464266230224%; - } - .row-fluid .offset2 { - margin-left: 19.65811965811966%; - *margin-left: 19.551736679396257%; - } - .row-fluid .offset2:first-child { - margin-left: 17.094017094017094%; - *margin-left: 16.98763411529369%; - } - .row-fluid .offset1 { - margin-left: 11.11111111111111%; - *margin-left: 11.004728132387708%; - } - .row-fluid .offset1:first-child { - margin-left: 8.547008547008547%; - *margin-left: 8.440625568285142%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 30px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 1156px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 1056px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 956px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 856px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 756px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 656px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 556px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 456px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 356px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 256px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 156px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 56px; - } - .thumbnails { - margin-left: -30px; - } - .thumbnails > li { - margin-left: 30px; - } - .row-fluid .thumbnails { - margin-left: 0; - } -} - -@media (min-width: 768px) and (max-width: 979px) { - .row { - margin-left: -20px; - *zoom: 1; - } - .row:before, - .row:after { - display: table; - line-height: 0; - content: ""; - } - .row:after { - clear: both; - } - [class*="span"] { - float: left; - min-height: 1px; - margin-left: 20px; - } - .container, - .navbar-static-top .container, - .navbar-fixed-top .container, - .navbar-fixed-bottom .container { - width: 724px; - } - .span12 { - width: 724px; - } - .span11 { - width: 662px; - } - .span10 { - width: 600px; - } - .span9 { - width: 538px; - } - .span8 { - width: 476px; - } - .span7 { - width: 414px; - } - .span6 { - width: 352px; - } - .span5 { - width: 290px; - } - .span4 { - width: 228px; - } - .span3 { - width: 166px; - } - .span2 { - width: 104px; - } - .span1 { - width: 42px; - } - .offset12 { - margin-left: 764px; - } - .offset11 { - margin-left: 702px; - } - .offset10 { - margin-left: 640px; - } - .offset9 { - margin-left: 578px; - } - .offset8 { - margin-left: 516px; - } - .offset7 { - margin-left: 454px; - } - .offset6 { - margin-left: 392px; - } - .offset5 { - margin-left: 330px; - } - .offset4 { - margin-left: 268px; - } - .offset3 { - margin-left: 206px; - } - .offset2 { - margin-left: 144px; - } - .offset1 { - margin-left: 82px; - } - .row-fluid { - width: 100%; - *zoom: 1; - } - .row-fluid:before, - .row-fluid:after { - display: table; - line-height: 0; - content: ""; - } - .row-fluid:after { - clear: both; - } - .row-fluid [class*="span"] { - display: block; - float: left; - width: 100%; - min-height: 30px; - margin-left: 2.7624309392265194%; - *margin-left: 2.709239449864817%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid [class*="span"]:first-child { - margin-left: 0; - } - .row-fluid .controls-row [class*="span"] + [class*="span"] { - margin-left: 2.7624309392265194%; - } - .row-fluid .span12 { - width: 100%; - *width: 99.94680851063829%; - } - .row-fluid .span11 { - width: 91.43646408839778%; - *width: 91.38327259903608%; - } - .row-fluid .span10 { - width: 82.87292817679558%; - *width: 82.81973668743387%; - } - .row-fluid .span9 { - width: 74.30939226519337%; - *width: 74.25620077583166%; - } - .row-fluid .span8 { - width: 65.74585635359117%; - *width: 65.69266486422946%; - } - .row-fluid .span7 { - width: 57.18232044198895%; - *width: 57.12912895262725%; - } - .row-fluid .span6 { - width: 48.61878453038674%; - *width: 48.56559304102504%; - } - .row-fluid .span5 { - width: 40.05524861878453%; - *width: 40.00205712942283%; - } - .row-fluid .span4 { - width: 31.491712707182323%; - *width: 31.43852121782062%; - } - .row-fluid .span3 { - width: 22.92817679558011%; - *width: 22.87498530621841%; - } - .row-fluid .span2 { - width: 14.3646408839779%; - *width: 14.311449394616199%; - } - .row-fluid .span1 { - width: 5.801104972375691%; - *width: 5.747913483013988%; - } - .row-fluid .offset12 { - margin-left: 105.52486187845304%; - *margin-left: 105.41847889972962%; - } - .row-fluid .offset12:first-child { - margin-left: 102.76243093922652%; - *margin-left: 102.6560479605031%; - } - .row-fluid .offset11 { - margin-left: 96.96132596685082%; - *margin-left: 96.8549429881274%; - } - .row-fluid .offset11:first-child { - margin-left: 94.1988950276243%; - *margin-left: 94.09251204890089%; - } - .row-fluid .offset10 { - margin-left: 88.39779005524862%; - *margin-left: 88.2914070765252%; - } - .row-fluid .offset10:first-child { - margin-left: 85.6353591160221%; - *margin-left: 85.52897613729868%; - } - .row-fluid .offset9 { - margin-left: 79.8342541436464%; - *margin-left: 79.72787116492299%; - } - .row-fluid .offset9:first-child { - margin-left: 77.07182320441989%; - *margin-left: 76.96544022569647%; - } - .row-fluid .offset8 { - margin-left: 71.2707182320442%; - *margin-left: 71.16433525332079%; - } - .row-fluid .offset8:first-child { - margin-left: 68.50828729281768%; - *margin-left: 68.40190431409427%; - } - .row-fluid .offset7 { - margin-left: 62.70718232044199%; - *margin-left: 62.600799341718584%; - } - .row-fluid .offset7:first-child { - margin-left: 59.94475138121547%; - *margin-left: 59.838368402492065%; - } - .row-fluid .offset6 { - margin-left: 54.14364640883978%; - *margin-left: 54.037263430116376%; - } - .row-fluid .offset6:first-child { - margin-left: 51.38121546961326%; - *margin-left: 51.27483249088986%; - } - .row-fluid .offset5 { - margin-left: 45.58011049723757%; - *margin-left: 45.47372751851417%; - } - .row-fluid .offset5:first-child { - margin-left: 42.81767955801105%; - *margin-left: 42.71129657928765%; - } - .row-fluid .offset4 { - margin-left: 37.01657458563536%; - *margin-left: 36.91019160691196%; - } - .row-fluid .offset4:first-child { - margin-left: 34.25414364640884%; - *margin-left: 34.14776066768544%; - } - .row-fluid .offset3 { - margin-left: 28.45303867403315%; - *margin-left: 28.346655695309746%; - } - .row-fluid .offset3:first-child { - margin-left: 25.69060773480663%; - *margin-left: 25.584224756083227%; - } - .row-fluid .offset2 { - margin-left: 19.88950276243094%; - *margin-left: 19.783119783707537%; - } - .row-fluid .offset2:first-child { - margin-left: 17.12707182320442%; - *margin-left: 17.02068884448102%; - } - .row-fluid .offset1 { - margin-left: 11.32596685082873%; - *margin-left: 11.219583872105325%; - } - .row-fluid .offset1:first-child { - margin-left: 8.56353591160221%; - *margin-left: 8.457152932878806%; - } - input, - textarea, - .uneditable-input { - margin-left: 0; - } - .controls-row [class*="span"] + [class*="span"] { - margin-left: 20px; - } - input.span12, - textarea.span12, - .uneditable-input.span12 { - width: 710px; - } - input.span11, - textarea.span11, - .uneditable-input.span11 { - width: 648px; - } - input.span10, - textarea.span10, - .uneditable-input.span10 { - width: 586px; - } - input.span9, - textarea.span9, - .uneditable-input.span9 { - width: 524px; - } - input.span8, - textarea.span8, - .uneditable-input.span8 { - width: 462px; - } - input.span7, - textarea.span7, - .uneditable-input.span7 { - width: 400px; - } - input.span6, - textarea.span6, - .uneditable-input.span6 { - width: 338px; - } - input.span5, - textarea.span5, - .uneditable-input.span5 { - width: 276px; - } - input.span4, - textarea.span4, - .uneditable-input.span4 { - width: 214px; - } - input.span3, - textarea.span3, - .uneditable-input.span3 { - width: 152px; - } - input.span2, - textarea.span2, - .uneditable-input.span2 { - width: 90px; - } - input.span1, - textarea.span1, - .uneditable-input.span1 { - width: 28px; - } -} - -@media (max-width: 767px) { - body { - padding-right: 20px; - padding-left: 20px; - } - .navbar-fixed-top, - .navbar-fixed-bottom, - .navbar-static-top { - margin-right: -20px; - margin-left: -20px; - } - .container-fluid { - padding: 0; - } - .dl-horizontal dt { - float: none; - width: auto; - clear: none; - text-align: left; - } - .dl-horizontal dd { - margin-left: 0; - } - .container { - width: auto; - } - .row-fluid { - width: 100%; - } - .row, - .thumbnails { - margin-left: 0; - } - .thumbnails > li { - float: none; - margin-left: 0; - } - [class*="span"], - .uneditable-input[class*="span"], - .row-fluid [class*="span"] { - display: block; - float: none; - width: 100%; - margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .span12, - .row-fluid .span12 { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .row-fluid ... [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. |