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