[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