[jboss-svn-commits] JBL Code SVN: r28974 - in labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia: utils and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 18 09:32:06 EDT 2009
Author: unibrew
Date: 2009-08-18 09:32:06 -0400 (Tue, 18 Aug 2009)
New Revision: 28974
Added:
labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgPagePropertiesTab.java
Modified:
labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateDialog.java
labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateFooterDialog.java
labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateHeaderDialog.java
labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/JBossOrgUtils.java
Log:
[ORG-326] Custom theme support
Added: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgPagePropertiesTab.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgPagePropertiesTab.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgPagePropertiesTab.java 2009-08-18 13:32:06 UTC (rev 28974)
@@ -0,0 +1,33 @@
+package org.jboss.labs.magnolia.dialogs;
+
+import info.magnolia.cms.gui.dialog.DialogTab;
+import info.magnolia.cms.security.Security;
+import info.magnolia.cms.security.User;
+import info.magnolia.cms.security.UserManager;
+import info.magnolia.context.MgnlContext;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.Iterator;
+
+public class OrgPagePropertiesTab extends DialogTab {
+
+ @Override
+ public void drawHtml(Writer out) throws IOException {
+
+ UserManager um = Security.getUserManager();
+ User user = MgnlContext.getUser();
+ Collection userRoles = user.getAllGroups();
+ Iterator roles = userRoles.iterator();
+ while ( roles.hasNext() ) {
+ String roleName = (String)roles.next();
+ if (roleName.equals("jbossorgEditors")) {
+ super.drawHtml(out);
+ break;
+ }
+ }
+
+ }
+
+}
Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateDialog.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateDialog.java 2009-08-18 13:01:16 UTC (rev 28973)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateDialog.java 2009-08-18 13:32:06 UTC (rev 28974)
@@ -12,11 +12,13 @@
import java.io.IOException;
import java.io.PrintWriter;
+import javax.jcr.RepositoryException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jboss.labs.magnolia.Constants;
+import org.jboss.labs.magnolia.utils.JBossOrgUtils;
public class OrgTemplateDialog extends ConfiguredDialog {
@@ -32,9 +34,17 @@
HierarchyManager mgr = MgnlContext.getHierarchyManager(ContentRepository.WEBSITE);
+ String themeNumber ="";
+
+ try {
+ themeNumber = JBossOrgUtils.getPageProperty(this.getStorageNode(),"theme","0");
+ } catch (RepositoryException e) {
+ logger.error(e);
+ }
+
try {
Content c = mgr.getContent(Constants.JBOSSORG_CONTENT_NODE_PATH, true, ItemType.CONTENTNODE);
- content = c.getChildByName(Constants.TEMPLATE_CONTENT_NODE);
+ content = c.getChildByName(Constants.TEMPLATE_CONTENT_NODE+getCustomThemeNumber());
} catch(Exception e) {
logger.error(e.getMessage(), e);
}
@@ -44,7 +54,8 @@
@Override
protected boolean onPreSave(SaveHandler handler) {
- handler.setPath(Constants.TEMPLATE_CONTENT_NODE_PATH);
+
+ handler.setPath(Constants.TEMPLATE_CONTENT_NODE_PATH+getCustomThemeNumber());
handler.setCreate(true);
handler.setCreationItemType(ItemType.CONTENTNODE);
@@ -71,4 +82,16 @@
}
}
+ private String getCustomThemeNumber () {
+ String themeNumber ="";
+
+ try {
+ themeNumber = JBossOrgUtils.getPageProperty(this.getStorageNode(),"theme","0");
+ } catch (RepositoryException e) {
+ logger.error(e);
+ }
+
+ return themeNumber;
+ }
+
}
Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateFooterDialog.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateFooterDialog.java 2009-08-18 13:01:16 UTC (rev 28973)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateFooterDialog.java 2009-08-18 13:32:06 UTC (rev 28974)
@@ -12,11 +12,13 @@
import java.io.IOException;
import java.io.PrintWriter;
+import javax.jcr.RepositoryException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jboss.labs.magnolia.Constants;
+import org.jboss.labs.magnolia.utils.JBossOrgUtils;
public class OrgTemplateFooterDialog extends ConfiguredDialog {
@@ -34,7 +36,7 @@
try {
Content c = mgr.getContent(Constants.JBOSSORG_CONTENT_NODE_PATH, true, ItemType.CONTENTNODE);
- content = c.getChildByName(Constants.TEMPLATE_FOOTER_CONTENT_NODE);
+ content = c.getChildByName(Constants.TEMPLATE_FOOTER_CONTENT_NODE+getCustomThemeNumber());
} catch(Exception e) {
logger.error(e.getMessage(), e);
}
@@ -44,7 +46,7 @@
@Override
protected boolean onPreSave(SaveHandler handler) {
- handler.setPath(Constants.TEMPLATE_FOOTER_CONTENT_NODE_PATH);
+ handler.setPath(Constants.TEMPLATE_FOOTER_CONTENT_NODE_PATH+getCustomThemeNumber());
handler.setCreate(true);
handler.setCreationItemType(ItemType.CONTENTNODE);
@@ -71,4 +73,16 @@
}
}
+ private String getCustomThemeNumber () {
+ String themeNumber ="";
+
+ try {
+ themeNumber = JBossOrgUtils.getPageProperty(this.getStorageNode(),"theme","0");
+ } catch (RepositoryException e) {
+ logger.error(e);
+ }
+
+ return themeNumber;
+ }
+
}
Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateHeaderDialog.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateHeaderDialog.java 2009-08-18 13:01:16 UTC (rev 28973)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/dialogs/OrgTemplateHeaderDialog.java 2009-08-18 13:32:06 UTC (rev 28974)
@@ -12,11 +12,13 @@
import java.io.IOException;
import java.io.PrintWriter;
+import javax.jcr.RepositoryException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jboss.labs.magnolia.Constants;
+import org.jboss.labs.magnolia.utils.JBossOrgUtils;
public class OrgTemplateHeaderDialog extends ConfiguredDialog {
@@ -34,7 +36,7 @@
try {
Content c = mgr.getContent(Constants.JBOSSORG_CONTENT_NODE_PATH, true, ItemType.CONTENTNODE);
- content = c.getChildByName(Constants.TEMPLATE_HEADER_CONTENT_NODE);
+ content = c.getChildByName(Constants.TEMPLATE_HEADER_CONTENT_NODE+getCustomThemeNumber());
} catch(Exception e) {
logger.error(e.getMessage(), e);
}
@@ -44,7 +46,7 @@
@Override
protected boolean onPreSave(SaveHandler handler) {
- handler.setPath(Constants.TEMPLATE_HEADER_CONTENT_NODE_PATH);
+ handler.setPath(Constants.TEMPLATE_HEADER_CONTENT_NODE_PATH+getCustomThemeNumber());
handler.setCreate(true);
handler.setCreationItemType(ItemType.CONTENTNODE);
@@ -71,4 +73,17 @@
}
}
+ private String getCustomThemeNumber () {
+ String themeNumber ="";
+
+ //try {
+ //themeNumber = JBossOrgUtils.getPageProperty(this.,"theme","0");
+ themeNumber = "0";
+ //} catch (RepositoryException e) {
+ // logger.error(e);
+ //}
+
+ return themeNumber;
+ }
+
}
Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/JBossOrgUtils.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/JBossOrgUtils.java 2009-08-18 13:01:16 UTC (rev 28973)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-paragraphs/src/main/java/org/jboss/labs/magnolia/utils/JBossOrgUtils.java 2009-08-18 13:32:06 UTC (rev 28974)
@@ -3,13 +3,19 @@
*/
package org.jboss.labs.magnolia.utils;
-import java.util.*;
-import java.text.*;
+import info.magnolia.cms.core.Content;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+
+import javax.jcr.RepositoryException;
+
/**
* Class with various auxiliary static methods.
*
* @author jchochol at redhat.com
+ * @author Ryszard Kozmik <ryszard.kozmik at jboss.com>
*
*/
public class JBossOrgUtils {
@@ -36,4 +42,53 @@
return sdf.format(date);
}
+ /**
+ * This method returns a value of a property for a given page
+ * and if this page doesn't define this property than the method
+ * searches through hierarchy of inheritance.
+ *
+ * @param pageNode page JCR node from which the property we are getting
+ * @param pathToValue JCR path to property value node inside pageNode
+ * @param defaultValue if no value will be found this value will be returned
+ * @return property value as a string
+ * @throws RepositoryException in case of internal repository problem
+ */
+ public static String getPageProperty (Content pageNode, String pathToValue, String defaultValue ) throws RepositoryException {
+
+ // if no other data will be found the returned value will be the default value
+ String propertyValue = defaultValue;
+
+ // checking whether the page has the property defined
+ if ( pageNode!=null && pageNode.hasNodeData(pathToValue) && pageNode.getNodeData(pathToValue).getString().trim().length()!=0 ) {
+ return pageNode.getNodeData(pathToValue).getString();
+ }
+
+ // checking if inheritance is turned on and if yes then searching through ancestors to find property value
+ if ( pageNode.hasNodeData("orgLayoutBody/ignoreInherit") && !pageNode.getNodeData("orgLayoutBody/ignoreInherit").getBoolean() ) {
+
+ int ancestorIdx = pageNode.getAncestors().size()-1;
+
+ while ( ancestorIdx-- > 0 ) {
+
+ Content ancestor = pageNode.getAncestor(ancestorIdx);
+
+ // if property value is defined for this ancestor then we are done
+ if ( ancestor.hasNodeData(pathToValue) && ancestor.getNodeData(pathToValue).getString().trim().length()!=0 ) {
+ propertyValue=ancestor.getNodeData(pathToValue).getString();
+ break;
+ }
+
+ // in case this ancestor ignores any further inheritance we stop checking deeper ancestors
+ if ( ancestor.getNodeData("orgLayoutBody/ignoreInherit").getString().equals("true") ) {
+ break;
+ }
+
+ }
+ } else {
+ return defaultValue;
+ }
+
+ return propertyValue;
+ }
+
}
More information about the jboss-svn-commits
mailing list