You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2006/07/21 23:35:07 UTC
svn commit: r424459 - in /incubator/roller/branches/roller_3.0:
metadata/database/ src/org/apache/roller/business/
src/org/apache/roller/pojos/
src/org/apache/roller/ui/authoring/struts/actions/
src/org/apache/roller/ui/rendering/servlets/
Author: agilliland
Date: Fri Jul 21 14:35:06 2006
New Revision: 424459
URL: http://svn.apache.org/viewvc?rev=424459&view=rev
Log:
finishing up pluggable rendering support, improving decorator process, and adding support for hidden pages.
- the Template interface now supports 3 new methods ... getTemplateLanguage(), isHidden(), and getDecorator()
- decorator templates are now an inherent part of all templates.
- any template can now be marked as hidden.
- any template can potentially be authored in a templating language other than velocity.
- updated Template implementors to support new methods.
Modified:
incubator/roller/branches/roller_3.0/metadata/database/240-to-300-migration.vm
incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/Template.java
incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/ThemeTemplate.java
incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogTemplate.java
incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
Modified: incubator/roller/branches/roller_3.0/metadata/database/240-to-300-migration.vm
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/metadata/database/240-to-300-migration.vm?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/metadata/database/240-to-300-migration.vm (original)
+++ incubator/roller/branches/roller_3.0/metadata/database/240-to-300-migration.vm Fri Jul 21 14:35:06 2006
@@ -11,4 +11,12 @@
#addColumnNotNull("website" "enablemultilang" $BOOLEAN_SQL_TYPE $BOOLEAN_FALSE)
#addColumnNotNull("website" "showalllangs" $BOOLEAN_SQL_TYPE $BOOLEAN_TRUE)
-alter table weblogentry add column locale varchar(20) default null;
\ No newline at end of file
+alter table weblogentry add column locale varchar(20) default null;
+
+#addColumnNotNull("webpage" "hidden" $BOOLEAN_SQL_TYPE $BOOLEAN_FALSE)
+
+alter table webpage add column templatelang varchar(20) default null;
+update webpage set templatelang = 'velocity';
+
+alter table webpage add column decorator varchar(255) default null;
+update webpage set decorator = '_decorator';
\ No newline at end of file
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/ThemeManagerImpl.java Fri Jul 21 14:35:06 2006
@@ -280,21 +280,28 @@
if (mLogger.isDebugEnabled()) mLogger.debug(noprob);
continue;
}
-
- // Strip "_" from to form link
- String template_link = template_name;
- if (template_name.startsWith("_") && template_name.length() > 1) {
- template_link = template_link.substring(1);
+
+ String decorator = "_decorator";
+ if("_decorator".equals(template_name)) {
+ decorator = null;
}
// construct ThemeTemplate representing this file
+ // a few restrictions for now:
+ // - we only allow "velocity" for the template language
+ // - decorator is always "_decorator" or null
+ // - all theme templates are considered hidden
theme_template = new ThemeTemplate(
+ theme,
theme_name+":"+template_name,
template_name,
template_name,
new String(chars),
- template_link,
- new Date(template_file.lastModified()));
+ template_name,
+ new Date(template_file.lastModified()),
+ "velocity",
+ true,
+ decorator);
// add it to the theme
theme.setTemplate(template_name, theme_template);
@@ -350,13 +357,17 @@
} else {
// User does not have page by that name, so create new page.
- template = new WeblogTemplate( null,
+ template = new WeblogTemplate(
+ null, // id
website, // website
theme_template.getName(), // name
theme_template.getDescription(), // description
theme_template.getName(), // link
theme_template.getContents(), // contents
- new Date() // last mod
+ new Date(), // last mod
+ theme_template.getTemplateLanguage(), // temp lang
+ theme_template.isHidden(), // hidden
+ theme_template.getDecoratorName() // decorator
);
userMgr.savePage( template );
}
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/Template.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/Template.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/Template.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/Template.java Fri Jul 21 14:35:06 2006
@@ -30,33 +30,64 @@
public interface Template {
/**
+ * The unique identifier for this Template.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public String getId();
/**
+ * A simple name for this Template.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public String getName();
/**
+ * A description of the contents of this Template.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public String getDescription();
/**
+ * The contents or body of the Template.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public String getContents();
/**
+ * The url link value for this Template. If this template is not
+ * private this is the url that it can be accessed at.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public String getLink();
/**
+ * The last time the template was modified.
+ *
* @roller.wrapPojoMethod type="simple"
*/
public Date getLastModified();
+
+ /**
+ * Is the Template hidden? A hidden template cannot be accessed directly.
+ *
+ * @roller.wrapPojoMethod type="simple"
+ */
+ public boolean isHidden();
+
+ /**
+ * The templating language used by this template.
+ */
+ public String getTemplateLanguage();
+
+ /**
+ * The decorator Template to apply. This returns null if no decorator
+ * should be applied.
+ */
+ public Template getDecorator();
}
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/ThemeTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/ThemeTemplate.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/ThemeTemplate.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/ThemeTemplate.java Fri Jul 21 14:35:06 2006
@@ -29,28 +29,45 @@
*/
public class ThemeTemplate implements Template, Serializable {
- private String id;
- private String name;
- private String description;
- private String contents;
- private String link;
- private Date lastModified;
+ private String id = null;
+ private String name = null;
+ private String description = null;
+ private String contents = null;
+ private String link = null;
+ private Date lastModified = null;
+ private String templateLanguage = null;
+ private boolean hidden = false;
+ private String decoratorName = null;
+
+ private Theme myTheme = null;
public ThemeTemplate() {}
- public ThemeTemplate(String id, String name,
- String desc, String contents, String link, Date date) {
+ public ThemeTemplate(Theme theme, String id, String name, String desc,
+ String contents, String link, Date date, String tempLang,
+ boolean hid, String decor) {
+ this.myTheme = theme;
this.id = id;
this.name = name;
this.description = desc;
this.contents = contents;
this.link = link;
this.lastModified = date;
+ this.templateLanguage = tempLang;
+ this.hidden = hid;
+ this.decoratorName = decor;
+ }
+
+
+ public Template getDecorator() {
+ if(decoratorName != null && !id.equals(decoratorName)) {
+ return myTheme.getTemplate(decoratorName);
+ }
+ return null;
}
-
public String getId() {
return id;
}
@@ -97,6 +114,30 @@
public void setLink(String link) {
this.link = link;
+ }
+
+ public String getTemplateLanguage() {
+ return templateLanguage;
+ }
+
+ public void setTemplateLanguage(String templateLanguage) {
+ this.templateLanguage = templateLanguage;
+ }
+
+ public boolean isHidden() {
+ return hidden;
+ }
+
+ public void setHidden(boolean isHidden) {
+ this.hidden = isHidden;
+ }
+
+ public String getDecoratorName() {
+ return decoratorName;
+ }
+
+ public void setDecoratorName(String decorator) {
+ this.decoratorName = decorator;
}
public String toString() {
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogTemplate.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogTemplate.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/pojos/WeblogTemplate.java Fri Jul 21 14:35:06 2006
@@ -22,11 +22,9 @@
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
-import org.apache.roller.model.Roller;
-import org.apache.roller.model.RollerFactory;
-
-
/**
* Pojo that represents a single user defined template page.
@@ -43,9 +41,9 @@
implements Serializable, Template {
public static final long serialVersionUID = -613737191638263428L;
-
public static final String DEFAULT_PAGE = "Weblog";
+ private static Log log = LogFactory.getLog(WeblogTemplate.class);
private static Set requiredTemplates = null;
private String id = null;
@@ -54,6 +52,9 @@
private String link = null;
private String contents = null;
private Date lastModified = null;
+ private String templateLanguage = null;
+ private boolean hidden = false;
+ private String decoratorName = null;
private WebsiteData weblog = null;
@@ -75,7 +76,10 @@
java.lang.String description,
java.lang.String link,
java.lang.String template,
- java.util.Date updateTime ) {
+ java.util.Date updateTime,
+ String tempLang,
+ boolean hid,
+ String decorator) {
this.id = id;
this.weblog = website;
this.name = name;
@@ -83,6 +87,9 @@
this.link = link;
this.contents = template;
this.lastModified = (Date)updateTime.clone();
+ this.templateLanguage = tempLang;
+ this.hidden = hid;
+ this.decoratorName = decorator;
}
public WeblogTemplate( WeblogTemplate otherData ) {
@@ -90,6 +97,19 @@
}
+ public Template getDecorator() {
+ if(decoratorName != null && !id.equals(decoratorName)) {
+ try {
+ return weblog.getPageByName(decoratorName);
+ } catch (RollerException ex) {
+ log.error("Error getting decorator["+decoratorName+"] "+
+ "for template "+id);
+ }
+ }
+ return null;
+ }
+
+
/**
* @ejb:persistent-field
* @hibernate.id column="id"
@@ -195,6 +215,48 @@
/**
+ * @ejb:persistent-field
+ * @hibernate.property column="templatelang" non-null="true" unique="false"
+ */
+ public String getTemplateLanguage() {
+ return templateLanguage;
+ }
+
+ /** @ejb:persistent-field */
+ public void setTemplateLanguage(String templateLanguage) {
+ this.templateLanguage = templateLanguage;
+ }
+
+
+ /**
+ * @ejb:persistent-field
+ * @hibernate.property column="hidden" non-null="true" unique="false"
+ */
+ public boolean isHidden() {
+ return hidden;
+ }
+
+ /** @ejb:persistent-field */
+ public void setHidden(boolean isHidden) {
+ this.hidden = isHidden;
+ }
+
+
+ /**
+ * @ejb:persistent-field
+ * @hibernate.property column="decorator" non-null="true" unique="false"
+ */
+ public String getDecoratorName() {
+ return decoratorName;
+ }
+
+ /** @ejb:persistent-field */
+ public void setDecoratorName(String decorator) {
+ this.decoratorName = decorator;
+ }
+
+
+ /**
* Determine if this WeblogTemplate is required or not.
*/
public boolean isRequired() {
@@ -303,6 +365,9 @@
this.link = other.getLink();
this.contents = other.getContents();
this.lastModified = other.getLastModified()!=null ? (Date)other.getLastModified().clone() : null;
+ this.templateLanguage = other.getTemplateLanguage();
+ this.hidden = other.isHidden();
+ this.decoratorName = other.getDecoratorName();
}
}
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/WeblogTemplateFormAction.java Fri Jul 21 14:35:06 2006
@@ -94,7 +94,15 @@
data.setDescription("");
data.setContents("");
validateLink( data );
-
+
+ // all templates start out as velocity templates
+ data.setTemplateLanguage("velocity");
+
+ // for now, all templates just use _decorator
+ if(!"_decorator".equals(data.getName())) {
+ data.setDecoratorName("_decorator");
+ }
+
UserManager mgr = RollerFactory.getRoller().getUserManager();
mgr.savePage( data );
RollerFactory.getRoller().flush();
Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java?rev=424459&r1=424458&r2=424459&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java Fri Jul 21 14:35:06 2006
@@ -196,7 +196,7 @@
if(page == null) {
page = new WeblogTemplate("templates/weblog/popupcomments.vm", weblog,
"Comments", "Comments", "dummy_link",
- "dummy_template", new Date());
+ "dummy_template", new Date(), "velocity", true, null);
}
// If request specified the page, then go with that