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 [2/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...
Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.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/TemplateEdit.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java Wed Jun 29 05:55:05 2011
@@ -18,10 +18,6 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,6 +31,11 @@ import org.apache.roller.weblogger.util.
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.interceptor.validation.SkipValidation;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
/**
* Action which handles editing for a single WeblogTemplate.
@@ -48,6 +49,8 @@ public class TemplateEdit extends UIActi
// the template we are working on
private WeblogTemplate template = null;
+
+ private boolean mobileTemplateAvailable = false;
public TemplateEdit() {
@@ -62,10 +65,13 @@ public class TemplateEdit extends UIActi
return Collections.singletonList(WeblogPermission.ADMIN);
}
-
+
public void myPrepare() {
try {
setTemplate(WebloggerFactory.getWeblogger().getWeblogManager().getPage(getBean().getId()));
+ getBean().setStandardTemplateId(getStandardID());
+ getBean().setMobileTemplateId(getMobileID());
+ setMobileTemplateAvailable(hasManyTemplates());
} catch (WebloggerException ex) {
log.error("Error looking up template - "+getBean().getId(), ex);
}
@@ -86,7 +92,8 @@ public class TemplateEdit extends UIActi
WeblogTemplate page = getTemplate();
getBean().copyFrom(template);
-
+
+
// empty content-type indicates that page uses auto content-type detection
if (StringUtils.isEmpty(page.getOutputContentType())) {
getBean().setAutoContentType(Boolean.TRUE);
@@ -97,6 +104,49 @@ public class TemplateEdit extends UIActi
return INPUT;
}
+
+ /**
+ * This is to sync mobile theme and standard theme if name or link changed
+ */
+ private void synchronizeThemes(){
+
+ boolean isModified = false;
+ WeblogTemplate mobileTemplate = null;
+ WeblogTemplate standardTemplate = null;
+ try {
+ mobileTemplate = WebloggerFactory.getWeblogger().getWeblogManager().
+ getPage(getBean().getMobileTemplateId());
+ standardTemplate = WebloggerFactory.getWeblogger().getWeblogManager().
+ getPage(getBean().getStandardTemplateId());
+ } catch (WebloggerException e) {
+ log.error("error in looking up theme ", e);
+ }
+
+ if (standardTemplate != null && mobileTemplate != null) {
+ // if standard template has a different tempalte version we are going to change mobile accordingly
+ if (!mobileTemplate.getName().equals(standardTemplate.getName() + ".Mobile")) {
+ mobileTemplate.setName(standardTemplate.getName() + ".Mobile");
+ isModified = true;
+ }
+ if (!mobileTemplate.getLink().equals(standardTemplate.getLink())) {
+ mobileTemplate.setLink(standardTemplate.getLink());
+ isModified = true;
+ }
+ if (isModified) {
+ // save template and flush
+ try {
+ WebloggerFactory.getWeblogger().getWeblogManager().savePage(mobileTemplate);
+ WebloggerFactory.getWeblogger().flush();
+ } catch (WebloggerException e) {
+ log.error("Error syncing with standard template", e);
+ }
+ // notify caches
+ CacheManager.invalidate(mobileTemplate);
+ }
+
+ }
+
+ }
/**
@@ -133,6 +183,8 @@ public class TemplateEdit extends UIActi
// notify caches
CacheManager.invalidate(template);
+
+ synchronizeThemes();
// success message
addMessage("pageForm.save.success", template.getName());
@@ -145,7 +197,43 @@ public class TemplateEdit extends UIActi
return INPUT;
}
-
+
+
+ public String loadMobileTheme(){
+ if(getTemplate() == null) {
+ // TODO: i18n
+ addError("Unable to locate specified template");
+ return LIST;
+ }
+
+ WeblogTemplate mobile = null;
+
+ try {
+ mobile = WebloggerFactory.getWeblogger().getWeblogManager().getPageByName(getActionWeblog(),
+ template.getName()+".mobile");
+ } catch (WebloggerException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+
+ if(mobile == null){
+ addError("Unable to locate specified template");
+ return LIST;
+ }
+ getBean().copyFrom(mobile);
+
+
+ // empty content-type indicates that page uses auto content-type detection
+ if (StringUtils.isEmpty(mobile.getOutputContentType())) {
+ getBean().setAutoContentType(Boolean.TRUE);
+ } else {
+ getBean().setAutoContentType(Boolean.FALSE);
+ getBean().setManualContentType(mobile.getOutputContentType());
+ }
+
+ return INPUT;
+ }
+
+
private void myValidate() {
@@ -159,18 +247,19 @@ public class TemplateEdit extends UIActi
log.error("Error checking page name uniqueness", ex);
}
}
-
+ //TODO handle validation for link with combining type and link together
// if link changed make sure there isn't a conflict
- if(!StringUtils.isEmpty(getBean().getLink()) &&
+ /* if(!StringUtils.isEmpty(getBean().getLink()) &&
!getBean().getLink().equals(getTemplate().getLink())) {
try {
- if(WebloggerFactory.getWeblogger().getWeblogManager().getPageByLink(getActionWeblog(), getBean().getLink()) != null) {
+ if(WebloggerFactory.getWeblogger().getWeblogManager().getPagesByLink(getActionWeblog(), getBean().getLink()) != null &&
+ ) {
addError("pagesForm.error.alreadyExists", getBean().getLink());
}
} catch (WebloggerException ex) {
log.error("Error checking page link uniqueness", ex);
}
- }
+ }*/
}
@@ -195,6 +284,74 @@ public class TemplateEdit extends UIActi
public void setTemplate(WeblogTemplate template) {
this.template = template;
+
+
}
-
-}
+ //get the ID for mobile tempalte
+ private String getMobileID(){
+
+ List<WeblogTemplate> templates = null;
+ try {
+ templates = WebloggerFactory.getWeblogger().getWeblogManager().
+ getPagesByLink(getActionWeblog(), template.getLink()) ;
+ } catch (WebloggerException e) {
+ log.error("error while getting template list." , e);
+ }
+
+ if (templates != null && templates.size() >1){
+ for(WeblogTemplate template : templates){
+ if("mobile".equals(template.getType())){
+ return template.getId();
+ }
+ }
+ }
+ return null;
+ }
+
+ public String getStandardID(){
+
+ List<WeblogTemplate> templates = null;
+ try {
+ templates = WebloggerFactory.getWeblogger().getWeblogManager().
+ getPagesByLink(getActionWeblog(), template.getLink()) ;
+ } catch (WebloggerException e) {
+ log.error("error while getting template list." , e);
+ }
+
+ if (templates != null && !templates.isEmpty()){
+ for(WeblogTemplate template : templates){
+ if("standard".equals(template.getType())){
+ return template.getId();
+ }
+ }
+ }
+ return null;
+ }
+
+ public boolean hasManyTemplates() {
+
+ List<WeblogTemplate> templates = null;
+ try {
+ templates = WebloggerFactory.getWeblogger().getWeblogManager().
+ getPagesByLink(getActionWeblog(), template.getLink());
+ } catch (WebloggerException e) {
+ log.error("error while getting template list.", e);
+ }
+ // we do not support editing mobile template pages for custom themes.
+ if( "custom".equals(getActionWeblog().getEditorTheme())){
+ return false;
+ }
+ else if (templates != null && templates.size() > 1) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isMobileTemplateAvailable() {
+ return mobileTemplateAvailable;
+ }
+
+ public void setMobileTemplateAvailable(boolean mobileTemplateAvailable) {
+ this.mobileTemplateAvailable = mobileTemplateAvailable;
+ }
+}
\ No newline at end of file
Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEditBean.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEditBean.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/TemplateEditBean.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEditBean.java Wed Jun 29 05:55:05 2011
@@ -18,8 +18,6 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.util.Locale;
-import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.pojos.WeblogTemplate;
@@ -39,6 +37,13 @@ public class TemplateEditBean {
private boolean hidden = false;
private Boolean autoContentType = Boolean.TRUE;
private String manualContentType = null;
+ private String type = null;
+
+ // template ID of mobile template version
+ private String mobileTemplateId = null;
+
+ // template ID of standard template version
+ private String standardTemplateId = null;
public String getId() {
@@ -159,6 +164,7 @@ public class TemplateEditBean {
this.navbar = dataHolder.isNavbar();
this.hidden = dataHolder.isHidden();
this.templateLanguage = dataHolder.getTemplateLanguage();
+ this.type = dataHolder.getType();
setManualContentType(dataHolder.getOutputContentType());
if(getManualContentType() != null) {
@@ -166,4 +172,24 @@ public class TemplateEditBean {
}
}
+ public String getMobileTemplateId() {
+ return mobileTemplateId;
+ }
+
+ public void setMobileTemplateId(String mobileTemplateId) {
+ this.mobileTemplateId = mobileTemplateId;
+ }
+
+ public String getStandardTemplateId() {
+ return standardTemplateId;
+ }
+
+ public void setStandardTemplateId(String standardTemplateId) {
+ this.standardTemplateId = standardTemplateId;
+ }
+
+ public boolean isMobile() {
+ return (id.equals(mobileTemplateId));
+ }
+
}
Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.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/Templates.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java Wed Jun 29 05:55:05 2011
@@ -18,10 +18,6 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,6 +28,11 @@ import org.apache.roller.weblogger.pojos
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
/**
* Templates listing page.
@@ -49,6 +50,7 @@ public class Templates extends UIAction
// name and action of new template if we are adding a template
private String newTmplName = null;
private String newTmplAction = null;
+ private String type = null;
public Templates() {
@@ -68,13 +70,24 @@ public class Templates extends UIAction
// query for templates list
try {
- // get current list of templates, minus custom stylesheet
+ // get current list of templates, minus custom stylesheet and auto generated mobile templates
List<WeblogTemplate> raw = WebloggerFactory.getWeblogger().getWeblogManager().getPages(getActionWeblog());
List<WeblogTemplate> pages = new ArrayList<WeblogTemplate>();
+
pages.addAll(raw);
- if(getActionWeblog().getTheme().getStylesheet() != null) {
- pages.remove(WebloggerFactory.getWeblogger().getWeblogManager().getPageByLink(getActionWeblog(),
- getActionWeblog().getTheme().getStylesheet().getLink()));
+
+ for(WeblogTemplate template : raw){
+ if("mobile".equals(template.getType())&&template.getName().endsWith(".Mobile")){
+ pages.remove(template);
+ }
+ }
+
+ if (getActionWeblog().getTheme().getStylesheet() != null) {
+ List<WeblogTemplate> stylesheets = WebloggerFactory.getWeblogger().getWeblogManager().getPagesByLink(getActionWeblog(),
+ getActionWeblog().getTheme().getStylesheet().getLink());
+ if (stylesheets != null && !stylesheets.isEmpty()) {
+ pages.remove(stylesheets.get(0));
+ }
}
setTemplates(pages);
@@ -127,6 +140,11 @@ public class Templates extends UIAction
newTemplate.setHidden(false);
newTemplate.setNavbar(false);
newTemplate.setLastModified( new Date() );
+ newTemplate.setType("standard");
+
+ if(WeblogTemplate.ACTION_CUSTOM.equals(getNewTmplAction())){
+ newTemplate.setLink(getNewTmplName());
+ }
// all templates start out as velocity templates
newTemplate.setTemplateLanguage("velocity");
@@ -148,10 +166,9 @@ public class Templates extends UIAction
// flush results to db
WebloggerFactory.getWeblogger().flush();
-
- // reset form fields
- setNewTmplName(null);
- setNewTmplAction(null);
+
+ // add roller generated mobile template
+ addMobileTemplate();
} catch (WebloggerException ex) {
log.error("Error adding new template for weblog - "+getActionWeblog().getHandle(), ex);
@@ -161,6 +178,62 @@ public class Templates extends UIAction
return execute();
}
+
+ public void addMobileTemplate(){
+
+ // validation
+ // myValidate();
+
+ if(!hasActionErrors()) try {
+
+ WeblogTemplate newMobileTemplate = new WeblogTemplate();
+ newMobileTemplate.setWebsite(getActionWeblog());
+ newMobileTemplate.setAction(getNewTmplAction());
+ newMobileTemplate.setName(getNewTmplName()+".Mobile");
+ newMobileTemplate.setDescription(newMobileTemplate.getName());
+ newMobileTemplate.setContents(getText("pageForm.newTemplateContent"));
+ newMobileTemplate.setHidden(false);
+ newMobileTemplate.setNavbar(false);
+ newMobileTemplate.setLastModified( new Date() );
+ newMobileTemplate.setType("mobile");
+
+ if(WeblogTemplate.ACTION_CUSTOM.equals(getNewTmplAction())){
+ newMobileTemplate.setLink(getNewTmplName());
+ }
+
+ // all templates start out as velocity templates
+ newMobileTemplate.setTemplateLanguage("velocity");
+
+ // for now, all templates just use _decorator
+ if(!"_decorator".equals(newMobileTemplate.getName())) {
+ newMobileTemplate.setDecoratorName("_decorator");
+ }
+
+ // save the new Template
+ WebloggerFactory.getWeblogger().getWeblogManager().savePage( newMobileTemplate );
+
+ // if this person happened to create a Weblog template from
+ // scratch then make sure and set the defaultPageId
+ if(WeblogTemplate.DEFAULT_PAGE.equals(newMobileTemplate.getName())) {
+ getActionWeblog().setDefaultPageId(newMobileTemplate.getId());
+ WebloggerFactory.getWeblogger().getWeblogManager().saveWeblog(getActionWeblog());
+ }
+
+ // flush results to db
+ WebloggerFactory.getWeblogger().flush();
+
+ // reset form fields
+ setNewTmplName(null);
+ setNewTmplAction(null);
+ setType(null);
+
+ } catch (WebloggerException ex) {
+ log.error("Error adding new mobile template for weblog - "+getActionWeblog().getHandle(), ex);
+ // TODO: i18n
+ addError("Error adding new mobile template");
+ }
+
+ }
// validation when adding a new template
@@ -221,5 +294,13 @@ public class Templates extends UIAction
public void setNewTmplAction(String newTmplAction) {
this.newTmplAction = newTmplAction;
}
-
+
+ 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/editor/ThemeEdit.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.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/ThemeEdit.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java Wed Jun 29 05:55:05 2011
@@ -18,8 +18,6 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -28,14 +26,13 @@ import org.apache.roller.weblogger.busin
import org.apache.roller.weblogger.business.themes.SharedTheme;
import org.apache.roller.weblogger.business.themes.ThemeManager;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
-import org.apache.roller.weblogger.pojos.Theme;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
-import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
+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.List;
+
/**
* Action for controlling theme selection.
@@ -44,14 +41,19 @@ public class ThemeEdit extends UIAction
private static Log log = LogFactory.getLog(Templates.class);
- // list of available themes
+ // list of available standard themes
private List themes = Collections.EMPTY_LIST;
+
+ private List mobileThemes = Collections.EMPTY_LIST;
// type of theme desired, either 'shared' or 'custom'
private String themeType = null;
// the chosen shared theme id
private String themeId = null;
+
+ //the chosen mobile theme id
+ private String mobileThemeId = null;
// import the selected theme to the action weblog
private boolean importTheme = false;
@@ -74,7 +76,8 @@ public class ThemeEdit extends UIAction
public void myPrepare() {
ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
- setThemes(themeMgr.getEnabledThemesList());
+ setThemes(themeMgr.getEnabledStandardThemeList());
+ setMobileThemes(themeMgr.getEnabledMobileThemeList());
}
@@ -85,6 +88,7 @@ public class ThemeEdit extends UIAction
setThemeId(null);
} else {
setThemeId(getActionWeblog().getTheme().getId());
+ setMobileThemeId(getActionWeblog().getMobileTheme().getId());
setImportThemeId(getActionWeblog().getTheme().getId());
}
@@ -206,6 +210,54 @@ public class ThemeEdit extends UIAction
return execute();
}
+ public String saveMobileTheme(){
+
+ Weblog weblog = getActionWeblog();
+ // make sure theme is valid and enabled
+ Theme newMobileTheme = null;
+ if(getThemeId() == null) {
+ // TODO: i18n
+ addError("No theme specified");
+
+ } else {
+ try {
+ ThemeManager themeMgr = WebloggerFactory.getWeblogger().getThemeManager();
+ newMobileTheme = themeMgr.getTheme(getMobileThemeId());
+
+ if(!newMobileTheme.isEnabled()) {
+ // TODO: i18n
+ addError("Theme not enabled");
+ }
+
+ } catch(Exception ex) {
+ log.warn(ex);
+ // TODO: i18n
+ addError("Theme not found");
+ }
+ }
+
+ if(!hasActionErrors()) try {
+ weblog.setMobileThemeName(getMobileThemeId());
+ log.debug("Saving theme "+getMobileThemeId()+" for weblog "+weblog.getHandle());
+
+ // save updated weblog and flush
+ WebloggerFactory.getWeblogger().getWeblogManager().saveWeblog(weblog);
+ WebloggerFactory.getWeblogger().flush();
+
+ // make sure to flush the page cache so ppl can see the change
+ CacheManager.invalidate(weblog);
+
+ // TODO: i18n
+ addMessage("Successfully set Mobile theme to - "+newMobileTheme.getName());
+
+ } catch(WebloggerException re) {
+ log.error("Error saving weblog - "+getActionWeblog().getHandle(), re);
+ addError("Error setting theme");
+ }
+
+ return execute();
+}
+
public boolean isCustomTheme() {
return (WeblogTheme.CUSTOM.equals(getActionWeblog().getEditorTheme()));
@@ -261,5 +313,20 @@ public class ThemeEdit extends UIAction
public void setImportThemeId(String importThemeId) {
this.importThemeId = importThemeId;
}
-
+
+ public List getMobileThemes() {
+ return mobileThemes;
+ }
+
+ public void setMobileThemes(List mobileThemes) {
+ this.mobileThemes = mobileThemes;
+ }
+
+ public String getMobileThemeId() {
+ return mobileThemeId;
+ }
+
+ public void setMobileThemeId(String mobileThemeId) {
+ this.mobileThemeId = mobileThemeId;
+ }
}
Modified: roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java (original)
+++ roller/branches/roller_mobile/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java Wed Jun 29 05:55:05 2011
@@ -18,31 +18,24 @@
package org.apache.roller.weblogger.webservices.adminprotocol;
-import java.io.Reader;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Collections;
-import java.util.Date;
-import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jdom.Document;
import org.apache.roller.weblogger.WebloggerException;
-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.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogPermission;
-import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.roller.weblogger.util.Utilities;
-import org.apache.roller.weblogger.webservices.adminprotocol.sdk.Entry;
-import org.apache.roller.weblogger.webservices.adminprotocol.sdk.EntrySet;
-import org.apache.roller.weblogger.webservices.adminprotocol.sdk.UnexpectedRootElementException;
-import org.apache.roller.weblogger.webservices.adminprotocol.sdk.WeblogEntry;
-import org.apache.roller.weblogger.webservices.adminprotocol.sdk.WeblogEntrySet;
+import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.roller.weblogger.webservices.adminprotocol.sdk.*;
+import org.jdom.Document;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.Reader;
+import java.net.MalformedURLException;
+import java.util.*;
/**
* This class handles requests concerning Roller weblog resources.
@@ -53,6 +46,9 @@ class RollerWeblogHandler extends Handle
/** Theme name used when creating weblogs */
private static final String DEFAULT_THEME = "basic";
+
+ //Default mobile theme when creating weblogs//
+ private static final String DEFAULT_MOBILE_THEME = "mobile";
public RollerWeblogHandler(HttpServletRequest request) throws HandlerException {
super(request);
@@ -176,7 +172,7 @@ class RollerWeblogHandler extends Handle
entry.getDescription(),
entry.getEmailAddress(),
entry.getEmailAddress(),
- DEFAULT_THEME,
+ DEFAULT_THEME,DEFAULT_MOBILE_THEME,
entry.getLocale().toString(),
entry.getTimezone().getID());
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp Wed Jun 29 05:55:05 2011
@@ -22,6 +22,11 @@
function previewImage(theme) {
document.preview.src="<s:property value="siteURL" />/roller-ui/authoring/previewtheme?theme="+theme;
}
+
+function previewMobileThemeImage(theme) {
+ document.mobile_preview.src="<s:property value="siteURL" />/roller-ui/authoring/previewtheme?theme="+theme;
+}
+
function handlePreview(handle) {
previewSpan = document.getElementById("handlePreview");
var n1 = previewSpan.childNodes[0];
@@ -92,7 +97,7 @@ function handlePreview(handle) {
<tr>
<td class="label"><label for="theme" /><s:text name="createWebsite.theme" /></label></td>
<td class="field">
- <s:select name="bean.theme" size="1" list="themes" listKey="id" listValue="name" onchange="previewImage(this[selectedIndex].value)"/>
+ <s:select name="bean.theme" size="1" list="standardThemes" listKey="id" listValue="name" onchange="previewImage(this[selectedIndex].value)"/>
<br />
<br />
<img name="preview" src='' />
@@ -108,6 +113,27 @@ function handlePreview(handle) {
</td>
<td class="description"><s:text name="createWebsite.tip.theme" /></td>
</tr>
+
+<tr>
+ <td class="label"><label for="mobileTheme" /><s:text name="Mobile Theme" /></label></td>
+ <td class="field">
+ <s:select name="bean.mobileTheme" size="1" list="mobileThemes" listKey="id" listValue="name" onchange="previewMobileThemeImage(this[selectedIndex].value)"/>
+ <br />
+ <br />
+ <img name="mobile_preview" src='' />
+ <!-- initialize preview image at page load -->
+ <script type="text/javascript">
+ <s:if test="bean.mobileTheme == null">
+ previewMobileThemeImage('<s:property value="mobileThemes[0].id"/>');
+ </s:if>
+ <s:else>
+ previewMobileThemeImage('<s:property value="bean.mobileTheme"/>');
+ </s:else>
+ </script>
+ </td>
+ <td class="description"><s:text name="The theme to be used for mobile devices." /></td>
+</tr>
+
</table>
<br />
@@ -120,4 +146,4 @@ function handlePreview(handle) {
<script type="text/javascript">
document.forms[0].elements[0].focus();
</script>
-
\ No newline at end of file
+
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp Wed Jun 29 05:55:05 2011
@@ -42,7 +42,7 @@
<tr>
<td class="label"><s:text name="pageForm.name" /> </td>
<td class="field">
- <s:if test="template.required">
+ <s:if test="template.required || bean.mobile">
<s:textfield name="bean.name" size="50" readonly="true" cssStyle="background: #e5e5e5" />
</s:if>
<s:else>
@@ -87,7 +87,7 @@
-->
</script>
- <s:if test="!template.required && template.custom">
+ <s:if test="!template.required && template.custom && !bean.mobile">
<tr>
<td class="label" valign="top"><s:text name="pageForm.link" /> </td>
<td class="field">
@@ -99,6 +99,17 @@
<td class="description"></td>
</tr>
</s:if>
+
+ <s:elseif test="!template.required && template.custom && bean.mobile">
+ <tr>
+ <td class="label" valign="top"><s:text name="pageForm.link" /> </td>
+ <td class="field">
+ <s:textfield name="bean.link" size="50" readonly="true" cssStyle="background: #e5e5e5" />
+ <br />
+ </td>
+ <td class="description"></td>
+ </tr>
+ </s:elseif>
<tr>
<td class="label" valign="top" style="padding-top: 4px"><s:text name="pageForm.description" /> </td>
@@ -114,7 +125,49 @@
</tr>
</table>
-
+
+ <s:if test="mobileTemplateAvailable">
+
+ <s:set name="tabMenu" value="menu"/>
+
+ <table class="menuTabTable" cellspacing="0" >
+ <tr>
+ <s:if test="!bean.mobile">
+ <td class="menuTabSelected">
+ </s:if>
+ <s:else>
+ <td class="menuTabUnselected">
+ </s:else>
+
+ <div class="menu-tr">
+ <s:url id="edit" action="templateEdit">
+ <s:param name="weblog" value="actionWeblog.handle" />
+ <s:param name="bean.id" value="bean.standardTemplateId" />
+ </s:url>
+ <div class="menu-tl"> <s:a href="%{edit}">Standard</s:a> </div>
+ </div></td>
+
+
+ <td class="menuTabSeparator"></td>
+
+ <s:if test="bean.mobile">
+ <td class="menuTabSelected">
+ </s:if>
+ <s:else>
+ <td class="menuTabUnselected">
+ </s:else>
+ <div class="menu-tr">
+
+ <s:url id="edit" action="templateEdit">
+ <s:param name="weblog" value="actionWeblog.handle" />
+ <s:param name="bean.id" value="bean.mobileTemplateId" />
+ </s:url>
+ <div class="menu-tl"> <s:a href="%{edit}">mobile</s:a> </div>
+ </div></td>
+
+ </tr>
+ </table>
+ </s:if>
<%-- ================================================================== --%>
<%-- Template editing area w/resize buttons --%>
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp Wed Jun 29 05:55:05 2011
@@ -29,9 +29,10 @@ function fullPreview(selector) {
}
function updateThemeChooser(selected) {
if (selected[0].value == 'shared') {
- $('#sharedChooser').css('background','#CCFFCC');
- $('#sharedChooser').css('border','1px solid #008000');
+ $('#sharedChooser').css('background','#CCFFCC');
+ $('#sharedChooser').css('border','1px solid #008000');
$('#sharedOptioner').show();
+ $('#mobileSharedOptioner').show();
$('#customChooser').css('background','#eee');
$('#customChooser').css('border','1px solid #gray');
@@ -44,6 +45,7 @@ function updateThemeChooser(selected) {
$('#sharedChooser').css('background','#eee');
$('#sharedChooser').css('border','1px solid #gray');
$('#sharedOptioner').hide();
+ $('#mobileSharedOptioner').hide();
}
}
function toggleImportThemeDisplay() {
@@ -84,6 +86,11 @@ function toggleImportThemeDisplay() {
</tr>
</table>
+
+ <table>
+ <tr>
+ <td>
+
<div id="sharedOptioner" class="optioner" style="display:none;">
<p>
<s:if test="!customTheme">
@@ -127,8 +134,61 @@ function toggleImportThemeDisplay() {
<s:text name="themeEditor.customStylesheetDescription" />
</p>
</s:if>
- <p><s:submit value="%{getText('themeEditor.save')}" /></p>
+ <p><s:submit value="%{getText('themeEditor.save')}"/></p>
+ </div>
+ </td>
+ <td>
+ <div id="mobileSharedOptioner" class="optioner" style="display:none;">
+
+ <p>
+ <s:if test="!customTheme">
+ <s:text name="themeEditor.yourCurrentTheme"/>:
+ <b><s:property value="actionWeblog.mobileTheme.name"/></b>
+ </s:if>
+ <s:else>
+ <s:text name="themeEditor.selectTheme"/>
+ </s:else>
+ </p>
+
+ <p>
+ <s:select id="mobileSharedSelector" name="mobileThemeId" list="mobileThemes"
+ listKey="id" listValue="name" size="1"
+ onchange="previewImage($('#sharedMobilePreviewImg'), this[selectedIndex].value)"/>
+ </p>
+
+ <p>
+ <img id="sharedMobilePreviewImg" src=""/>
+ <!-- initialize preview image at page load -->
+ <script type="text/javascript">
+ <s:if test="customTheme">
+ previewImage($('#sharedMobilePreviewImg'), '<s:property value="mobileThemes[0].id"/>');
+ </s:if>
+ <s:else>
+ previewImage($('#sharedMobilePreviewImg'), '<s:property value="mobileThemeId"/>');
+ </s:else>
+ </script>
+ </p>
+ <p>
+ » <a href="#" onclick="fullPreview($('#mobileSharedSelector').get(0))">
+ <s:text name="themeEditor.previewLink"/></a><br/>
+ <s:text name="themeEditor.previewDescription"/>
+ </p>
+
+ <s:if test="!customTheme && actionWeblog.theme.customStylesheet != null">
+ <p>
+ <s:url action="stylesheetEdit" id="stylesheetEdit">
+ <s:param name="weblog" value="%{actionWeblog.handle}"/>
+ </s:url>
+ » <s:a href="%{stylesheetEdit}"><s:text name="themeEditor.customStylesheetLink"/></s:a><br/>
+ <s:text name="themeEditor.customStylesheetDescription"/>
+ </p>
+ </s:if>
+ <p><s:submit value="%{getText('themeEditor.save')}" action="themeEdit!saveMobileTheme"/></p>
</div>
+ </td>
+ </tr>
+ </table>
+
<div id="customOptioner" class="optioner" style="display:none;">
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEditSharedThemesOnly.jsp
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEditSharedThemesOnly.jsp?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEditSharedThemesOnly.jsp (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/ThemeEditSharedThemesOnly.jsp Wed Jun 29 05:55:05 2011
@@ -27,6 +27,11 @@ function fullPreview() {
selected=document.getElementById('themeEdit_themeId').selectedIndex;
window.open('<s:url value="/roller-ui/authoring/preview/%{actionWeblog.handle}"/>?theme='+document.getElementById('themeEdit_themeId').options[selected].value, '_preview', '');
}
+
+function previewMobileImage(element, theme) {
+ element.src="<s:property value="siteURL" />/themes/" + theme + "/sm-theme-" + theme + ".png";
+}
+
-->
</script>
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/theme.xml?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/theme.xml (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/basic/theme.xml Wed Jun 29 05:55:05 2011
@@ -4,6 +4,7 @@
<id>basic</id>
<name>Basic</name>
<author>Roller Weblogger</author>
+ <type>standard</type>
<!-- theme preview image -->
<preview-image path="basic-preview.png" />
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/brushedmetal/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/brushedmetal/theme.xml?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/brushedmetal/theme.xml (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/brushedmetal/theme.xml Wed Jun 29 05:55:05 2011
@@ -4,6 +4,7 @@
<id>brushedmetal</id>
<name>Brushed Metal</name>
<author>Bryan Bell</author>
+ <type>standard</type>
<!-- theme preview image -->
<preview-image path="brushedmetal-preview.png" />
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/fauxcoly/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/fauxcoly/theme.xml?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/fauxcoly/theme.xml (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/fauxcoly/theme.xml Wed Jun 29 05:55:05 2011
@@ -6,6 +6,7 @@
<id>fauxcoly</id>
<name>Fauxcoly</name>
<author>Dave Johnson</author>
+ <type>standard</type>
<!-- theme preview image -->
<preview-image path="images/fauxcoly-preview.png" />
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/frontpage/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/frontpage/theme.xml?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/frontpage/theme.xml (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/frontpage/theme.xml Wed Jun 29 05:55:05 2011
@@ -4,6 +4,7 @@
<id>frontpage</id>
<name>Frontpage</name>
<author>Dave Johnson</author>
+ <type>standard</type>
<!-- theme preview image -->
<preview-image path="sm-theme-frontpage.png" />
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/_day.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/_day.vm?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/_day.vm (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/_day.vm Wed Jun 29 05:55:05 2011
@@ -0,0 +1,34 @@
+<div class="dayBox">
+
+ <div class="dayTitle">
+ $utils.formatDate($day, "EEEE MMM dd, yyyy")
+ </div>
+
+ #foreach( $entry in $entries )
+ <div class="entryBox">
+ <a name="$utils.encode($entry.anchor)" id="$utils.encode($entry.anchor)"></a>
+ <p class="entryTitle">$entry.title</p>
+ <p class="entryContent">
+ #if($model.permalink)
+ $entry.displayContent
+ #else
+ $entry.displayContent($url.entry($entry.anchor))
+ #end
+ </p>
+ <p class="entryInfo">
+ Posted at <a href="$url.entry($entry.anchor)">$utils.formatDate($entry.pubTime, "hh:mma MMM dd, yyyy")</a>
+ by $entry.creator.screenName in <span class="category">$entry.category.name</span> |
+ #if ($utils.isUserAuthorizedToAuthor($entry.website))
+ <a href="$url.editEntry($entry.anchor)">$text.get("macro.weblog.entrypermalink.edit")</a> |
+ #end
+ #set($commentCount = $entry.commentCount)
+ #if($entry.commentsStillAllowed || $commentCount > 0)
+ #set($link = "$url.comments($entry.anchor)" )
+ <a href="$link" class="commentsLink">$text.get("macro.weblog.comments")[$commentCount]</a>
+ #end
+ </p>
+ #showTrackbackAutodiscovery($entry)
+ </div>
+ #end
+
+</div>
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-custom.css
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-custom.css?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-custom.css (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-custom.css Wed Jun 29 05:55:05 2011
@@ -0,0 +1,265 @@
+/*-------------------------------------------------------------
+Base styles
+--------------------------------------------------------------*/
+
+a {
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline overline;
+}
+
+body {
+ background: white;
+ font-family:"Lucida Grande", lucida, Geneva, Arial, sans-serif;
+}
+
+.img {
+ border: 0px;
+ margin: 0px;
+}
+
+/* entries ----------------------------------------------- */
+
+.entryBox {
+ font-size: 90%;
+}
+.entryTitle {
+ font-weight: bold;
+}
+
+.entryInfo {
+ font-size: 90%;
+ color: #999;
+}
+div.dayTitle {
+ font-size: 120%;
+ font-weight:bold;
+ padding: .5em 0 0 0;
+}
+div.next-previous {
+ font-size: 80%;
+ text-align: center;
+ padding: .5em 0 .5em 0;
+
+}
+
+/* category chooser ----------------------------------------------- */
+
+.category-chooser {
+ margin: -50%;
+ width:100%;
+}
+.rCategory li {
+ font-size: 80%;
+ display: inline;
+ list-style-type: none;
+ padding-right: 20px;
+}
+li.selected {
+ font-weight: bold;
+}
+
+/* other lists ----------------------------------------------- */
+
+ul.rNavigationBar, ul.rMenu, ul.rFolder, ul.rFeeds, ul.rReferersList, ul.rEntriesList {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ font-size: 80%;
+}
+ul.rFeeds li {
+ background-image: url($url.absoluteSite/images/feed-icon-12x12.gif);
+ background-repeat: no-repeat;
+ background-position: 0 .2em;
+ padding-left: 1.4em;
+ line-height: 1.5em;
+}
+
+/* calendar ----------------------------------------------- */
+
+.hCalendarDay{
+ text-align : center;
+ font-size: small;
+}
+th.hCalendarDayNameRow {
+ text-align : center;
+ font-size : small;
+ font-weight : bold;
+}
+td.hCalendarDayCurrent {
+ text-align : center;
+ font-size : small;
+ font-weight: bold;
+}
+td.hCalendarDayLinked {
+ text-align : center;
+ font-size : small;
+ font-weight: bold;
+}
+
+/* comments ----------------------------------------------- */
+
+div.comments-form span.status {
+ display: block;
+ background: white;
+ color: green;
+ border: 1px solid green;
+ margin: 10px 0px;
+ padding: 10px;
+ font-size: 18px;
+ font-weight: bold;
+}
+
+span.error {
+ display: block;
+ background: white;
+ color: #c00;
+ border: 1px solid #c00;
+ margin: 10px 0px;
+ padding: 10px;
+ font-size: 18px;
+ font-weight: bold;
+}
+
+p.comment-details {
+ font-size: 80%;
+ color: #999;
+}
+.comments-syntax-indicator {
+ font-weight: bold;
+}
+.comments-syntax-indicator span.enabled {
+ background: transparent;
+ color: green;
+ font-style: italic;
+}
+.comments-syntax-indicator span.disabled {
+ background: transparent;
+ color: red;
+ font-style: italic;
+}
+
+form ul{ position: relative; list-style: none; width: 100%; }
+form li{ line-height: 2em; margin: 0; padding: 1px 1px 6px 9px; }
+form li.focused{ background-color: #fff7c0 !important; }
+form li p{ font-size: 9px; line-height: 13px; color: #444; }
+form li{ display: inline-block; }
+form[id] li{ display: block; }
+form li div{ display: inline-block; }
+form[id] li div{ display: inline; }
+form .left{ float: left !important; margin: 0; }
+form .right{ float: right !important; margin: 0; }
+form .clear{ clear: both; }
+form li div p{ margin: 0 0 5px 0; }
+form div.left{ margin-right: 2px !important; }
+form div.left[class]{ margin-right: 4px !important; }
+form div.left img{ margin: 0 0 -2px 0; }
+form h2{ font-size: 1.8em; clear: left; }
+form .info{ display: inline-block; margin: 0 0 10px 0; padding: 0 0 4px 0; border-bottom: 1px dotted #ccc !important;}
+form .info[class]{ display: block; }
+form .info p{ font-size: 1em; line-height: 1.3em; margin: 0 0 8px 0; }
+textarea.textarea{margin-bottom: 1px;}
+textarea.textarea[class]{font-family: "Lucida Grande", Tahoma, "Trebuchet MS", Verdana, sans-serif;}
+select.select{ padding: 1px 0 0 0; margin: 1px 0 3px 0; }
+select.select[class]{ margin: 0; padding: 1px 0 1px 0; }
+form .small{ width: 70px; }
+form .medium{ width: 170px; }
+form .large, form textarea.textarea{ width: 340px; }
+form .tags{ width: 320px; }
+form textarea.small{ height: 5.5em; }
+form textarea.medium{ height: 10em; }
+form textarea.large{ height: 20em; }
+.choices input{ width: 200px; margin-right: 3px; }
+.choices ol{ margin: 10px 0 0 0; }
+.choices[class] ol{ margin: 0 !important; }
+.choices img{ margin: 0 0 1px 0; }
+fieldset ol li{ display: list-item !important; margin: 0 5px 2px 3px !important; padding: 0 !important; list-style: inside decimal; }
+input.button, button { width: 6em; padding: 2px 2px 0 0; /* fix for IE */ }
+/* revert to normal for Firefox */
+li>input.button, li>button, input.button>input.button, button>button { padding: 2px; }
+label.desc{
+ margin: 4px 0 3px 0;
+ border: 0;
+ color: #444;
+ font-size: 1em;
+ line-height: 1.3em;
+ display: block;
+ font-weight: bold;
+}
+input.text, input.number, input.url, input.email, input.password, input.file,
+textarea.textarea, select.select{
+ font-size: 1.2em;
+ border-top: 1px solid #7c7c7c;
+ border-left: 1px solid #c3c3c3;
+ border-right: 1px solid #c3c3c3;
+ border-bottom: 1px solid #ddd;
+ color: #333;
+}
+input.text, input.number, input.url, input.email, input.password, input.file{ padding: 2px; }
+input.currency{ text-align: right; }
+input.checkbox, input.radio{
+ display: block;
+ line-height: 1.4em;
+ margin: 8px 0 0 3px;
+ width: 13px;
+ height: 13px;
+}
+input.focus, textarea.focus { background: #ffd; color: #000; }
+label.choice{
+ display: block;
+ line-height: 1.4em;
+ margin: -19px 0 0 25px;
+ padding: 4px 0 5px 0;
+ color: #444;
+ width: 80%;
+}
+
+div.comments-form form ul {
+ width:40em;
+}
+
+/*-------------------------------------------------------------
+Basic theme styles
+--------------------------------------------------------------*/
+
+h1 {
+ font-size:200%;
+ color:#CC9933;
+}
+h2, .comments-head {
+ color:#CC9933;
+ font-size:90%;
+ font-weight:bold;
+ border-bottom:1px dotted #666;
+ text-transform:uppercase;
+ letter-spacing: .2em;
+ margin-top: .5em;
+}
+h1.weblogName {
+ text-align:center;
+}
+p.weblogDescription {
+ text-align: center;
+}
+div.dayTitle {
+ color:#CC9933;
+ font-size:90%;
+ text-transform:uppercase;
+ border-bottom:1px dotted #666;
+}
+
+/* layout ----------------------------------------------- */
+
+.content_wrapper {
+ width: 80%;
+ float: left;
+}
+.content {
+ padding: 0em 2em 2em 2em;
+}
+.rightbar_wrapper {
+ width: 20%;
+ float: right;
+}
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-preview.png
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-preview.png?rev=1140970&view=auto
==============================================================================
Binary file - no diff available.
Propchange: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/basic-preview.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/permalink.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/permalink.vm?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/permalink.vm (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/permalink.vm Wed Jun 29 05:55:05 2011
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>$model.weblogEntry.title : $model.weblog.name</title>
+ #showAutodiscoveryLinks($model.weblog)
+ <link rel="stylesheet" type="text/css" media="all" href="$model.weblog.mobilestylesheet">
+</head>
+<body>
+
+<div class="content_wrapper">
+ <div class="content">
+ <h1 class="weblogName">$utils.escapeHTML($model.weblog.name)</h1>
+
+ <center>
+ #set($rootCategory = $model.weblog.getWeblogCategory("nil"))
+ #showWeblogCategoryLinksList($rootCategory false false)
+ </center>
+
+ ## show next/previous paging controls
+ #set($pager = $model.getWeblogEntriesPager())
+ <div class="next-previous">
+ #showNextPrevEntriesControl($pager)
+ </div>
+
+ ## show entry
+ #showWeblogEntriesPager($pager)
+
+ ## show comments and comment form
+ #showWeblogEntryComments($model.weblogEntry)
+ #showWeblogEntryCommentForm($model.weblogEntry)
+
+ </div>
+</div>
+
+<div class="rightbar_wrapper">
+ <div class="rightbar">
+ #includeTemplate($model.weblog "sidebar")
+ </div>
+</div>
+
+</body>
+</html>
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/searchresults.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/searchresults.vm?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/searchresults.vm (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/searchresults.vm Wed Jun 29 05:55:05 2011
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Search Results for '$model.term' : $model.weblog.name</title>
+ #showAutodiscoveryLinks($model.weblog)
+ <link rel="stylesheet" type="text/css" media="all" href="$model.weblog.mobileStylesheet">
+</head>
+<body>
+
+<div class="content_wrapper">
+ <div class="content">
+ <h1 class="weblogName">$utils.escapeHTML($model.weblog.name)</h1>
+
+ <center>
+ #set($rootCategory = $model.weblog.getWeblogCategory("nil"))
+ #showWeblogCategoryLinksList($rootCategory false false)
+ </center>
+
+ ## show next/previous paging controls
+ #set($pager = $model.getWeblogEntriesPager())
+ <div class="next-previous">
+ #showWeblogSearchAgainForm($model.weblog)
+ #showNextPrevSearchControl($pager)
+ </div>
+
+ ## show entries
+ #showWeblogEntriesPager($pager)
+
+ </div>
+</div>
+
+<div class="rightbar_wrapper">
+ <div class="rightbar">
+ #includeTemplate($model.weblog "sidebar")
+ </div>
+</div>
+
+</body>
+</html>
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/sidebar.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/sidebar.vm?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/sidebar.vm (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/sidebar.vm Wed Jun 29 05:55:05 2011
@@ -0,0 +1,34 @@
+## sidebar contents
+
+ <h2>Calendar</h2>
+ <div class="sidebar">
+ #showWeblogEntryCalendar($model.weblog "nil")
+ </div>
+
+ <h2>Feeds</h2>
+ <div class="sidebar">
+ #showAtomFeedsList($model.weblog)
+ </div>
+
+ <h2>Search</h2>
+ <div class="sidebar">
+ #showWeblogSearchForm($model.weblog false)
+ </div>
+
+ <h2>Links</h2>
+ <div class="sidebar">
+ #set($rootFolder = $model.weblog.getBookmarkFolder("/"))
+ #showBookmarkLinksList($rootFolder false false)
+ </div>
+
+ <h2>Navigation</h2>
+ <div class="sidebar">
+ #showPageMenu($model.weblog)
+ #showAuthorMenu(true)
+ </div>
+
+ <h2>Referrers</h2>
+ <div class="sidebar">
+ #set($refs = $model.weblog.getTodaysReferrers())
+ #showReferrersList($refs 30 20 true)
+ </div>
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/theme.xml?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/theme.xml (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/theme.xml Wed Jun 29 05:55:05 2011
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<weblogtheme>
+
+ <id>mobile</id>
+ <name>Mobile</name>
+ <author>Roller Weblogger</author>
+ <type>mobile</type>
+
+ <!-- theme preview image -->
+ <preview-image path="basic-preview.png" />
+
+ <!-- stylesheet -->
+ <stylesheet>
+ <name>basic-custom.css</name>
+ <description>Stylesheet for Basic theme</description>
+ <link>basic-custom.css</link>
+ <templateLanguage>velocity</templateLanguage>
+ <contentsFile>basic-custom.css</contentsFile>
+ </stylesheet>
+
+ <!-- templates -->
+ <template action="weblog">
+ <name>weblog</name>
+ <description>weblog</description>
+ <link></link>
+ <navbar>false</navbar>
+ <hidden>true</hidden>
+ <templateLanguage>velocity</templateLanguage>
+ <contentType>text/html</contentType>
+ <contentsFile>weblog.vm</contentsFile>
+ </template>
+
+ <template action="permalink">
+ <name>permalink</name>
+ <description>permalink</description>
+ <link></link>
+ <navbar>false</navbar>
+ <hidden>true</hidden>
+ <templateLanguage>velocity</templateLanguage>
+ <contentType>text/html</contentType>
+ <contentsFile>permalink.vm</contentsFile>
+ </template>
+
+ <template action="search">
+ <name>searchresults</name>
+ <description>searchresults</description>
+ <link></link>
+ <navbar>false</navbar>
+ <hidden>true</hidden>
+ <templateLanguage>velocity</templateLanguage>
+ <contentType>text/html</contentType>
+ <contentsFile>searchresults.vm</contentsFile>
+ </template>
+
+ <template action="custom">
+ <name>_day</name>
+ <description>_day</description>
+ <link></link>
+ <navbar>false</navbar>
+ <hidden>true</hidden>
+ <templateLanguage>velocity</templateLanguage>
+ <contentType>text/html</contentType>
+ <contentsFile>_day.vm</contentsFile>
+ </template>
+
+ <template action="custom">
+ <name>sidebar</name>
+ <description>sidebar</description>
+ <link></link>
+ <navbar>false</navbar>
+ <hidden>true</hidden>
+ <templateLanguage>velocity</templateLanguage>
+ <contentType>text/html</contentType>
+ <contentsFile>sidebar.vm</contentsFile>
+ </template>
+
+</weblogtheme>
Added: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/weblog.vm
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/weblog.vm?rev=1140970&view=auto
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/weblog.vm (added)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/mobile/weblog.vm Wed Jun 29 05:55:05 2011
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>$model.weblog.name</title>
+ #showAutodiscoveryLinks($model.weblog)
+ <link rel="stylesheet" type="text/css" media="all" href="$model.weblog.mobileStylesheet">
+</head>
+<body>
+
+<div class="content_wrapper">
+ <div class="content">
+ <h1 class="weblogName">$utils.escapeHTML($model.weblog.name)</h1>
+
+ <center>
+ #set($rootCategory = $model.weblog.getWeblogCategory("nil"))
+ #showWeblogCategoryLinksList($rootCategory false false)
+ </center>
+
+ ## show next/previous paging controls
+ #set($pager = $model.getWeblogEntriesPager())
+ <div class="next-previous">
+ #showNextPrevEntriesControl($pager)
+ </div>
+
+ ## show entries
+ #showWeblogEntriesPager($pager)
+
+ </div>
+</div>
+
+<div class="rightbar_wrapper">
+ <div class="rightbar">
+ #includeTemplate($model.weblog "sidebar")
+ </div>
+</div>
+
+</body>
+</html>
Modified: roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/sotto/theme.xml
URL: http://svn.apache.org/viewvc/roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/sotto/theme.xml?rev=1140970&r1=1140969&r2=1140970&view=diff
==============================================================================
--- roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/sotto/theme.xml (original)
+++ roller/branches/roller_mobile/weblogger-webapp/src/main/webapp/themes/sotto/theme.xml Wed Jun 29 05:55:05 2011
@@ -4,6 +4,7 @@
<id>sotto</id>
<name>Sotto</name>
<author>Matt Raible</author>
+ <type>standard</type>
<!-- theme preview image -->
<preview-image path="sotto-preview.png" />