You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sh...@apache.org on 2011/08/13 19:42:20 UTC

svn commit: r1157397 [1/2] - in /roller/branches/roller_mobile: weblogger-business/src/main/java/org/apache/roller/weblogger/business/ weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/ weblogger-business/src/main/java/org/apach...

Author: shelan
Date: Sat Aug 13 17:42:17 2011
New Revision: 1157397

URL: http://svn.apache.org/viewvc?rev=1157397&view=rev
Log:
Adding changes of new design change-one type of theme with different types of template codes

Added:
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplateCode.java
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/weblog-mobile.vm
Removed:
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/
Modified:
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeTemplate.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataParser.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplate.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogCustomTheme.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogSharedTheme.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticTemplate.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticThemeTemplate.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Template.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Theme.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/ThemeTemplate.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplateCode.java
    roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
    roller/branches/roller_mobile/weblogger-business/src/main/resources/sql/createdb.vm
    roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogPageTest.java
    roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogTemplateCodeTest.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/RendererManager.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblogBean.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEditBean.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
    roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Templates.jsp
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/theme.xml
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/brushedmetal/theme.xml
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/fauxcoly/theme.xml
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/frontpage/theme.xml
    roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/sotto/theme.xml

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java Sat Aug 13 17:42:17 2011
@@ -179,13 +179,13 @@ public interface WeblogManager {
     /**
      * Get website's page by link.
      */
-    public List<WeblogTemplate> getPagesByLink(Weblog w, String p)
+    public WeblogTemplate getPageByLink(Weblog w, String p)
         throws WebloggerException;
 
     /**
      * Get template code by Type.
      */
-    public WeblogTemplateCode getTemplateCodeByType(String template, String type)
+    public WeblogTemplateCode getTemplateCodeByType(String templateName, String type)
             throws WebloggerException ;
 
     /**

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java Sat Aug 13 17:42:17 2011
@@ -543,7 +543,7 @@ public class JPAWeblogManagerImpl implem
     /**
      * Use JPA directly because Weblogger's Query API does too much allocation.
      */
-    public List<WeblogTemplate> getPagesByLink(Weblog website, String pagelink)
+    public WeblogTemplate getPageByLink(Weblog website, String pagelink)
     throws WebloggerException {
         
         if (website == null)
@@ -556,7 +556,7 @@ public class JPAWeblogManagerImpl implem
         query.setParameter(1, website);
         query.setParameter(2, pagelink);
         try {
-            return (List<WeblogTemplate>)query.getResultList();
+            return (WeblogTemplate) query.getSingleResult();
         } catch (NoResultException e) {
             return null;
         }
@@ -609,7 +609,7 @@ public class JPAWeblogManagerImpl implem
 
     public WeblogTemplateCode getTemplateCodeByType(String templateId, String type) throws WebloggerException{
          if(templateId == null)
-             throw new WebloggerException("Template Id is null");
+             throw new WebloggerException("Template Name is null");
 
         if(type == null){
             throw  new WebloggerException("Type is null");

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java Sat Aug 13 17:42:17 2011
@@ -21,9 +21,9 @@ package org.apache.roller.weblogger.busi
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.pojos.ThemeResource;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.pojos.*;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -124,8 +124,8 @@ public class SharedThemeFromDir extends 
      * Lookup the specified template by link.
      * Returns null if the template cannot be found.
      */
-    public List<ThemeTemplate> getTemplatesByLink(String link) {
-        return (List<ThemeTemplate>) this.templatesByLink.get(link);
+     public ThemeTemplate getTemplateByLink(String link) {
+        return (ThemeTemplate) this.templatesByLink.get(link);
     }
     
     
@@ -213,15 +213,39 @@ public class SharedThemeFromDir extends 
         } else {
             this.previewImage = new SharedThemeResourceFromDir(themeMetadata.getPreviewImage(), previewFile);
         }
-        
+
+        //avaialble types in the Roller
+        List<String> availableTypesList = new ArrayList<String>();
+        availableTypesList.add("standard");
+        availableTypesList.add("mobile");
+
         // load stylesheet if possible
         if(themeMetadata.getStylesheet() != null) {
             
             ThemeMetadataTemplate stylesheetTmpl = themeMetadata.getStylesheet();
-            
+           //getting the template codes for available types
+           ThemeMetadataTemplateCode standardTemplateCode= stylesheetTmpl.getTemplateCodeTable().get("standard");
+           ThemeMetadataTemplateCode mobileTemplateCode= stylesheetTmpl.getTemplateCodeTable().get("mobile");
+
+            //If no template code present for any type
+            if (standardTemplateCode == null && mobileTemplateCode == null) {
+                throw new ThemeInitializationException("Error in getting template codes for template");
+            } else if(mobileTemplateCode == null){
+                //cloning the standard template code if no mobile is present
+               mobileTemplateCode = new ThemeMetadataTemplateCode();
+               mobileTemplateCode.setContentsFile(standardTemplateCode.getContentsFile());
+               mobileTemplateCode.setContentType(standardTemplateCode.getContentType());
+               mobileTemplateCode.setTemplateLang(standardTemplateCode.getTemplateLang());
+               mobileTemplateCode.setType("mobile");
+
+                stylesheetTmpl.addTemplateCode("mobile",mobileTemplateCode);
+            }
+
+
             // construct File object from path
+            // we are getting the file path from standard as the default and load it to initially.
             File templateFile = new File(this.themeDir + File.separator + 
-                    stylesheetTmpl.getContentsFile());
+                    standardTemplateCode.getContentsFile());
             
             // read stylesheet contents
             String contents = loadTemplateFile(templateFile);
@@ -231,6 +255,7 @@ public class SharedThemeFromDir extends 
             } else {
                 
                 // construct ThemeTemplate representing this file
+                // here we set content and template language from standard template code assuming it is the default
                 SharedThemeTemplate theme_template = new SharedThemeTemplate(
                         this,
                         themeMetadata.getId()+":"+stylesheetTmpl.getName(),
@@ -240,14 +265,20 @@ public class SharedThemeFromDir extends 
                         contents,
                         stylesheetTmpl.getLink(),
                         new Date(templateFile.lastModified()),
-                        stylesheetTmpl.getTemplateLanguage(),
+                        standardTemplateCode.getTemplateLang(),
                         false,
-                        false,stylesheetTmpl.getType());
-                
-                // store it
+                        false);
+
+
+                for (String type : availableTypesList) {
+                    WeblogTemplateCode templateCode = createTemplateCode(theme_template.getId(), stylesheetTmpl.
+                            getTemplateCode(type));
+
+                    theme_template.addTemplateCode(type, templateCode);
+                }
+                  // store it
                 this.stylesheet = theme_template;
-                
-                // add it to templates list
+
                 addTemplate(theme_template);
             }
             
@@ -284,15 +315,35 @@ public class SharedThemeFromDir extends 
         }
         
         // go through templates and read in contents to a ThemeTemplate
-        ThemeTemplate theme_template = null;
+        SharedThemeTemplate theme_template = null;
         ThemeMetadataTemplate templateMetadata = null;
         Iterator templatesIter = themeMetadata.getTemplates().iterator();
         while (templatesIter.hasNext()) {
             templateMetadata = (ThemeMetadataTemplate) templatesIter.next();
+
+             //getting the template codes for available types
+           ThemeMetadataTemplateCode standardTemplateCode= templateMetadata.getTemplateCodeTable().get("standard");
+           ThemeMetadataTemplateCode mobileTemplateCode= templateMetadata.getTemplateCodeTable().get("mobile");
+
+            //If no template code present for any type
+            if(standardTemplateCode ==null && mobileTemplateCode == null){
+                throw  new ThemeInitializationException("Error in getting template codes for template");
+            }
+
+            else if(mobileTemplateCode == null){
+                 //cloning the standard template code if no mobile is present
+               mobileTemplateCode = new ThemeMetadataTemplateCode();
+               mobileTemplateCode.setContentsFile(standardTemplateCode.getContentsFile());
+               mobileTemplateCode.setContentType(standardTemplateCode.getContentType());
+               mobileTemplateCode.setTemplateLang(standardTemplateCode.getTemplateLang());
+               mobileTemplateCode.setType("mobile");
+
+               templateMetadata.addTemplateCode("mobile",mobileTemplateCode);
+            }
             
             // construct File object from path
             File templateFile = new File(this.themeDir + File.separator + 
-                    templateMetadata.getContentsFile());
+                    standardTemplateCode.getContentsFile());
             
             String contents = loadTemplateFile(templateFile);
             if(contents == null) {
@@ -310,11 +361,17 @@ public class SharedThemeFromDir extends 
                     contents,
                     templateMetadata.getLink(),
                     new Date(templateFile.lastModified()),
-                    templateMetadata.getTemplateLanguage(),
+                    standardTemplateCode.getTemplateLang(),
                     templateMetadata.isHidden(),
-                    templateMetadata.isNavbar(),
-                    templateMetadata.getType());
-                ;
+                    templateMetadata.isNavbar()
+                    );
+
+            for (String type : availableTypesList) {
+                WeblogTemplateCode templateCode = createTemplateCode(theme_template.getId(),
+                        templateMetadata.getTemplateCode(type));
+
+                theme_template.addTemplateCode(type, templateCode);
+            }
 
             // add it to the theme
             addTemplate(theme_template);
@@ -386,5 +443,29 @@ public class SharedThemeFromDir extends 
         String normalizedPath = StringUtils.replace(path, "\\", "/");
         this.resources.put(normalizedPath, resource);
     }
-    
+
+    private WeblogTemplateCode createTemplateCode(String templateId, ThemeMetadataTemplateCode templateCodeMetadata){
+        WeblogTemplateCode templateCode = new WeblogTemplateCode();
+
+         // construct File object from path
+            File templateFile = new File(this.themeDir + File.separator +
+                    templateCodeMetadata.getContentsFile());
+
+            // read stylesheet contents
+            String contents = loadTemplateFile(templateFile);
+            if(contents == null) {
+                // if we don't have any contents then load no string
+                contents ="";
+                log.error("Couldn't load stylesheet theme [" + this.getName() + "] template file ["+templateFile+"]");
+            }
+
+            templateCode.setTemplateId(templateId);
+            templateCode.setTemplate(contents);
+            templateCode.setTemplateLanguage(templateCodeMetadata.getTemplateLang());
+            templateCode.setType(templateCodeMetadata.getType());
+            templateCode.setContentType(templateCodeMetadata.getContentType());
+
+        return templateCode;
+    }
+
 }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeTemplate.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeTemplate.java Sat Aug 13 17:42:17 2011
@@ -18,10 +18,15 @@
 
 package org.apache.roller.weblogger.business.themes;
 
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.ThemeTemplate;
+import org.apache.roller.weblogger.pojos.WeblogTemplate;
+import org.apache.roller.weblogger.pojos.WeblogTemplateCode;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.HashMap;
 
 
 /**
@@ -44,13 +49,16 @@ public class SharedThemeTemplate impleme
     private String type = null;
     
     private SharedTheme myTheme = null;
+
+    //hash map to cache template Code objects parsed
+    private HashMap<String,WeblogTemplateCode> templateCodeHashMap = new HashMap<String, WeblogTemplateCode>();
     
     
     public SharedThemeTemplate() {}
     
     public SharedThemeTemplate(SharedTheme theme, String id, String action, String name, 
             String desc, String contents, String link, Date date, 
-            String tempLang, boolean hid, boolean navbar, String type) {
+            String tempLang, boolean hid, boolean navbar) {
         
         this.myTheme = theme;
         this.id = id;
@@ -63,7 +71,6 @@ public class SharedThemeTemplate impleme
         this.templateLanguage = tempLang;
         this.hidden = hid;
         this.navbar = navbar;
-        this.type = type;
     }
     
     
@@ -178,7 +185,15 @@ public class SharedThemeTemplate impleme
         return type;
     }
 
+    public WeblogTemplateCode getTemplateCode(String type) throws WebloggerException {
+        return templateCodeHashMap.get(type);
+    }
+
     public void setType(String type) {
         this.type = type;
     }
+
+    public void addTemplateCode(String type , WeblogTemplateCode templateCode){
+        this.templateCodeHashMap.put(type ,templateCode);
+    }
 }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java Sat Aug 13 17:42:17 2011
@@ -181,6 +181,16 @@ public class ThemeManagerImpl implements
         MediaFileDirectory root = fileMgr.getMediaFileRootDirectory(website);
         log.warn("Weblog " + website.getHandle() + " does not have a root MediaFile directory");
 
+        theme.setId("custom."+theme.getType());
+        WeblogSharedTheme customTheme = new WeblogSharedTheme(website,theme);
+        WeblogThemeAssoc themeAssoc = roller.getWeblogManager().getThemeAssoc(website,customTheme.getType());
+        themeAssoc.setCustom(true);
+        themeAssoc.setName(customTheme.getName());
+        //save theme assoc
+        roller.getWeblogManager().saveThemeAssoc(themeAssoc);
+
+
+
         Set importedActionTemplates = new HashSet();
         ThemeTemplate themeTemplate = null;
         ThemeTemplate stylesheetTemplate = theme.getStylesheet();
@@ -231,6 +241,10 @@ public class ThemeManagerImpl implements
 
                 // save it
                 wmgr.savePage(template);
+
+                WeblogTemplateCode templateCode = new WeblogTemplateCode(template.getId(),theme.getType());
+                templateCode.setTemplate(template.getContents());
+                wmgr.saveTemplateCode(templateCode);
             }
         }
 

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataParser.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataParser.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataParser.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataParser.java Sat Aug 13 17:42:17 2011
@@ -43,7 +43,7 @@ public class ThemeMetadataParser {
      * Unmarshall the given input stream into our defined
      * set of Java objects.
      **/
-    public ThemeMetadata unmarshall(InputStream instream) 
+    public ThemeMetadata unmarshall(InputStream instream)
         throws ThemeParsingException, IOException, JDOMException {
         
         if(instream == null)
@@ -78,11 +78,7 @@ public class ThemeMetadataParser {
         Element stylesheet = root.getChild("stylesheet");
         if(stylesheet != null) {
             theme.setStylesheet(elementToStylesheet(stylesheet));
-            if ("mobile".equals(theme.getType())) {
-               theme.getStylesheet().setType("mobile");
-            } else {
-               theme.getStylesheet().setType("standard");
-            }
+
         }
         
         // now grab the static resources
@@ -101,12 +97,6 @@ public class ThemeMetadataParser {
             Element template = (Element) templatesIter.next();
             ThemeMetadataTemplate tmpl = elementToTemplateMetadata(template);
 
-            if ("mobile".equals(theme.getType())) {
-                tmpl.setType("mobile");
-            } else {
-                tmpl.setType("standard");
-            }
-
             theme.addTemplate(tmpl);
             
             if(WeblogTemplate.ACTION_WEBLOG.equals(tmpl.getAction())) {
@@ -133,10 +123,33 @@ public class ThemeMetadataParser {
         template.setName(element.getChildText("name"));
         template.setDescription(element.getChildText("description"));
         template.setLink(element.getChildText("link"));
-        template.setTemplateLanguage(element.getChildText("templateLanguage"));
-        template.setContentType(element.getChildText("contentType"));
-        template.setContentsFile(element.getChildText("contentsFile"));
 
+        //parsing tempaltecode segment
+        List templateCodeList = element.getChildren("templateCode");
+        Iterator templCodeitr = templateCodeList.iterator();
+
+        while (templCodeitr.hasNext()){
+            Element templateCodeElement = (Element) templCodeitr.next();
+
+            ThemeMetadataTemplateCode templateCode = new ThemeMetadataTemplateCode();
+            templateCode.setTemplateLang(templateCodeElement.getChildText("templateLanguage"));
+            templateCode.setContentsFile(templateCodeElement.getChildText("contentsFile"));
+            templateCode.setContentType(templateCodeElement.getChildText("contentType"));
+            templateCode.setType(templateCodeElement.getChildText("type"));
+
+            // validating template code
+            if (StringUtils.isEmpty(templateCode.getContentsFile())) {
+                throw new ThemeParsingException("templateCode must contain a 'contentsFile' element");
+        }
+            if(StringUtils.isEmpty(templateCode.getTemplateLang())) {
+            throw new ThemeParsingException("templateCode must contain a 'templateLanguage' element");
+        }
+             if(StringUtils.isEmpty(templateCode.getType())) {
+            throw new ThemeParsingException("templateCode must contain a 'type' element");
+        }
+
+            template.addTemplateCode(templateCode.getType(),templateCode);
+        }
         
         String navbar = element.getChildText("navbar");
         if("true".equalsIgnoreCase(navbar)) {
@@ -155,12 +168,8 @@ public class ThemeMetadataParser {
         if(StringUtils.isEmpty(template.getName())) {
             throw new ThemeParsingException("templates must contain a 'name' element");
         }
-        if(StringUtils.isEmpty(template.getTemplateLanguage())) {
-            throw new ThemeParsingException("templates must contain a 'templateLanguage' element");
-        }
-        if(StringUtils.isEmpty(template.getContentsFile())) {
-            throw new ThemeParsingException("templates must contain a 'contentsFile' element");
-        }
+
+
         
         return template;
     }
@@ -174,8 +183,32 @@ public class ThemeMetadataParser {
         template.setName(element.getChildText("name"));
         template.setDescription(element.getChildText("description"));
         template.setLink(element.getChildText("link"));
-        template.setTemplateLanguage(element.getChildText("templateLanguage"));
-        template.setContentsFile(element.getChildText("contentsFile"));
+
+        // parsing templatecode segment
+         List templateCodeList = element.getChildren("templateCode");
+        Iterator templCodeitr = templateCodeList.iterator();
+
+        while (templCodeitr.hasNext()){
+            Element templateCodeElement = (Element) templCodeitr.next();
+
+            ThemeMetadataTemplateCode templateCode = new ThemeMetadataTemplateCode();
+            templateCode.setTemplateLang(templateCodeElement.getChildText("templateLanguage"));
+            templateCode.setContentsFile(templateCodeElement.getChildText("contentsFile"));
+            templateCode.setContentType(templateCodeElement.getChildText("contentType"));
+            templateCode.setType(templateCodeElement.getChildText("type"));
+
+            //validating stylesheet template code.
+            if (StringUtils.isEmpty(templateCode.getContentsFile())) {
+                throw new ThemeParsingException("stylesheet must contain a 'contentsFile' element");
+            }
+            if (StringUtils.isEmpty(templateCode.getTemplateLang())) {
+                throw new ThemeParsingException("stylesheet must contain a 'templateLanguage' element");
+            }
+            if (StringUtils.isEmpty(templateCode.getType())) {
+                throw new ThemeParsingException("templateCode must contain a 'type' element");
+            }
+            template.addTemplateCode(templateCode.getType(), templateCode);
+        }
         
         // validate template
         if(StringUtils.isEmpty(template.getName())) {
@@ -184,13 +217,7 @@ public class ThemeMetadataParser {
         if(StringUtils.isEmpty(template.getLink())) {
             throw new ThemeParsingException("stylesheet must contain a 'link' element");
         }
-        if(StringUtils.isEmpty(template.getTemplateLanguage())) {
-            throw new ThemeParsingException("stylesheet must contain a 'templateLanguage' element");
-        }
-        if(StringUtils.isEmpty(template.getContentsFile())) {
-            throw new ThemeParsingException("stylesheet must contain a 'contentsFile' element");
-        }
-        
+
         return template;
     }
     

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplate.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplate.java Sat Aug 13 17:42:17 2011
@@ -19,6 +19,8 @@
 package org.apache.roller.weblogger.business.themes;
 
 
+import java.util.Hashtable;
+
 /**
  * A parsed 'template' element of a theme metadata descriptor.
  */
@@ -34,6 +36,9 @@ public class ThemeMetadataTemplate {
     private String contentType = null;
     private String contentsFile = null;
     private String type = null;
+    // Hash table to keep metadata about parsed template code files
+    private Hashtable<String, ThemeMetadataTemplateCode> templateCodeTable
+            = new Hashtable<String, ThemeMetadataTemplateCode>();
 
     public String getAction() {
         return action;
@@ -114,4 +119,17 @@ public class ThemeMetadataTemplate {
     public void setType(String type) {
         this.type = type;
     }
+
+    public void addTemplateCode(String type, ThemeMetadataTemplateCode templateCode) {
+        this.getTemplateCodeTable().put(type, templateCode);
+    }
+
+    public ThemeMetadataTemplateCode getTemplateCode(String type){
+        return this.getTemplateCodeTable().get(type);
+    }
+
+    public Hashtable<String, ThemeMetadataTemplateCode> getTemplateCodeTable() {
+        return templateCodeTable;
+    }
+
 }

Added: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplateCode.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplateCode.java?rev=1157397&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplateCode.java (added)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadataTemplateCode.java Sat Aug 13 17:42:17 2011
@@ -0,0 +1,59 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+package org.apache.roller.weblogger.business.themes;
+
+public class ThemeMetadataTemplateCode {
+    private String templateLang = null;
+    private String contentType = null;
+    private String contentsFile = null;
+    private String type = null;
+
+    public String getTemplateLang() {
+        return templateLang;
+    }
+
+    public void setTemplateLang(String templateLang) {
+        this.templateLang = templateLang;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    public String getContentsFile() {
+        return contentsFile;
+    }
+
+    public void setContentsFile(String contentsFile) {
+        this.contentsFile = contentsFile;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogCustomTheme.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogCustomTheme.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogCustomTheme.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogCustomTheme.java Sat Aug 13 17:42:17 2011
@@ -80,13 +80,7 @@ public class WeblogCustomTheme extends W
      * Returns null if no stylesheet can be found.
      */
     public ThemeTemplate getStylesheet() throws WebloggerException {
-        List styleSheetsList = getTemplatesByLink(this.weblog.getCustomStylesheetPath());
-
-        if(styleSheetsList != null && !styleSheetsList.isEmpty()){
-           return (ThemeTemplate) styleSheetsList.get(0);
-        }
-
-        return null;
+       return getTemplateByLink(this.weblog.getCustomStylesheetPath());
     }
     
     
@@ -128,12 +122,11 @@ public class WeblogCustomTheme extends W
      * Lookup the specified template by link.
      * Returns null if the template cannot be found.
      */
-    public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException {
+    public ThemeTemplate getTemplateByLink(String link) throws WebloggerException {
         if(link == null)
             return null;
-        List templatesList = WebloggerFactory.getWeblogger().getWeblogManager().getPagesByLink(this.weblog, link);
-        
-        return templatesList;
+
+          return WebloggerFactory.getWeblogger().getWeblogManager().getPageByLink(this.weblog, link);
     }
     
     

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogSharedTheme.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogSharedTheme.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogSharedTheme.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/WeblogSharedTheme.java Sat Aug 13 17:42:17 2011
@@ -115,27 +115,17 @@ public class WeblogSharedTheme extends W
      * Lookup the stylesheet template for this theme.
      * Returns null if no stylesheet can be found.
      */
-    public ThemeTemplate getStylesheet() throws WebloggerException {
+     public ThemeTemplate getStylesheet() throws WebloggerException {
         // stylesheet is handled differently than other templates because with
         // the stylesheet we want to return the weblog custom version if it
         // exists, otherwise we return the shared theme version
-        
+
         // load from theme first to see if we even support a stylesheet
         ThemeTemplate stylesheet = this.theme.getStylesheet();
         if(stylesheet != null) {
             // now try getting custom version from weblog
-
-            // Get the style sheet for link. We do not have duplicates for same link as we have
-            //in other template pages for a theme.
-
-            List  styleSheetList = WebloggerFactory.getWeblogger()
-                    .getWeblogManager().getPagesByLink(this.weblog, stylesheet.getLink());
-
-            ThemeTemplate override = null;
-
-             if(styleSheetList != null && !styleSheetList.isEmpty()) {
-             override = (ThemeTemplate) styleSheetList.get(0);
-             }
+            ThemeTemplate override = WebloggerFactory.getWeblogger()
+                    .getWeblogManager().getPageByLink(this.weblog, stylesheet.getLink());
             if(override != null) {
                 stylesheet = override;
             }
@@ -203,34 +193,30 @@ public class WeblogSharedTheme extends W
      * Lookup the specified template by link.
      * Returns null if the template cannot be found.
      */
-    public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException {
+     public ThemeTemplate getTemplateByLink(String link) throws WebloggerException {
 
-        List templatesList = null;
         if(link == null)
             return null;
-        
+
         ThemeTemplate template = null;
-        
+
         // if name refers to the stylesheet then return result of getStylesheet()
         ThemeTemplate stylesheet = getStylesheet();
-        if(stylesheet != null && (link.equals(stylesheet.getLink()))) {
-            //we cannot return single Style sheet so we need to return a list with one single Style Sheet
-            List<ThemeTemplate> styleSheetList = new ArrayList<ThemeTemplate>();
-            styleSheetList.add(stylesheet);
-            return styleSheetList;
+        if(stylesheet != null && link.equals(stylesheet.getLink())) {
+            return stylesheet;
         }
-        
+
         // first check if this user has selected a theme
         // if so then return the proper theme template
-        templatesList = this.theme.getTemplatesByLink(link);
-        
+        template = this.theme.getTemplateByLink(link);
+
         // if we didn't get the Template from a theme then look in the db
-        if(templatesList == null || templatesList.isEmpty()) {
-            templatesList = WebloggerFactory.getWeblogger()
-                    .getWeblogManager().getPagesByLink(this.weblog, link);
+        if(template == null) {
+            template = WebloggerFactory.getWeblogger()
+                    .getWeblogManager().getPageByLink(this.weblog, link);
         }
-        
-        return templatesList;
+
+        return template;
     }
     
     

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticTemplate.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticTemplate.java Sat Aug 13 17:42:17 2011
@@ -18,6 +18,9 @@
 
 package org.apache.roller.weblogger.pojos;
 
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -96,6 +99,10 @@ public class StaticTemplate implements T
         return type;
     }
 
+    public WeblogTemplateCode getTemplateCode(String type) throws WebloggerException {
+        return WebloggerFactory.getWeblogger().getWeblogManager().getTemplateCodeByType(this.getId(),type);
+    }
+
     public void setType(String type){
          this.type = type;
     }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticThemeTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticThemeTemplate.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticThemeTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/StaticThemeTemplate.java Sat Aug 13 17:42:17 2011
@@ -18,6 +18,9 @@
 
 package org.apache.roller.weblogger.pojos;
 
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -104,6 +107,10 @@ public class StaticThemeTemplate impleme
         return type;
     }
 
+    public WeblogTemplateCode getTemplateCode(String type) throws WebloggerException {
+        return WebloggerFactory.getWeblogger().getWeblogManager().getTemplateCodeByType(this.id, type);
+    }
+
     public void setType(String type){
           this.type = type;
     }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Template.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Template.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Template.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Template.java Sat Aug 13 17:42:17 2011
@@ -18,6 +18,8 @@
 
 package org.apache.roller.weblogger.pojos;
 
+import org.apache.roller.weblogger.WebloggerException;
+
 import java.util.Date;
 
 
@@ -56,7 +58,14 @@ public interface Template {
     /**
      * The templating language used by this template.
      */
+
     public String getTemplateLanguage();
+
+    /**
+     * Set the template language.This is used by template code object to assign
+     * correct template language for different template content types
+     */
+    public  void setTemplateLanguage(String templateLanguage);
     
     
     /**
@@ -70,6 +79,14 @@ public interface Template {
      */
     //TODO need to remove this type from weblog template as one template acts in different types
 
+    @Deprecated
+    //Moved to templateCode
     public String getType();
+
+    /**
+     *
+     * get the Template code object for the given type.
+     */
+    public WeblogTemplateCode getTemplateCode(String type) throws WebloggerException;
     
 }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Theme.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Theme.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Theme.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Theme.java Sat Aug 13 17:42:17 2011
@@ -100,7 +100,7 @@ public interface Theme {
      * Lookup a template by link.
      * Returns null if the template cannot be found.
      */
-    public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException;
+    public ThemeTemplate getTemplateByLink(String link) throws WebloggerException;
     
     
     /**

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/ThemeTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/ThemeTemplate.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/ThemeTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/ThemeTemplate.java Sat Aug 13 17:42:17 2011
@@ -52,8 +52,12 @@ public interface ThemeTemplate extends T
      * The contents or body of the Template.
      */
     public String getContents();
-    
-    
+
+    /**
+     * set content. This will be used by template code objects to store different
+     * types of template contents
+     */
+     public void setContents(String contents);
     /**
      * The url link value for this Template.  If this template is not
      * private this is the url that it can be accessed at.
@@ -84,5 +88,5 @@ public interface ThemeTemplate extends T
      * should be applied.
      */
     public ThemeTemplate getDecorator();
-    
+
 }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java Sat Aug 13 17:42:17 2011
@@ -94,7 +94,7 @@ public class Weblog implements Serializa
     private String  iconPath         = null;
     private String  about            = null;
     private String  creator          = null;
-    private String mobileThemeName = null;
+
     
     // Associated objects
     private List           permissions = new ArrayList();
@@ -114,7 +114,6 @@ public class Weblog implements Serializa
             String email,
             String emailFrom,
             String editorTheme,
-            String mobileTheme,
             String locale,
             String timeZone) {
         
@@ -125,7 +124,6 @@ public class Weblog implements Serializa
         this.emailAddress = email;
         this.emailFromAddress = emailFrom;
         this.editorTheme = editorTheme;
-        this.mobileThemeName = mobileTheme;
         this.locale = locale;
         this.timeZone = timeZone;
     }
@@ -1261,26 +1259,6 @@ public class Weblog implements Serializa
      *
      * @return  mobileTheme
      */
-    public String getMobileThemeName() {
-        return mobileThemeName;
-    }
-
-    public void setMobileThemeName(String mobileTheme) {
-        this.mobileThemeName = mobileTheme;
-    }
-
-    public Theme getMobileTheme(){
-            try {
-            // let the ThemeManager handle it
-            ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
-            return themeMgr.getTheme(getMobileThemeName());
-        } catch (WebloggerException ex) {
-            log.error("Error getting theme for weblog - "+getHandle(), ex);
-        }
-
-        // TODO: maybe we should return a default theme in this case?
-        return null;
-    }
 
     public Theme getTheme(String type){
         WeblogThemeAssoc themeAssoc;

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplateCode.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplateCode.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplateCode.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplateCode.java Sat Aug 13 17:42:17 2011
@@ -20,8 +20,10 @@ package org.apache.roller.weblogger.pojo
 
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.openjpa.jdbc.kernel.exps.Null;
 import org.apache.roller.util.UUIDGenerator;
 
+import javax.mail.internet.ContentType;
 import javax.persistence.*;
 import java.io.Serializable;
 
@@ -47,6 +49,8 @@ public class WeblogTemplateCode implemen
     //template contents
     private String template = null;
     private String type = null;
+    private String ContentType = null;
+    private String templateLanguage = null;
 
     public WeblogTemplateCode(String templateId, String type){
         this.templateId = templateId;
@@ -126,4 +130,23 @@ public class WeblogTemplateCode implemen
             .toHashCode();
     }
 
+     @Basic
+    @Column(name ="templatelang",unique = false, updatable = true, insertable = true)
+    public String getTemplateLanguage() {
+        return templateLanguage;
+    }
+
+    public void setTemplateLanguage(String templateLanguage) {
+        this.templateLanguage = templateLanguage;
+    }
+
+     @Basic
+    @Column(name= "contenttype", unique = false, updatable = true, insertable = true)
+    public String getContentType() {
+        return ContentType;
+    }
+
+    public void setContentType(String contentType) {
+        ContentType = contentType;
+    }
 }

Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.java Sat Aug 13 17:42:17 2011
@@ -66,9 +66,9 @@ public class WeblogWrapper {
     }
     
     
-    public List <ThemeTemplateWrapper> getPageByLink(String link)
+    public ThemeTemplateWrapper getPageByLink(String link)
             throws WebloggerException {
-        return (List<ThemeTemplateWrapper>) ThemeTemplateWrapper.wrap((ThemeTemplate) this.pojo.getTheme().getTemplatesByLink(link));
+        return ThemeTemplateWrapper.wrap(this.pojo.getTheme().getTemplateByLink(link));
     }
     
     
@@ -259,14 +259,6 @@ public class WeblogWrapper {
         return null;
     }
 
-    public String getMobileStylesheet() throws WebloggerException {
-            // custom stylesheet comes from the weblog theme
-        if(this.pojo.getMobileTheme().getStylesheet() != null) {
-            return urlStrategy.getWeblogPageURL(this.pojo, null, this.pojo.getMobileTheme().getStylesheet().getLink(), null, null, null, null, 0, false);
-        }
-        return null;
-    }
-    
     
     /**
      * Get path to weblog icon image if defined.

Modified: roller/branches/roller_mobile/weblogger-business/src/main/resources/sql/createdb.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/resources/sql/createdb.vm?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/resources/sql/createdb.vm (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/resources/sql/createdb.vm Sat Aug 13 17:42:17 2011
@@ -91,8 +91,8 @@ create table webpage (
     templatelang    varchar(20) not null,
     decorator       varchar(255) default null,
     outputtype      varchar(48) default null,
-    #columnNotNullWithDefault('action' 'varchar(16)' 'custom'),
-    #columnNotNullWithDefault('type' 'varchar(16)' 'standard')
+    type            varchar(16) default null,
+    #columnNotNullWithDefault('action' 'varchar(16)' 'custom')
 );
 create index wp_name_idx on webpage( name$!db.INDEXSIZE );
 create index wp_link_idx on webpage( link$!db.INDEXSIZE );
@@ -116,9 +116,8 @@ create table website (
     emailfromaddress  varchar(255),
     emailaddress      varchar(255) not null,
     editortheme       varchar(255),
-    mobilethemename       varchar(255),
-    locale            varchar(20), 
-    timezone          varchar(50),  
+    locale            varchar(20),
+    timezone          varchar(50),
     defaultplugins    varchar(255),
     isenabled         $db.BOOLEAN_SQL_TYPE_TRUE not null,
     isactive          $db.BOOLEAN_SQL_TYPE_TRUE not null,
@@ -155,6 +154,8 @@ create table rol_templatecode (
     id                 varchar(48)  not null primary key,
     templateid varchar(48) not null,
     template     $db.TEXT_SQL_TYPE not null,
+    templatelang varchar(48),
+    contenttype  varchar(48),
     #columnNotNullWithDefault('type' 'varchar(16)' 'standard')
 );
 

Modified: roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogPageTest.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogPageTest.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogPageTest.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogPageTest.java Sat Aug 13 17:42:17 2011
@@ -174,7 +174,7 @@ public class WeblogPageTest extends Test
         
         // lookup by link
         page = null;
-        page = mgr.getPagesByLink(testWeblog, testPage.getLink()).get(0);
+        page = mgr.getPageByLink(testWeblog, testPage.getLink());
         assertNotNull(page);
         assertEquals(testPage.getContents(), page.getContents());
         

Modified: roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogTemplateCodeTest.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogTemplateCodeTest.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogTemplateCodeTest.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/test/java/org/apache/roller/weblogger/business/WeblogTemplateCodeTest.java Sat Aug 13 17:42:17 2011
@@ -112,11 +112,13 @@ public class WeblogTemplateCodeTest exte
            //create standard template coce
            WeblogTemplateCode standardTemplateCode = new WeblogTemplateCode(testPage.getId(),"standard");
            standardTemplateCode.setTemplate("standard.template.code");
+           standardTemplateCode.setTemplateLanguage("velocity");
            mgr.saveTemplateCode(standardTemplateCode);
             //TestUtils.endSession(true);
            //create mobile code
            WeblogTemplateCode mobileTemplateCode = new WeblogTemplateCode(testPage.getId(),"mobile");
            mobileTemplateCode.setTemplate("mobile.template.code");
+           mobileTemplateCode.setTemplateLanguage("velocity");
            mgr.saveTemplateCode(mobileTemplateCode);
              TestUtils.endSession(true);
 

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/RendererManager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/RendererManager.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/RendererManager.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/RendererManager.java Sat Aug 13 17:42:17 2011
@@ -23,8 +23,12 @@ import java.util.Iterator;
 import java.util.Set;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.pojos.Template;
+import org.apache.roller.weblogger.pojos.ThemeTemplate;
+import org.apache.roller.weblogger.pojos.WeblogTemplateCode;
 
 
 /**
@@ -107,7 +111,7 @@ public class RendererManager {
      * instance and tries to find a Renderer for the content.  If no Renderer
      * can be found then we throw an exception.
      */
-    public static Renderer getRenderer(Template template) 
+    public static Renderer getRenderer(Template template)
             throws RenderingException {
         
         Renderer renderer = null;
@@ -126,5 +130,24 @@ public class RendererManager {
         throw new RenderingException("No renderer found for template "+
                 template.getId()+"!");
     }
+
+    public static ThemeTemplate prepareTemplate(ThemeTemplate page, String type)throws RenderingException{
+        try {
+            WeblogTemplateCode templateCode = page.getTemplateCode(type);
+
+            if(templateCode != null){
+            page.setContents(templateCode.getTemplate());
+            page.setTemplateLanguage(templateCode.getTemplateLanguage());
+            }
+            else{
+                // if there is no template code present we fall back to default template
+                return page;
+            }
+        } catch (WebloggerException e) {
+            throw new RenderingException("Error while loading template code for template :"+page.getId(),e);
+        }
+         return page;
+
+    }
     
 }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java Sat Aug 13 17:42:17 2011
@@ -62,4 +62,13 @@ public class MobileDeviceRepository {
 
     }
 
+    public static String getRequestType(HttpServletRequest request) {
+        String type = "standard";
+
+        if (isMobileDevice(request)) {
+            type = "mobile";
+        }
+        return type;
+    }
+
 }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java Sat Aug 13 17:42:17 2011
@@ -37,6 +37,7 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.ui.core.RollerContext;
 import org.apache.roller.weblogger.ui.rendering.Renderer;
 import org.apache.roller.weblogger.ui.rendering.RendererManager;
+import org.apache.roller.weblogger.ui.rendering.RenderingException;
 import org.apache.roller.weblogger.ui.rendering.mobile.MobileDeviceRepository;
 import org.apache.roller.weblogger.ui.rendering.model.ModelLoader;
 import org.apache.roller.weblogger.ui.rendering.util.InvalidRequestException;
@@ -242,12 +243,17 @@ public class PageServlet extends HttpSer
 
         log.debug("Looking for template to use for rendering");
 
+        // Get the type from user agent
+        String type = MobileDeviceRepository.getRequestType(request);
+
+        // for previews we explicitly set the type attribute
+        if(request.getParameter("type") != null){
+            type = request.getParameter("type");
+        }
+
         // figure out what template to use
         ThemeTemplate page = null;
 
-        //if request is coming from mobile
-        boolean isMobileRequest = MobileDeviceRepository.isMobileDevice(request);
-
         // If this is a popup request, then deal with it specially
         // TODO: do we really need to keep supporting this?
         if (request.getParameter("popup") != null) {
@@ -307,12 +313,7 @@ public class PageServlet extends HttpSer
         // if we haven't found a page yet then try our default page
         if (page == null) {
             try {
-             //   page = weblog.getTheme().getDefaultTemplate();
-                if (isMobileRequest) {
-                    page = weblog.getTheme("mobile").getDefaultTemplate();
-                } else {
-                    page = weblog.getTheme("standard").getDefaultTemplate();
-                }
+                page = weblog.getTheme().getDefaultTemplate();
             } catch (Exception e) {
                 log.error("Error getting default page for weblog = " + weblog.getHandle(), e);
             }
@@ -329,6 +330,13 @@ public class PageServlet extends HttpSer
 
         log.debug("page found, dealing with it");
 
+        // load the correct template using template codes.
+        try {
+            page = RendererManager.prepareTemplate(page, type);
+        } catch (RenderingException e) {
+            log.error("error while preparing template ", e);
+        }
+
         // validation.  make sure that request input makes sense.
         boolean invalid = false;
         if (pageRequest.getWeblogPageName() != null && page.isHidden()) {

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java Sat Aug 13 17:42:17 2011
@@ -28,6 +28,7 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.ui.core.RollerContext;
 import org.apache.roller.weblogger.ui.rendering.Renderer;
 import org.apache.roller.weblogger.ui.rendering.RendererManager;
+import org.apache.roller.weblogger.ui.rendering.RenderingException;
 import org.apache.roller.weblogger.ui.rendering.model.ModelLoader;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogPreviewRequest;
 import org.apache.roller.weblogger.util.cache.CachedContent;
@@ -78,13 +79,19 @@ public class PreviewServlet extends Http
         Weblog weblog = null;
         
         WeblogPreviewRequest previewRequest = null;
+
+         String type = null;
+
         try {
             previewRequest = new WeblogPreviewRequest(request);
-            
+
+            // type of the page we are going to preview
+            type = previewRequest.getType();
+
             // lookup weblog specified by preview request
             weblog = previewRequest.getWeblog();
-            if(weblog == null) {
-                throw new WebloggerException("unable to lookup weblog: "+
+            if (weblog == null) {
+                throw new WebloggerException("unable to lookup weblog: " +
                         previewRequest.getWeblogHandle());
             }
         } catch (Exception e) {
@@ -110,9 +117,6 @@ public class PreviewServlet extends Http
             tmpWebsite.setData(weblog);
             if(previewTheme != null && previewTheme.isEnabled()) {
                 tmpWebsite.setEditorTheme(previewTheme.getId());
-                //set mobile theme to the preview theme so it will not return null in velocity.
-                //This is bit hacky
-                tmpWebsite.setMobileThemeName(previewTheme.getId());
             } else if(WeblogTheme.CUSTOM.equals(previewRequest.getThemeName())) {
                 tmpWebsite.setEditorTheme(WeblogTheme.CUSTOM);
             }
@@ -174,6 +178,13 @@ public class PreviewServlet extends Http
         
         
         log.debug("preview page found, dealing with it");
+
+        // load the correct template using template codes.
+        try {
+            page = RendererManager.prepareTemplate((ThemeTemplate) page, type);
+        } catch (RenderingException e) {
+            log.error("error while preparing template ", e);
+        }
         
         // set the content type
         String pageLink = previewRequest.getWeblogPageName();

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java Sat Aug 13 17:42:17 2011
@@ -110,15 +110,10 @@ public class SearchServlet extends HttpS
         // lookup template to use for rendering
         ThemeTemplate page = null;
         try {
-            // if request is from a mobile get mobile templates search page
-            if(isMobileRequest){
-              page = weblog.getMobileTheme().getTemplateByAction(ThemeTemplate.ACTION_SEARCH);
-            }
-            // if there is no search page in mobile template look for standard templates page.
-            else if(page == null){
+
             // try looking for a specific search page
             page = weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_SEARCH);
-            }
+
             // if not found then fall back on default page
             if(page == null) {
                 page = weblog.getTheme().getDefaultTemplate();

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java Sat Aug 13 17:42:17 2011
@@ -352,41 +352,10 @@ public class WeblogPageRequest extends W
 
     public ThemeTemplate getWeblogPage() {
         
+
         if(weblogPage == null && weblogPageName != null) {
             try {
-
-                List <ThemeTemplate> weblogPages = getWeblog().getTheme().getTemplatesByLink(weblogPageName);
-
-                if(weblogPages != null && weblogPages.size() ==1){
-                    // default scenario of having one template only as CSS.
-                    return weblogPages.get(0);
-                }
-
-                else if (weblogPages != null && weblogPages.size()>1) {
-
-                    // return mobile template if the request coming from a mobile device
-                    if (MobileDeviceRepository.isMobileDevice(request)) {
-                        for (ThemeTemplate weblogPage : weblogPages) {
-                            if ("mobile".equals(weblogPage.getType())) {
-                                return weblogPage;
-                            }
-                        }
-                }
-                    else {
-                        for (ThemeTemplate weblogPage : weblogPages) {
-                            if ("standard".equals(weblogPage.getType())) {
-                                return weblogPage;
-                            }
-                        }
-                    }
-                }
-                else{
-                   // return null if we cannot find anything.
-                    return null;
-                }
-
-
-
+                weblogPage = getWeblog().getTheme().getTemplateByLink(weblogPageName);
             } catch (WebloggerException ex) {
                 log.error("Error getting weblog page "+weblogPageName, ex);
             }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java Sat Aug 13 17:42:17 2011
@@ -43,6 +43,7 @@ public class WeblogPreviewRequest extend
     // lightweight attributes
     private String themeName = null;
     private String previewEntry = null;
+    private String type = "standard";
     
     // heavyweight attributes
     private Theme theme = null;
@@ -58,12 +59,17 @@ public class WeblogPreviewRequest extend
         if(request.getParameter("theme") != null) {
             this.themeName = request.getParameter("theme");
         }
+
+        //we may need to know the type of page we are going to previiew
+         if(request.getParameter("type") != null) {
+             this.setType(request.getParameter("type"));
+         }
         
         // we may also have a specific entry to preview
         if(request.getParameter("previewEntry") != null) {
             this.previewEntry = URLUtilities.decode(request.getParameter("previewEntry"));
         }
-        
+
         if(log.isDebugEnabled()) {
             log.debug("theme = "+this.themeName);
         }
@@ -146,5 +152,12 @@ public class WeblogPreviewRequest extend
     public void setWeblogEntry(WeblogEntry weblogEntry) {
         this.weblogEntry = weblogEntry;
     }
-    
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
 }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java Sat Aug 13 17:42:17 2011
@@ -121,7 +121,6 @@ public class CreateWeblog extends UIActi
                     getBean().getEmailAddress(),
                     getBean().getEmailAddress(),
                     getBean().getTheme(),
-                    getBean().getMobileTheme(),
                     getBean().getLocale(),
                     getBean().getTimeZone());
             
@@ -130,16 +129,9 @@ public class CreateWeblog extends UIActi
             String[] defs = Utilities.stringToStringArray(def,",");
             wd.setEditorPage(defs[0]);
 
-            //Create Theme associativity objects for theme types.
-            WeblogThemeAssoc themeAssocStandard = new WeblogThemeAssoc(wd,getBean().getTheme() , false ,"standard");
-            WeblogThemeAssoc themeAssocMobile= new WeblogThemeAssoc(wd,getBean().getTheme() , false ,"mobile");
-
-
             try {
                 // add weblog and flush
                 WebloggerFactory.getWeblogger().getWeblogManager().addWeblog(wd);
-                WebloggerFactory.getWeblogger().getWeblogManager().saveThemeAssoc(themeAssocStandard);
-                WebloggerFactory.getWeblogger().getWeblogManager().saveThemeAssoc(themeAssocMobile);
                 WebloggerFactory.getWeblogger().flush();
                 
                 // tell the user their weblog was created
@@ -195,18 +187,6 @@ public class CreateWeblog extends UIActi
         return themeMgr.getEnabledThemesList();
     }
 
-
-    public List getMobileThemes(){
-       ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
-        return themeMgr.getEnabledThemesList("mobile");
-    }
-
-    public List getStandardThemes(){
-            ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
-        return themeMgr.getEnabledThemesList("standard");
-    }
-    
-    
     public CreateWeblogBean getBean() {
         return bean;
     }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblogBean.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblogBean.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblogBean.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblogBean.java Sat Aug 13 17:42:17 2011
@@ -31,7 +31,6 @@ public class CreateWeblogBean {
     private String locale;
     private String timeZone;
     private String theme;
-    private String mobileTheme;
     
     
     public String getDescription() {
@@ -90,11 +89,4 @@ public class CreateWeblogBean {
         this.timeZone = timeZone;
     }
 
-    public String getMobileTheme() {
-        return mobileTheme;
-    }
-
-    public void setMobileTheme(String mobileTheme) {
-        this.mobileTheme = mobileTheme;
-    }
 }

Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java?rev=1157397&r1=1157396&r2=1157397&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java Sat Aug 13 17:42:17 2011
@@ -44,6 +44,9 @@ public class StylesheetEdit extends UIAc
     
     // the contents of the stylesheet override
     private String contents = null;
+
+    // type of the stylesheet template code in active
+    private String type = "standard";
     
     
     public StylesheetEdit() {
@@ -72,13 +75,8 @@ public class StylesheetEdit extends UIAc
         if(stylesheet != null) {
             log.debug("custom stylesheet path is - "+stylesheet.getLink());
             try {
-                 List styleSheets =  WebloggerFactory.getWeblogger().getWeblogManager()
-                        .getPagesByLink(getActionWeblog(), stylesheet.getLink());
-
-                // Setting the template from the result set. We will be having only one style sheet.so get 0 index
-                if (stylesheet != null && !styleSheets.isEmpty()) {
-                    setTemplate((WeblogTemplate) styleSheets.get(0));
-                }
+                 setTemplate(WebloggerFactory.getWeblogger().getWeblogManager()
+                        .getPageByLink(getActionWeblog(), stylesheet.getLink()));
 
                 if(getTemplate() == null) {
                     log.debug("custom stylesheet not found, creating it");
@@ -95,9 +93,19 @@ public class StylesheetEdit extends UIAc
                     stylesheetTmpl.setNavbar(false);
                     stylesheetTmpl.setLastModified(new Date());
                     stylesheetTmpl.setTemplateLanguage(stylesheet.getTemplateLanguage());
-                    // setting the type for stylesheet as standard
-                    stylesheetTmpl.setType("standard");
-                    
+
+                    // create template codes for available template code Types
+                    WeblogTemplateCode standardTemplateCode = new WeblogTemplateCode(stylesheetTmpl.getId(),"standard");
+                    standardTemplateCode.setTemplate(stylesheetTmpl.getContents());
+                    standardTemplateCode.setTemplateLanguage(stylesheetTmpl.getTemplateLanguage());
+
+                    WeblogTemplateCode mobileTemplateCode = new WeblogTemplateCode(stylesheetTmpl.getId(),"mobile");
+                    mobileTemplateCode.setTemplate(stylesheetTmpl.getContents());
+                    mobileTemplateCode.setTemplateLanguage(stylesheetTmpl.getTemplateLanguage());
+
+                    WebloggerFactory.getWeblogger().getWeblogManager().saveTemplateCode(standardTemplateCode);
+                    WebloggerFactory.getWeblogger().getWeblogManager().saveTemplateCode(mobileTemplateCode);
+
                     WebloggerFactory.getWeblogger().getWeblogManager().savePage(stylesheetTmpl);
                     WebloggerFactory.getWeblogger().flush();
                     
@@ -118,8 +126,20 @@ public class StylesheetEdit extends UIAc
         if(getTemplate() == null) {
             return ERROR;
         }
-        
-        setContents(getTemplate().getContents());
+        WeblogTemplateCode templateCode = null;
+        try {
+            templateCode = getTemplate().getTemplateCode(getType());
+        } catch (WebloggerException e) {
+            log.error("Error loading Weblog template code for stylesheet", e);
+        }
+         // if there is a template code load that template
+        if(templateCode != null) {
+            setContents(templateCode.getTemplate());
+        }
+        // if not fall back for default template code
+        else{
+           setContents(getTemplate().getContents());
+        }
         
         return INPUT;
     }
@@ -141,10 +161,14 @@ public class StylesheetEdit extends UIAc
             WeblogTemplate stylesheet = getTemplate();
             
             stylesheet.setLastModified(new Date());
-            stylesheet.setContents(getContents());
+            WeblogTemplateCode templateCode = stylesheet.getTemplateCode(getType());
+            templateCode.setTemplate(getContents());
+
+            //  stylesheet.setContents(getContents());
             
             // save template and flush
             WebloggerFactory.getWeblogger().getWeblogManager().savePage(stylesheet);
+            WebloggerFactory.getWeblogger().getWeblogManager().saveTemplateCode(templateCode);
             WebloggerFactory.getWeblogger().flush();
             
             // notify caches
@@ -187,11 +211,19 @@ public class StylesheetEdit extends UIAc
             // lookup the theme used by this weblog
             ThemeManager tmgr = WebloggerFactory.getWeblogger().getThemeManager();
             Theme theme = tmgr.getTheme(getActionWeblog().getEditorTheme());
+
+            //get weblogTemplateCode
+            WeblogTemplateCode templateCode = theme.getStylesheet().getTemplateCode(type);
+            stylesheet.setContents(templateCode.getTemplate());
             
             // lookup 
             stylesheet.setLastModified(new Date());
-            stylesheet.setContents(theme.getStylesheet().getContents());
-            
+            //stylesheet.setContents(theme.getStylesheet().getContents());
+
+            //save template code which was persisted in DB
+            WeblogTemplateCode existingTemplateCode = stylesheet.getTemplateCode(getType());
+            existingTemplateCode.setTemplate(templateCode.getTemplate());
+            WebloggerFactory.getWeblogger().getWeblogManager().saveTemplateCode(existingTemplateCode);
             // save template and flush
             WebloggerFactory.getWeblogger().getWeblogManager().savePage(stylesheet);
             WebloggerFactory.getWeblogger().flush();
@@ -232,5 +264,12 @@ public class StylesheetEdit extends UIAc
     public void setContents(String contents) {
         this.contents = contents;
     }
-    
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
 }