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;
+ }
}