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 2005/11/29 20:40:23 UTC

svn commit: r349799 - in /incubator/roller/trunk: src/org/roller/business/utils/ src/org/roller/pojos/ src/org/roller/presentation/website/actions/ web/website/

Author: agilliland
Date: Tue Nov 29 11:40:17 2005
New Revision: 349799

URL: http://svn.apache.org/viewcvs?rev=349799&view=rev
Log:
standardized templates code.

includes:
- new isRequired() method in WeblogTemplate pojo
- update template editing jsps to reflect which templates are required
- 200 to 210 database upgrade path for ensure all weblogs have a 'Weblog' template
- tweak to theme editor action


Modified:
    incubator/roller/trunk/src/org/roller/business/utils/UpgradeDatabase.java
    incubator/roller/trunk/src/org/roller/pojos/WeblogTemplate.java
    incubator/roller/trunk/src/org/roller/presentation/website/actions/ThemeEditorAction.java
    incubator/roller/trunk/web/website/edit-page.jsp
    incubator/roller/trunk/web/website/edit-pages.jsp
    incubator/roller/trunk/web/website/edit-website.jsp

Modified: incubator/roller/trunk/src/org/roller/business/utils/UpgradeDatabase.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/business/utils/UpgradeDatabase.java?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/business/utils/UpgradeDatabase.java (original)
+++ incubator/roller/trunk/src/org/roller/business/utils/UpgradeDatabase.java Tue Nov 29 11:40:17 2005
@@ -111,6 +111,10 @@
             UpgradeDatabase.upgradeTo200(con);
             dbversion = 200;
         }
+        if(dbversion < 210) {
+            UpgradeDatabase.upgradeTo210(con);
+            dbversion = 210;
+        }
         
         // make sure the database version is the exact version
         // we are upgrading too.
@@ -234,6 +238,80 @@
     }
 
 
+    /**
+     * Upgrade database for Roller 1.3.0
+     */
+    private static void upgradeTo210(Connection con) throws RollerException {
+        try {
+            /*
+             * For Roller 2.1.0 we are going to standardize some of the
+             * weblog templates and make them less editable.  To do this
+             * we need to do a little surgery.
+             *
+             * The goal for this upgrade is to ensure that ALL weblogs now have
+             * the required "Weblog" template as their default template.
+             */
+            
+            mLogger.info("Doing upgrade to 210 ...");
+            mLogger.info("Ensuring that all weblogs use the 'Weblog' template as their default page");
+            
+            // this query will give us all websites that have modified their
+            // default page to link to something other than "Weblog"
+            PreparedStatement selectUpdateWeblogs = con.prepareStatement(
+                    "select website.id,template from website,webpage "+
+                    "where webpage.id = website.defaultpageid "+
+                    "and webpage.link != 'Weblog'");
+            
+            // insert a new template for a website
+            PreparedStatement insertWeblogTemplate = con.prepareStatement(
+                    "insert into webpage"+
+                    "(id, name, description, link, websiteid, template) "+
+                    "values(?,?,?,?,?,?)");
+            
+            // update the default page for a website
+            PreparedStatement updateDefaultPage = con.prepareStatement(
+                    "update website set defaultpageid = ? "+
+                    "where id = ?");
+            
+            String description = "This template is used to render the main "+
+                    "page of your weblog.";
+            ResultSet websiteSet = selectUpdateWeblogs.executeQuery();
+            while (websiteSet.next()) {
+                String websiteid = websiteSet.getString(1);
+                String template = websiteSet.getString(2);
+                mLogger.info("Processing website: " + websiteid);
+                
+                // insert new Weblog template
+                insertWeblogTemplate.clearParameters();
+                insertWeblogTemplate.setString( 1, websiteid+"q");
+                insertWeblogTemplate.setString( 2, "Weblog");
+                insertWeblogTemplate.setString( 3, description);
+                insertWeblogTemplate.setString( 4, "Weblog");
+                insertWeblogTemplate.setString( 5, websiteid);
+                insertWeblogTemplate.setString( 6, template);
+                insertWeblogTemplate.executeUpdate();
+                
+                // update defaultpageid value
+                updateDefaultPage.clearParameters();
+                updateDefaultPage.setString( 1, websiteid+"q");
+                updateDefaultPage.setString( 2, websiteid);
+                updateDefaultPage.executeUpdate();
+            }
+            
+            
+            if (!con.getAutoCommit()) con.commit();
+            
+            mLogger.info("Upgrade to 210 complete.");
+            
+        } catch (SQLException e) {
+            mLogger.error("Problem upgrading database to version 210", e);
+            throw new RollerException("Problem upgrading database to version 210", e);
+        }
+        
+        UpgradeDatabase.updateDatabaseVersion(con, 210);
+    }
+    
+    
     /**
      * Insert a new database.version property.
      *

Modified: incubator/roller/trunk/src/org/roller/pojos/WeblogTemplate.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/pojos/WeblogTemplate.java?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/pojos/WeblogTemplate.java (original)
+++ incubator/roller/trunk/src/org/roller/pojos/WeblogTemplate.java Tue Nov 29 11:40:17 2005
@@ -2,6 +2,8 @@
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
 import org.roller.RollerException;
 import org.roller.model.Roller;
 import org.roller.model.RollerFactory;
@@ -23,10 +25,20 @@
 public class WeblogTemplate extends PersistentObject
    implements Serializable, Template
 {
-   static final long serialVersionUID = -613737191638263428L;
+   public static final long serialVersionUID = -613737191638263428L;
 
-    public static final String DEFAULT_PAGE = "Weblog";
-    
+   public static final String DEFAULT_PAGE = "Weblog";
+   
+   private static Set requiredTemplates = null;
+   
+   static {
+       requiredTemplates = new HashSet();
+       requiredTemplates.add("Weblog");
+       requiredTemplates.add("_day");
+       requiredTemplates.add("_css");
+       requiredTemplates.add("_decorator");
+   }
+   
    private java.lang.String id;
    private java.lang.String name;
    private java.lang.String description;
@@ -62,7 +74,32 @@
    {
        setData(otherData);
    }
+   
+   
+   /**
+    * Determine if this WeblogTemplate is required or not.
+    */
+   public boolean isRequired() {
+       /* 
+        * this is kind of hacky right now, but it's like that so we can be
+        * reasonably flexible while we migrate old blogs which may have some
+        * pretty strange customizations.
+        *
+        * my main goal starting now is to prevent further deviations from the
+        * standardized templates as we move forward.
+        *
+        * eventually, the required flag should probably be stored in the db
+        * and possibly applicable to any template.
+        */
+       return (requiredTemplates.contains(this.name) || "Weblog".equals(this.link));
+   }
 
+   
+   public void setRequired(boolean req) {
+       // this is an absurd workaround for our struts formbean generation stuff
+   }
+   
+   
    /** 
     * @ejb:persistent-field 
     * @hibernate.id column="id"

Modified: incubator/roller/trunk/src/org/roller/presentation/website/actions/ThemeEditorAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/website/actions/ThemeEditorAction.java?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/website/actions/ThemeEditorAction.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/website/actions/ThemeEditorAction.java Tue Nov 29 11:40:17 2005
@@ -415,10 +415,22 @@
             ThemeTemplate theme_template = null;
             while ( iter.hasNext() ) {
                 theme_template = (ThemeTemplate) iter.next();
-                //String pageContent = (String) templates.get( pageName );
                 
-                WeblogTemplate template = 
-                        userMgr.getPageByName(website, theme_template.getName());
+                WeblogTemplate template = null;
+                
+                if(theme_template.getName().equals(WeblogTemplate.DEFAULT_PAGE)) {
+                    // this is the main Weblog template
+                    try {
+                        template = userMgr.retrievePage(website.getDefaultPageId());
+                    } catch(Exception e) {
+                        // user may not have a default page yet
+                    }
+                } else {
+                    // any other template
+                    template = userMgr.getPageByName(website, theme_template.getName());
+                }
+                
+                
                 if (template != null) {
                     // User already has page by that name, so overwrite it.
                     template.setContents(theme_template.getContents());

Modified: incubator/roller/trunk/web/website/edit-page.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/website/edit-page.jsp?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/web/website/edit-page.jsp (original)
+++ incubator/roller/trunk/web/website/edit-page.jsp Tue Nov 29 11:40:17 2005
@@ -24,17 +24,38 @@
     <table>
         <tr>
             <td><fmt:message key="pageForm.name" /><br />
-            <html:text property="name" size="50"/>
+                <c:choose>
+                    <c:when test="${page.required}">
+                        <html:text style="background: #e5e5e5" property="name" size="50" readonly="true"/>
+                    </c:when>
+                    <c:otherwise>
+                        <html:text property="name" size="50"/>
+                    </c:otherwise>
+                </c:choose>
             </td>
         </tr>
         <tr>
             <td><fmt:message key="pageForm.link" /><br />
-            <html:text property="link" size="50"/>
+                <c:choose>
+                    <c:when test="${page.required}">
+                        <html:text style="background: #e5e5e5" property="link" size="50" readonly="true"/>
+                    </c:when>
+                    <c:otherwise>
+                        <html:text property="link" size="50"/>
+                    </c:otherwise>
+                </c:choose>
             </td>
         </tr>
         <tr>
             <td><fmt:message key="pageForm.description" /><br />
-            <html:textarea property="description" rows="3" cols="50"/>
+                <c:choose>
+                    <c:when test="${page.required}">
+                        <html:textarea style="background: #e5e5e5" property="description" rows="3" cols="50" readonly="true"/>
+                    </c:when>
+                    <c:otherwise>
+                        <html:textarea property="description" rows="3" cols="50"/>
+                    </c:otherwise>
+                </c:choose>
             </td>
         </tr>
     </table>

Modified: incubator/roller/trunk/web/website/edit-pages.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/website/edit-pages.jsp?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/web/website/edit-pages.jsp (original)
+++ incubator/roller/trunk/web/website/edit-pages.jsp Tue Nov 29 11:40:17 2005
@@ -43,7 +43,7 @@
 
             <td class="center">
                <c:choose>
-                 <c:when test="${p.id != website.defaultPageId}">
+                 <c:when test="${!p.required}">
                    <roller:link forward="removePage.ok">
                       <roller:linkparam id="username" name="user" property="userName" />
                       <roller:linkparam id="pageId" name="p" property="id" />

Modified: incubator/roller/trunk/web/website/edit-website.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/website/edit-website.jsp?rev=349799&r1=349798&r2=349799&view=diff
==============================================================================
--- incubator/roller/trunk/web/website/edit-website.jsp (original)
+++ incubator/roller/trunk/web/website/edit-website.jsp Tue Nov 29 11:40:17 2005
@@ -14,6 +14,7 @@
     <html:hidden property="method" value="update"/></input>
 
     <html:hidden property="id"/></input>
+    <html:hidden property="defaultPageId" /></input>
     <html:hidden property="weblogDayPageId" /></input>
     <html:hidden property="handle"/></input>
     <html:hidden property="editorTheme"/></input>
@@ -55,17 +56,6 @@
         <td class="field">
             <html:select property="timeZone" size="1" >
                 <html:options collection="timeZones" property="value" labelProperty="label"/>
-            </html:select>
-        </td>
-        <td class="description"><%-- <fmt:message key="websiteSettings.tip." /> --%></td>
-    </tr>
-
-    <tr>
-        <td class="label"><fmt:message key="websiteSettings.homePage" /></td>
-        <td class="field">
-            <html:select property="defaultPageId" size="1">
-                <html:options collection="pages"
-                    property="id" labelProperty="name" />
             </html:select>
         </td>
         <td class="description"><%-- <fmt:message key="websiteSettings.tip." /> --%></td>