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/06/29 07:55:07 UTC
svn commit: r1140970 [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: Wed Jun 29 05:55:05 2011
New Revision: 1140970
URL: http://svn.apache.org/viewvc?rev=1140970&view=rev
Log:
Adding patch1 and patch2 to the branch.work upto editing custom templates included
Added:
roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/
roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/_day.vm
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-custom.css
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-preview.png (with props)
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/permalink.vm
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/searchresults.vm
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/sidebar.vm
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/theme.xml
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/weblog.vm
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/SharedTheme.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/ThemeManager.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/ThemeMetadata.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/Weblog.java
roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplate.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-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/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/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/TemplateEdit.jsp
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp
roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEditSharedThemesOnly.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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -174,7 +174,7 @@ public interface WeblogManager {
/**
* Get website's page by link.
*/
- public WeblogTemplate getPageByLink(Weblog w, String p)
+ public List<WeblogTemplate> getPagesByLink(Weblog w, String p)
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,51 +18,19 @@
package org.apache.roller.weblogger.business.jpa;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.sql.Timestamp;
-import java.util.Comparator;
-import java.util.Hashtable;
-import javax.persistence.NoResultException;
-
-import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.BookmarkManager;
-import org.apache.roller.weblogger.business.MediaFileManager;
-import org.apache.roller.weblogger.business.UserManager;
-import org.apache.roller.weblogger.business.WeblogEntryManager;
-import org.apache.roller.weblogger.business.WeblogManager;
-import org.apache.roller.weblogger.business.Weblogger;
-import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.business.*;
import org.apache.roller.weblogger.business.pings.AutoPingManager;
import org.apache.roller.weblogger.business.pings.PingTargetManager;
import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.pojos.AutoPing;
-import org.apache.roller.weblogger.pojos.MediaFileDirectory;
-import org.apache.roller.weblogger.pojos.PingQueueEntry;
-import org.apache.roller.weblogger.pojos.PingTarget;
-import org.apache.roller.weblogger.pojos.WeblogReferrer;
-import org.apache.roller.weblogger.pojos.StatCount;
-import org.apache.roller.weblogger.pojos.StatCountCountComparator;
-import org.apache.roller.weblogger.pojos.TagStat;
-import org.apache.roller.weblogger.pojos.WeblogCategory;
-import org.apache.roller.weblogger.pojos.WeblogEntry;
-import org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate;
-import org.apache.roller.weblogger.pojos.WeblogEntryTag;
-import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.pojos.User;
-import org.apache.roller.weblogger.pojos.WeblogBookmark;
-import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
+import org.apache.roller.weblogger.pojos.*;
+
+import javax.persistence.NoResultException;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.*;
/*
@@ -531,7 +499,7 @@ public class JPAWeblogManagerImpl implem
/**
* Use JPA directly because Weblogger's Query API does too much allocation.
*/
- public WeblogTemplate getPageByLink(Weblog website, String pagelink)
+ public List<WeblogTemplate> getPagesByLink(Weblog website, String pagelink)
throws WebloggerException {
if (website == null)
@@ -544,7 +512,7 @@ public class JPAWeblogManagerImpl implem
query.setParameter(1, website);
query.setParameter(2, pagelink);
try {
- return (WeblogTemplate)query.getSingleResult();
+ return (List<WeblogTemplate>)query.getResultList();
} catch (NoResultException e) {
return null;
}
Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedTheme.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedTheme.java?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedTheme.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/SharedTheme.java Wed Jun 29 05:55:05 2011
@@ -18,18 +18,12 @@
package org.apache.roller.weblogger.business.themes;
-import java.io.File;
+import org.apache.roller.weblogger.pojos.Theme;
+import org.apache.roller.weblogger.pojos.ThemeResource;
+
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-import org.apache.roller.weblogger.pojos.Theme;
-import org.apache.roller.weblogger.pojos.ThemeResource;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
/**
@@ -41,6 +35,7 @@ public abstract class SharedTheme implem
protected String id = null;
protected String name = null;
protected String description = null;
+ private String type = null;
protected String author = null;
protected Date lastModified = null;
protected boolean enabled = false;
@@ -107,4 +102,11 @@ public abstract class SharedTheme implem
this.enabled = enabled;
}
+ 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/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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,17 +18,6 @@
package org.apache.roller.weblogger.business.themes;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,6 +25,12 @@ import org.apache.roller.weblogger.pojos
import org.apache.roller.weblogger.pojos.ThemeTemplate;
import org.apache.roller.weblogger.pojos.WeblogTemplate;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.*;
+
/**
* The Theme object encapsulates all elements of a single weblog theme. It
@@ -60,7 +55,7 @@ public class SharedThemeFromDir extends
private Map templatesByName = new HashMap();
// we keep templates in a Map for faster lookups by link
- // the Map contains ... (template link, ThemeTemplate)
+ // the Map contains ... (template link, List<tThemeTemplate>)
private Map templatesByLink = new HashMap();
// we keep templates in a Map for faster lookups by action
@@ -88,8 +83,8 @@ public class SharedThemeFromDir extends
public ThemeResource getPreviewImage() {
return this.previewImage;
}
-
-
+
+
/**
* Get the collection of all templates associated with this Theme.
*/
@@ -129,8 +124,8 @@ public class SharedThemeFromDir extends
* Lookup the specified template by link.
* Returns null if the template cannot be found.
*/
- public ThemeTemplate getTemplateByLink(String link) {
- return (ThemeTemplate) this.templatesByLink.get(link);
+ public List<ThemeTemplate> getTemplatesByLink(String link) {
+ return (List<ThemeTemplate>) this.templatesByLink.get(link);
}
@@ -206,6 +201,7 @@ public class SharedThemeFromDir extends
setId(themeMetadata.getId());
setName(themeMetadata.getName());
setDescription(themeMetadata.getName());
+ setType(themeMetadata.getType());
setAuthor(themeMetadata.getAuthor());
setLastModified(null);
setEnabled(true);
@@ -246,7 +242,7 @@ public class SharedThemeFromDir extends
new Date(templateFile.lastModified()),
stylesheetTmpl.getTemplateLanguage(),
false,
- false);
+ false,stylesheetTmpl.getType());
// store it
this.stylesheet = theme_template;
@@ -316,7 +312,9 @@ public class SharedThemeFromDir extends
new Date(templateFile.lastModified()),
templateMetadata.getTemplateLanguage(),
templateMetadata.isHidden(),
- templateMetadata.isNavbar());
+ templateMetadata.isNavbar(),
+ templateMetadata.getType());
+ ;
// add it to the theme
addTemplate(theme_template);
@@ -363,8 +361,18 @@ public class SharedThemeFromDir extends
*/
private void addTemplate(ThemeTemplate template) {
this.templatesByName.put(template.getName(), template);
- this.templatesByLink.put(template.getLink(), template);
- if(!ThemeTemplate.ACTION_CUSTOM.equals(template.getAction())) {
+
+ // check if there is an existing template for given link and append if exists.
+ List<ThemeTemplate> templates = new ArrayList<ThemeTemplate>();
+ if (!templatesByLink.containsKey(template.getLink())) {
+ templates.add(template);
+ templatesByLink.put(template.getLink(), templates);
+ } else {
+ templates = (List<ThemeTemplate>) templatesByLink.get(template.getLink());
+ templates.add(template);
+ templatesByLink.put(template.getLink(), templates);
+ }
+ if (!ThemeTemplate.ACTION_CUSTOM.equals(template.getAction())) {
this.templatesByAction.put(template.getAction(), template);
}
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,10 +18,10 @@
package org.apache.roller.weblogger.business.themes;
+import org.apache.roller.weblogger.pojos.ThemeTemplate;
+
import java.io.Serializable;
import java.util.Date;
-import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
/**
@@ -41,6 +41,7 @@ public class SharedThemeTemplate impleme
private boolean hidden = false;
private boolean navbar = false;
private String outputContentType = null;
+ private String type = null;
private SharedTheme myTheme = null;
@@ -49,7 +50,7 @@ public class SharedThemeTemplate impleme
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 tempLang, boolean hid, boolean navbar, String type) {
this.myTheme = theme;
this.id = id;
@@ -62,6 +63,7 @@ public class SharedThemeTemplate impleme
this.templateLanguage = tempLang;
this.hidden = hid;
this.navbar = navbar;
+ this.type = type;
}
@@ -171,5 +173,12 @@ public class SharedThemeTemplate impleme
public void setAction(String action) {
this.action = action;
}
-
+
+ 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/ThemeManager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java Wed Jun 29 05:55:05 2011
@@ -92,4 +92,18 @@ public interface ThemeManager {
* @return true, if reloaded theme from disk
*/
public boolean reLoadThemeFromDisk(String reloadTheme);
+
+ /**
+ * To return the list of Mobile themes in themes list
+ *
+ * @return ListofMobileThemes
+ */
+ public List getEnabledMobileThemeList();
+
+ /**
+ * To return the list of Standard themes in themes list
+ *
+ * @return
+ */
+ public List getEnabledStandardThemeList();
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -17,39 +17,25 @@
*/
package org.apache.roller.weblogger.business.themes;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.InitializationException;
import org.apache.roller.weblogger.business.MediaFileManager;
-import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.pojos.MediaFileDirectory;
-import org.apache.roller.weblogger.pojos.Theme;
-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.pojos.WeblogTheme;
-import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.roller.weblogger.pojos.*;
import org.apache.roller.weblogger.util.RollerMessages;
+import javax.activation.FileTypeMap;
+import javax.activation.MimetypesFileTypeMap;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
/**
* Base implementation of a ThemeManager.
*
@@ -241,6 +227,7 @@ public class ThemeManagerImpl implements
// NOTE: decorators are deprecated starting in 4.0
template.setDecoratorName(null);
template.setLastModified(new Date());
+ template.setType(themeTemplate.getType());
// save it
wmgr.savePage(template);
@@ -423,4 +410,38 @@ public class ThemeManagerImpl implements
return reloaded;
}
+
+ public List getEnabledMobileThemeList() {
+ List all_themes = new ArrayList(this.themes.values());
+ List mobileThemes = new ArrayList();
+
+ for(int i = 0 ; i<all_themes.size(); i++){
+ Theme theme = (Theme) all_themes.get(i);
+
+ if("mobile".equals(theme.getType())){
+ mobileThemes.add(theme);
+ }
+ }
+ // sort 'em ... default ordering for themes is by name
+ Collections.sort(mobileThemes);
+
+ return mobileThemes;
+ }
+
+ public List getEnabledStandardThemeList() {
+ List all_themes = new ArrayList(this.themes.values());
+ List standardThemes = new ArrayList();
+
+ for(int i = 0 ; i<all_themes.size(); i++){
+ Theme theme = (Theme) all_themes.get(i);
+
+ if("standard".equals(theme.getType())){
+ standardThemes.add(theme);
+ }
+ }
+ // sort 'em ... default ordering for themes is by name
+ Collections.sort(standardThemes);
+
+ return standardThemes;
+ }
}
Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadata.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadata.java?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadata.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/business/themes/ThemeMetadata.java Wed Jun 29 05:55:05 2011
@@ -30,6 +30,7 @@ public class ThemeMetadata {
private String id = null;
private String name = null;
private String author = null;
+ private String type = null;
private String previewImage = null;
private ThemeMetadataTemplate stylesheet = null;
private Set templates = new HashSet();
@@ -103,5 +104,12 @@ public class ThemeMetadata {
public void setStylesheet(ThemeMetadataTemplate stylesheet) {
this.stylesheet = stylesheet;
}
-
+
+ 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/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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,10 +18,6 @@
package org.apache.roller.weblogger.business.themes;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.roller.weblogger.pojos.WeblogTemplate;
import org.jdom.Document;
@@ -29,6 +25,11 @@ import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+
/**
* The parser for theme xml descriptors.
@@ -58,6 +59,7 @@ public class ThemeMetadataParser {
theme.setId(root.getChildText("id"));
theme.setName(root.getChildText("name"));
theme.setAuthor(root.getChildText("author"));
+ theme.setType(root.getChildText("type"));
// if either id or name is null then throw a parsing exception
if(StringUtils.isEmpty(theme.getId()) || StringUtils.isEmpty(theme.getName())) {
@@ -76,6 +78,11 @@ 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
@@ -93,6 +100,13 @@ public class ThemeMetadataParser {
while (templatesIter.hasNext()) {
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())) {
@@ -122,6 +136,7 @@ public class ThemeMetadataParser {
template.setTemplateLanguage(element.getChildText("templateLanguage"));
template.setContentType(element.getChildText("contentType"));
template.setContentsFile(element.getChildText("contentsFile"));
+
String navbar = element.getChildText("navbar");
if("true".equalsIgnoreCase(navbar)) {
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -33,6 +33,7 @@ public class ThemeMetadataTemplate {
private String templateLanguage = null;
private String contentType = null;
private String contentsFile = null;
+ private String type = null;
public String getAction() {
return action;
@@ -105,5 +106,12 @@ public class ThemeMetadataTemplate {
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,16 +18,13 @@
package org.apache.roller.weblogger.business.themes;
-import java.util.Date;
-import java.util.List;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.MediaFileManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.MediaFile;
-import org.apache.roller.weblogger.pojos.ThemeResource;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
-import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.*;
+
+import java.util.Date;
+import java.util.List;
/**
@@ -48,7 +45,11 @@ public class WeblogCustomTheme extends W
public String getName() {
return CUSTOM;
}
-
+
+ public String getType() {
+ return CUSTOM;
+ }
+
public String getDescription() {
return CUSTOM;
}
@@ -79,7 +80,13 @@ public class WeblogCustomTheme extends W
* Returns null if no stylesheet can be found.
*/
public ThemeTemplate getStylesheet() throws WebloggerException {
- return getTemplateByLink(this.weblog.getCustomStylesheetPath());
+ List styleSheetsList = getTemplatesByLink(this.weblog.getCustomStylesheetPath());
+
+ if(styleSheetsList != null && !styleSheetsList.isEmpty()){
+ return (ThemeTemplate) styleSheetsList.get(0);
+ }
+
+ return null;
}
@@ -121,11 +128,12 @@ public class WeblogCustomTheme extends W
* Lookup the specified template by link.
* Returns null if the template cannot be found.
*/
- public ThemeTemplate getTemplateByLink(String link) throws WebloggerException {
+ public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException {
if(link == null)
return null;
+ List templatesList = WebloggerFactory.getWeblogger().getWeblogManager().getPagesByLink(this.weblog, link);
- return WebloggerFactory.getWeblogger().getWeblogManager().getPageByLink(this.weblog, link);
+ return templatesList;
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,22 +18,14 @@
package org.apache.roller.weblogger.business.themes;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.MediaFileManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.MediaFile;
-import org.apache.roller.weblogger.pojos.ThemeResource;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
-import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.*;
+
+import java.util.*;
/**
@@ -59,7 +51,11 @@ public class WeblogSharedTheme extends W
public String getName() {
return this.theme.getName();
}
-
+
+ public String getType() {
+ return this.theme.getType();
+ }
+
public String getDescription() {
return this.theme.getDescription();
}
@@ -128,8 +124,18 @@ public class WeblogSharedTheme extends W
ThemeTemplate stylesheet = this.theme.getStylesheet();
if(stylesheet != null) {
// now try getting custom version from weblog
- ThemeTemplate override = WebloggerFactory.getWeblogger()
- .getWeblogManager().getPageByLink(this.weblog, stylesheet.getLink());
+
+ // 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);
+ }
if(override != null) {
stylesheet = override;
}
@@ -197,8 +203,9 @@ public class WeblogSharedTheme extends W
* Lookup the specified template by link.
* Returns null if the template cannot be found.
*/
- public ThemeTemplate getTemplateByLink(String link) throws WebloggerException {
-
+ public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException {
+
+ List templatesList = null;
if(link == null)
return null;
@@ -206,21 +213,24 @@ public class WeblogSharedTheme extends W
// if name refers to the stylesheet then return result of getStylesheet()
ThemeTemplate stylesheet = getStylesheet();
- if(stylesheet != null && link.equals(stylesheet.getLink())) {
- return stylesheet;
+ 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;
}
// first check if this user has selected a theme
// if so then return the proper theme template
- template = this.theme.getTemplateByLink(link);
+ templatesList = this.theme.getTemplatesByLink(link);
// if we didn't get the Template from a theme then look in the db
- if(template == null) {
- template = WebloggerFactory.getWeblogger()
- .getWeblogManager().getPageByLink(this.weblog, link);
+ if(templatesList == null || templatesList.isEmpty()) {
+ templatesList = WebloggerFactory.getWeblogger()
+ .getWeblogManager().getPagesByLink(this.weblog, link);
}
- return template;
+ return templatesList;
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -37,6 +37,7 @@ public class StaticTemplate implements T
private Date lastModified = new Date();
private String templateLanguage = null;
private String outputContentType = null;
+ private String type = "standard";
public StaticTemplate(String id, String lang) {
@@ -91,6 +92,14 @@ public class StaticTemplate implements T
return outputContentType;
}
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type){
+ this.type = type;
+ }
+
public void setOutputContentType(String outputContentType) {
this.outputContentType = outputContentType;
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -44,6 +44,7 @@ public class StaticThemeTemplate impleme
private String outputContentType = null;
private String decoratorName = null;
private ThemeTemplate decorator = null;
+ private String type = "standard";
public StaticThemeTemplate(String id, String lang) {
@@ -99,6 +100,14 @@ public class StaticThemeTemplate impleme
return outputContentType;
}
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type){
+ this.type = type;
+ }
+
public void setOutputContentType(String outputContentType) {
this.outputContentType = outputContentType;
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -63,5 +63,11 @@ public interface Template {
* Content-type of output or null if none defined.
*/
public String getOutputContentType();
+
+ /**
+ *
+ * type of the template , eg: standard , mobile etc.
+ */
+ public String getType();
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,9 +18,10 @@
package org.apache.roller.weblogger.pojos;
+import org.apache.roller.weblogger.WebloggerException;
+
import java.util.Date;
import java.util.List;
-import org.apache.roller.weblogger.WebloggerException;
/**
@@ -39,7 +40,11 @@ public interface Theme {
* A common or display name for this Theme.
*/
public String getName();
-
+
+ /**
+ * Metadata to identify a theme Type eg: standard , mobile etc.
+ */
+ public String getType();
/**
* A description of the Theme.
@@ -95,7 +100,7 @@ public interface Theme {
* Lookup a template by link.
* Returns null if the template cannot be found.
*/
- public ThemeTemplate getTemplateByLink(String link) throws WebloggerException;
+ public List<ThemeTemplate> getTemplatesByLink(String link) throws WebloggerException;
/**
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -94,6 +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();
@@ -113,6 +114,7 @@ public class Weblog implements Serializa
String email,
String emailFrom,
String editorTheme,
+ String mobileTheme,
String locale,
String timeZone) {
@@ -123,6 +125,7 @@ public class Weblog implements Serializa
this.emailAddress = email;
this.emailFromAddress = emailFrom;
this.editorTheme = editorTheme;
+ this.mobileThemeName = mobileTheme;
this.locale = locale;
this.timeZone = timeZone;
}
@@ -1252,4 +1255,30 @@ public class Weblog implements Serializa
/** No-op method to please XDoclet */
public void setEntryCount(int ignored) {}
+
+
+ /**
+ *
+ * @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;
+ }
}
Modified: roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplate.java?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplate.java (original)
+++ roller/branches/roller_mobile/weblogger-business/src/main/java/org/apache/roller/weblogger/pojos/WeblogTemplate.java Wed Jun 29 05:55:05 2011
@@ -18,16 +18,17 @@
package org.apache.roller.weblogger.pojos;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.util.UUIDGenerator;
+import org.apache.roller.weblogger.WebloggerException;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
/**
@@ -57,6 +58,7 @@ public class WeblogTemplate implements T
private boolean navbar = false;
private String decoratorName = null;
private String outputContentType = null;
+ private String type = null;
// associations
private Weblog weblog = null;
@@ -263,5 +265,12 @@ public class WeblogTemplate implements T
.append(getWebsite())
.toHashCode();
}
-
+
+ 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/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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,22 +18,12 @@
package org.apache.roller.weblogger.pojos.wrapper;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-import java.util.TimeZone;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.URLStrategy;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.pojos.WeblogCategory;
-import org.apache.roller.weblogger.pojos.WeblogEntry;
-import org.apache.roller.weblogger.pojos.WeblogEntryComment;
-import org.apache.roller.weblogger.pojos.WeblogReferrer;
+import org.apache.roller.weblogger.pojos.*;
+
+import java.util.*;
/**
@@ -76,9 +66,9 @@ public class WeblogWrapper {
}
- public ThemeTemplateWrapper getPageByLink(String link)
+ public List <ThemeTemplateWrapper> getPageByLink(String link)
throws WebloggerException {
- return ThemeTemplateWrapper.wrap(this.pojo.getTheme().getTemplateByLink(link));
+ return (List<ThemeTemplateWrapper>) ThemeTemplateWrapper.wrap((ThemeTemplate) this.pojo.getTheme().getTemplatesByLink(link));
}
@@ -268,6 +258,14 @@ 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;
+ }
/**
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -91,7 +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('action' 'varchar(16)' 'custom'),
+ #columnNotNullWithDefault('type' 'varchar(16)' 'standard')
);
create index wp_name_idx on webpage( name$!db.INDEXSIZE );
create index wp_link_idx on webpage( link$!db.INDEXSIZE );
@@ -115,6 +116,7 @@ create table website (
emailfromaddress varchar(255),
emailaddress varchar(255) not null,
editortheme varchar(255),
+ mobilethemename varchar(255),
locale varchar(20),
timezone varchar(50),
defaultplugins varchar(255),
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -80,6 +80,7 @@ public class WeblogPageTest extends Test
testPage.setLastModified(new java.util.Date());
testPage.setWebsite(TestUtils.getManagedWebsite(testWeblog));
testPage.setTemplateLanguage("velocity");
+ testPage.setType("standard");
}
public void tearDown() throws Exception {
@@ -173,7 +174,7 @@ public class WeblogPageTest extends Test
// lookup by link
page = null;
- page = mgr.getPageByLink(testWeblog, testPage.getLink());
+ page = mgr.getPagesByLink(testWeblog, testPage.getLink()).get(0);
assertNotNull(page);
assertEquals(testPage.getContents(), page.getContents());
Added: 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=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java (added)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java Wed Jun 29 05:55:05 2011
@@ -0,0 +1,65 @@
+/*
+ * 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.ui.rendering.mobile;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class MobileDeviceRepository {
+
+
+ public static final String possibleDevices1 = ".*(android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)" +
+ "|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\\\/|" +
+ "plucker|pocket|psp|symbian|treo|up\\\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino).*" ;
+
+ public static final String possibleDevices2=
+ "\"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\\\-)|" +
+ "ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\\\-m|r |s )|" +
+ "avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\\\-(n|u)|c55\\\\/|capi|ccwa|cdm\\\\-|" +
+ "cell|chtm|cldc|cmd\\\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\\\-d)|" +
+ "el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\\\-|_)|g1 u|g560|gene|gf\\\\-5|g\\\\-mo|" +
+ "go(\\\\.w|od)|gr(ad|un)|haie|hcit|hd\\\\-(m|p|t)|hei\\\\-|hi(pt|ta)|hp( i|ip)|hs\\\\-c|" +
+ "ht(c(\\\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\\\-(20|go|ma)|i230|iac( |\\\\-|\\\\/)|ibro|idea|ig01|ikom|im1k|" +
+ "inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\\\/)|klon|kpt |kwc\\\\-|kyo(c|k)|le(no|xi)|" +
+ "lg( g|\\\\/(k|l|u)|50|54|e\\\\-|e\\\\/|\\\\-[a-w])|libw|lynx|m1\\\\-w|m3ga|m50\\\\/|" +
+ "ma(te|ui|xo)|mc(01|21|ca)|m\\\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\\\-| |o|v)|zz)|" +
+ "mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\\\-|on|tf|wf|wg|wt)|" +
+ "nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\\\-([1-8]|c))|phil|pire|pl(ay|uc)|" +
+ "pn\\\\-2|po(ck|rt|se)|prox|psio|pt\\\\-g|qa\\\\-a|qc(07|12|21|32|60|\\\\-[2-7]|i\\\\-)|qtek|r380|r600|raks|" +
+ "rim9|ro(ve|zo)|s55\\\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\\\-|oo|p\\\\-)|sdk\\\\/|" +
+ "se(c(\\\\-|0|1)|47|mc|nd|ri)|sgh\\\\-|shar|sie(\\\\-|m)|sk\\\\-0|sl(45|id)|" +
+ "sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\\\-|v\\\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|" +
+ "ta(gt|lk)|tcl\\\\-|tdg\\\\-|tel(i|m)|tim\\\\-|t\\\\-mo|to(pl|sh)|ts(70|m\\\\-|m3|m5)|tx\\\\-9|" +
+ "up(\\\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\\\-v)|vm40|voda|vulc|" +
+ "vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\\\-|2|g)|" +
+ "yas\\\\-|your|zeto|zte\\\\-";
+
+ /**
+ *
+ * ToCheck if a request is mobile.
+ * @param request
+ * @return boolean
+ */
+ public static boolean isMobileDevice(HttpServletRequest request) {
+
+ String userAgent = request.getHeader("User-Agent").toLowerCase();
+ return (userAgent.matches(possibleDevices1)||userAgent.substring(0,4).matches(possibleDevices2));
+
+ }
+
+}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,47 +18,49 @@
package org.apache.roller.weblogger.ui.rendering.servlets;
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.HitCountQueue;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
+import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.referrers.IncomingReferrer;
import org.apache.roller.weblogger.business.referrers.ReferrerQueueManager;
import org.apache.roller.weblogger.business.themes.ThemeManager;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogEntryManager;
import org.apache.roller.weblogger.pojos.StaticThemeTemplate;
import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.ui.core.RollerContext;
-import org.apache.roller.weblogger.ui.rendering.util.InvalidRequestException;
-import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
-import org.apache.roller.weblogger.util.cache.CachedContent;
import org.apache.roller.weblogger.ui.rendering.Renderer;
import org.apache.roller.weblogger.ui.rendering.RendererManager;
+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.cache.SiteWideCache;
+import org.apache.roller.weblogger.ui.rendering.util.InvalidRequestException;
+import org.apache.roller.weblogger.ui.rendering.util.ModDateHeaderUtil;
import org.apache.roller.weblogger.ui.rendering.util.WeblogEntryCommentForm;
+import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
+import org.apache.roller.weblogger.ui.rendering.util.cache.SiteWideCache;
import org.apache.roller.weblogger.ui.rendering.util.cache.WeblogPageCache;
-import org.apache.roller.weblogger.ui.rendering.util.ModDateHeaderUtil;
import org.apache.roller.weblogger.util.BlacklistChecker;
import org.apache.roller.weblogger.util.I18nMessages;
+import org.apache.roller.weblogger.util.cache.CachedContent;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspFactory;
+import javax.servlet.jsp.PageContext;
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
/**
* Provides access to weblog pages.
@@ -122,6 +124,8 @@ public class PageServlet extends HttpSer
log.debug("Entering");
+
+
// do referrer processing, if it's enabled
// NOTE: this *must* be done first because it triggers a hibernate flush
// which will close the active session and cause lazy init exceptions otherwise
@@ -138,6 +142,7 @@ public class PageServlet extends HttpSer
}
+
Weblog weblog = null;
boolean isSiteWide = false;
@@ -240,6 +245,12 @@ public class PageServlet extends HttpSer
// figure out what template to use
ThemeTemplate page = null;
+ if(MobileDeviceRepository.isMobileDevice(request)){
+ // setting the editor theme as mobile theme to render for mobile device
+ weblog.setEditorTheme(weblog.getMobileThemeName()) ;
+
+ }
+
// 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) {
@@ -636,4 +647,4 @@ public class PageServlet extends HttpSer
return false;
}
-}
\ No newline at end of file
+}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,33 +18,30 @@
package org.apache.roller.weblogger.ui.rendering.servlets;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
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.config.WebloggerRuntimeConfig;
-import org.apache.roller.weblogger.pojos.Template;
-import org.apache.roller.weblogger.pojos.Theme;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
-import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.*;
import org.apache.roller.weblogger.ui.core.RollerContext;
-import org.apache.roller.weblogger.util.cache.CachedContent;
import org.apache.roller.weblogger.ui.rendering.Renderer;
import org.apache.roller.weblogger.ui.rendering.RendererManager;
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;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspFactory;
+import javax.servlet.jsp.PageContext;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
/**
@@ -113,6 +110,9 @@ 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);
}
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,27 +18,18 @@
package org.apache.roller.weblogger.ui.rendering.servlets;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.themes.ThemeManager;
+import org.apache.roller.weblogger.config.WebloggerConfig;
+import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.ThemeTemplate;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.rendering.Renderer;
import org.apache.roller.weblogger.ui.rendering.RendererManager;
+import org.apache.roller.weblogger.ui.rendering.mobile.MobileDeviceRepository;
import org.apache.roller.weblogger.ui.rendering.model.Model;
import org.apache.roller.weblogger.ui.rendering.model.ModelLoader;
import org.apache.roller.weblogger.ui.rendering.model.SearchResultsModel;
@@ -49,6 +40,17 @@ import org.apache.roller.weblogger.ui.re
import org.apache.roller.weblogger.util.I18nMessages;
import org.apache.roller.weblogger.util.cache.CachedContent;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspFactory;
+import javax.servlet.jsp.PageContext;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Handles search queries for weblogs.
@@ -95,6 +97,10 @@ public class SearchServlet extends HttpS
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
+
+ //is a mobile request
+
+ boolean isMobileRequest = MobileDeviceRepository.isMobileDevice(request);
// do we need to force a specific locale for the request?
if(searchRequest.getLocale() == null && !weblog.isShowAllLangs()) {
@@ -104,9 +110,15 @@ public class SearchServlet extends HttpS
// lookup template to use for rendering
ThemeTemplate page = null;
try {
- // first try looking for a specific search page
+ // 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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,25 +18,26 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.WeblogEntryManager;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.ThemeTemplate;
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.WeblogTemplate;
+import org.apache.roller.weblogger.ui.rendering.mobile.MobileDeviceRepository;
import org.apache.roller.weblogger.util.URLUtilities;
import org.apache.roller.weblogger.util.Utilities;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Represents a request for a Roller weblog page.
@@ -353,7 +354,39 @@ public class WeblogPageRequest extends W
if(weblogPage == null && weblogPageName != null) {
try {
- weblogPage = getWeblog().getTheme().getTemplateByLink(weblogPageName);
+
+ 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;
+ }
+
+
+
} 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/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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,17 +18,16 @@
package org.apache.roller.weblogger.ui.struts2.core;
-import java.util.List;
import org.apache.commons.lang.CharSetUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
+import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.themes.ThemeManager;
-import org.apache.roller.weblogger.business.UserManager;
+import org.apache.roller.weblogger.config.WebloggerConfig;
+import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogPermission;
@@ -36,6 +35,8 @@ import org.apache.roller.weblogger.ui.st
import org.apache.roller.weblogger.util.Utilities;
import org.apache.struts2.interceptor.validation.SkipValidation;
+import java.util.List;
+
/**
* Allows user to create a new website.
@@ -119,6 +120,7 @@ public class CreateWeblog extends UIActi
getBean().getEmailAddress(),
getBean().getEmailAddress(),
getBean().getTheme(),
+ getBean().getMobileTheme(),
getBean().getLocale(),
getBean().getTimeZone());
@@ -184,6 +186,16 @@ public class CreateWeblog extends UIActi
ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
return themeMgr.getEnabledThemesList();
}
+
+ public List getMobileThemes(){
+ ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
+ return themeMgr.getEnabledMobileThemeList();
+ }
+
+ public List getStandardThemes(){
+ ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
+ return themeMgr.getEnabledStandardThemeList();
+ }
public CreateWeblogBean getBean() {
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -31,6 +31,7 @@ public class CreateWeblogBean {
private String locale;
private String timeZone;
private String theme;
+ private String mobileTheme;
public String getDescription() {
@@ -88,5 +89,12 @@ public class CreateWeblogBean {
public void setTimeZone(String timeZone) {
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=1140970&r1=1140969&r2=1140970&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 Wed Jun 29 05:55:05 2011
@@ -18,22 +18,19 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
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.business.themes.ThemeManager;
-import org.apache.roller.weblogger.pojos.Theme;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
+import org.apache.roller.weblogger.pojos.*;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
/**
* Action which handles editing for a weblog stylesheet override template.
@@ -75,9 +72,14 @@ public class StylesheetEdit extends UIAc
if(stylesheet != null) {
log.debug("custom stylesheet path is - "+stylesheet.getLink());
try {
- setTemplate(WebloggerFactory.getWeblogger().getWeblogManager()
- .getPageByLink(getActionWeblog(), stylesheet.getLink()));
-
+ 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));
+ }
+
if(getTemplate() == null) {
log.debug("custom stylesheet not found, creating it");
@@ -93,6 +95,8 @@ 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");
WebloggerFactory.getWeblogger().getWeblogManager().savePage(stylesheetTmpl);
WebloggerFactory.getWeblogger().flush();