Author: snoopdave
Date: Thu Jun  7 19:51:57 2007
New Revision: 545380

URL: http://svn.apache.org/viewvc?view=rev&rev=545380
Log:
Latest from trunk

Added:
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java
      - copied unchanged from r545377, 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java
    roller/branches/roller_guice/tools/buildtime/ant-1.7.0/
      - copied from r545377, roller/trunk/tools/buildtime/ant-1.7.0/
    roller/branches/roller_guice/tools/buildtime/ant-1.7.0/ant-junit.jar
      - copied unchanged from r545377, 
roller/trunk/tools/buildtime/ant-1.7.0/ant-junit.jar
    roller/branches/roller_guice/tools/buildtime/ant-1.7.0/ant.jar
      - copied unchanged from r545377, 
roller/trunk/tools/buildtime/ant-1.7.0/ant.jar
Removed:
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/utils/UpgradeDatabase.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/ByteArrayOutputStreamWrapper.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/ByteArrayResponseWrapper.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/package.html
    roller/branches/roller_guice/tools/buildtime/ant-1.6.2/
Modified:
    roller/branches/roller_guice/apps/planet/build.xml
    roller/branches/roller_guice/apps/weblogger/properties.xmlf
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
    
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
    
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
    
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
    
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/ThemeEdit.jsp
    roller/branches/roller_guice/apps/weblogger/web/roller-ui/styles/roller.css
    roller/branches/roller_guice/components/core/nbproject/   (props changed)
    roller/branches/roller_guice/merges.txt

Modified: roller/branches/roller_guice/apps/planet/build.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/planet/build.xml?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- roller/branches/roller_guice/apps/planet/build.xml (original)
+++ roller/branches/roller_guice/apps/planet/build.xml Thu Jun  7 19:51:57 2007
@@ -136,7 +136,7 @@
             <include name="*.jar"/>
         </fileset>
         <pathelement location="${tools}/buildtime/junit-4.1.jar"/>
-        <pathelement location="${tools}/buildtime/ant-1.6.2/ant-junit.jar"/>
+        <pathelement location="${tools}/buildtime/ant-1.7.0/ant-junit.jar"/>
         <pathelement location="${tools}/buildtime/derby.jar"/>
         <pathelement location="${tools}/buildtime/derbyclient.jar"/>
         <pathelement location="${tools}/buildtime/derbynet.jar"/>
@@ -368,7 +368,7 @@
             
             <classpath>
                 <path refid="test.path"/>
-                <pathelement location="${tools}/buildtime/ant-1.6.2/ant.jar"/>
+                <pathelement location="${tools}/buildtime/ant-1.7.0/ant.jar"/>
             </classpath>
         </javac>
 

Modified: roller/branches/roller_guice/apps/weblogger/properties.xmlf
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/properties.xmlf?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/properties.xmlf (original)
+++ roller/branches/roller_guice/apps/weblogger/properties.xmlf Thu Jun  7 
19:51:57 2007
@@ -237,7 +237,8 @@
     </fileset>
     <fileset refid="commons-httpclient.jar"/>
     <pathelement location="${ro.tools}/buildtime/junit-4.1.jar"/>
-    <pathelement location="${ro.tools}/buildtime/ant-1.6.2/ant-junit.jar"/>
+    <pathelement location="${ro.tools}/buildtime/ant-1.7.0/ant.jar"/>
+    <pathelement location="${ro.tools}/buildtime/ant-1.7.0/ant-junit.jar"/>
     <pathelement location="${ro.tools}/buildtime/derby.jar"/>
     <pathelement location="${ro.tools}/buildtime/derbyclient.jar"/>
     <pathelement location="${ro.tools}/buildtime/derbynet.jar"/>

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
 Thu Jun  7 19:51:57 2007
@@ -20,20 +20,23 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
 import java.util.zip.GZIPOutputStream;
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.config.RollerConfig;
-import org.apache.roller.weblogger.ui.core.util.ByteArrayOutputStreamWrapper;
-import org.apache.roller.weblogger.ui.core.util.ByteArrayResponseWrapper;
 
 
 /** 
@@ -42,13 +45,10 @@
  * Taken from More Servlets and JavaServer Pages from Prentice Hall and 
  * Sun Microsystems Press, http://www.moreservlets.com/.
  * &copy; 2002 Marty Hall; may be freely used or adapted.
- *
- * @web.filter name="CompressionFilter"
  */
-
 public class CompressionFilter implements Filter {
     
-    private static Log mLogger = LogFactory.getLog(CompressionFilter.class);
+    private static Log log = LogFactory.getLog(CompressionFilter.class);
     
     private boolean enabled = true;
     
@@ -82,7 +82,7 @@
             ByteArrayOutputStream outputStream = 
responseWrapper.getByteArrayOutputStream();
             
             // Get character array representing output.
-            mLogger.debug("Pre-zip size:" + outputStream.size());
+            log.debug("Pre-zip size:" + outputStream.size());
             
             // Make a writer that compresses data and puts
             // it into a byte array.
@@ -95,7 +95,7 @@
             // Gzip streams must be explicitly closed.
             zipOut.close();
             
-            mLogger.debug("Gzip size:" + byteStream.size());
+            log.debug("Gzip size:" + byteStream.size());
             
             // Update the Content-Length header.
             res.setContentLength(byteStream.size());
@@ -118,10 +118,10 @@
         // is compression enabled?
         
if(RollerConfig.getBooleanProperty("compression.gzipResponse.enabled")) {
             this.enabled = true;
-            mLogger.info("Compressed Output ENABLED");
+            log.info("Compressed Output ENABLED");
         } else {
             this.enabled = false;
-            mLogger.info("Compressed Output DISABLED");
+            log.info("Compressed Output DISABLED");
         }
     }
     
@@ -135,4 +135,110 @@
                     && (browserEncodings.indexOf("gzip") != -1));
     }
     
+    
+    /**
+     * Implementation of HttpServletResponseWrapper that supports caching.
+     */
+    private class ByteArrayResponseWrapper extends HttpServletResponseWrapper {
+        
+        private PrintWriter tpWriter;
+        private ByteArrayOutputStreamWrapper tpStream;
+        
+        
+        public ByteArrayResponseWrapper(ServletResponse inResp) throws 
IOException {
+            super((HttpServletResponse) inResp);
+            tpStream = new 
ByteArrayOutputStreamWrapper(inResp.getOutputStream());
+            tpWriter = new PrintWriter(new 
OutputStreamWriter(tpStream,"UTF-8"));
+        }
+        
+        
+        public ServletOutputStream getOutputStream() throws IOException {
+            return tpStream;
+        }
+        
+        public PrintWriter getWriter() throws IOException {
+            return tpWriter;
+        }
+        
+        /**
+         * Get a String representation of the entire buffer.
+         */
+        public String toString() {
+            return tpStream.getByteArrayStream().toString();
+        }
+        
+        public ByteArrayOutputStream getByteArrayOutputStream() throws 
IOException {
+            return tpStream.getByteArrayStream();
+        }
+        
+    }
+    
+    
+    /**
+     * Implementation of ServletOutputStream that allows the filter to hold the
+     * Response content for insertion into the cache.
+     */
+    private class ByteArrayOutputStreamWrapper extends ServletOutputStream {
+        
+        protected OutputStream intStream;
+        protected ByteArrayOutputStream baStream;
+        protected boolean finallized = false;
+        protected boolean flushOnFinalizeOnly = true;
+        
+        
+        public ByteArrayOutputStreamWrapper(OutputStream outStream) {
+            intStream = outStream;
+            baStream = new ByteArrayOutputStream();
+        }
+        
+        public ByteArrayOutputStreamWrapper() {
+            intStream = System.out;
+            baStream = new ByteArrayOutputStream();
+        }
+        
+        
+        public ByteArrayOutputStream getByteArrayStream() {
+            return baStream;
+        }
+        
+        public void setFinallized() {
+            finallized = true;
+        }
+        
+        public boolean isFinallized() {
+            return finallized;
+        }
+        
+        
+        public void write(int i) throws java.io.IOException {
+            baStream.write(i);
+        }
+        
+        public void close() throws java.io.IOException {
+            if (finallized) {
+                processStream();
+                intStream.close();
+            }
+        }
+        
+        public void flush() throws java.io.IOException {
+            if (baStream.size() != 0) {
+                if (!flushOnFinalizeOnly || finallized) {
+                    processStream();
+                    baStream = new ByteArrayOutputStream();
+                }
+            }
+        }
+        
+        protected void processStream() throws java.io.IOException {
+            intStream.write(baStream.toByteArray());
+            intStream.flush();
+        }
+        
+        public void clear() {
+            baStream = new ByteArrayOutputStream();
+        }
+        
+    }
+
 }

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
 Thu Jun  7 19:51:57 2007
@@ -80,6 +80,7 @@
     
     
     public String execute() {
+        
         // set theme to current value
         if(WeblogTheme.CUSTOM.equals(getActionWeblog().getEditorTheme())) {
             setThemeId(null);
@@ -103,14 +104,17 @@
         
         Weblog weblog = getActionWeblog();
         
+        // we are dealing with a custom theme scenario
         if(WeblogTheme.CUSTOM.equals(getThemeType())) {
             
             // only continue if custom themes are allowed
             
if(RollerRuntimeConfig.getBooleanProperty("themes.customtheme.allowed")) {
+                
                 // do theme import if necessary
+                SharedTheme importTheme = null;
                 if(isImportTheme() && 
!StringUtils.isEmpty(getImportThemeId())) try {
                     ThemeManager themeMgr = 
RollerFactory.getRoller().getThemeManager();
-                    SharedTheme importTheme = 
themeMgr.getTheme(getImportThemeId());
+                    importTheme = themeMgr.getTheme(getImportThemeId());
                     themeMgr.importTheme(getActionWeblog(), importTheme);
                 } catch(WebloggerException re) {
                     log.error("Error customizing theme for weblog - 
"+getActionWeblog().getHandle(), re);
@@ -118,34 +122,67 @@
                     addError("Error importing theme");
                 }
                 
-                if(!hasActionErrors()) {
+                if(!hasActionErrors()) try {
                     weblog.setEditorTheme(WeblogTheme.CUSTOM);
                     log.debug("Saving custom theme for weblog 
"+weblog.getHandle());
                     
-                    // reset import theme checkbox
+                    // save updated weblog and flush
+                    UserManager userMgr = 
RollerFactory.getRoller().getUserManager();
+                    userMgr.saveWebsite(weblog);
+                    RollerFactory.getRoller().flush();
+                    
+                    // make sure to flush the page cache so ppl can see the 
change
+                    CacheManager.invalidate(weblog);
+                    
+                    // TODO: i18n
+                    addMessage("Successfully set theme to - 
"+WeblogTheme.CUSTOM);
+                    if(importTheme != null) {
+                        addMessage("Successfully copied templates from theme - 
"+importTheme.getName());
+                    }
+                    
+                    // reset import theme options
                     setImportTheme(false);
+                    setImportThemeId(null);
+                    
+                } catch(WebloggerException re) {
+                    log.error("Error saving weblog - 
"+getActionWeblog().getHandle(), re);
+                    addError("Error setting theme");
                 }
             } else {
                 // TODO: i18n
                 addError("Sorry, custom themes are not allowed");
             }
             
+        // we are dealing with a shared theme scenario
         } else if("shared".equals(getThemeType())) {
-            // validation
-            myValidate();
             
-            if(!hasActionErrors()) {
+            // make sure theme is valid and enabled
+            Theme newTheme = null;
+            if(getThemeId() == null) {
+                // TODO: i18n
+                addError("No theme specified");
+                
+            } else {
+                try {
+                    ThemeManager themeMgr = 
RollerFactory.getRoller().getThemeManager();
+                    newTheme = themeMgr.getTheme(getThemeId());
+                    
+                    if(!newTheme.isEnabled()) {
+                        // TODO: i18n
+                        addError("Theme not enabled");
+                    }
+                    
+                } catch(Exception ex) {
+                    log.warn(ex);
+                    // TODO: i18n
+                    addError("Theme not found");
+                }
+            }
+            
+            if(!hasActionErrors()) try {
                 weblog.setEditorTheme(getThemeId());
                 log.debug("Saving theme "+getThemeId()+" for weblog 
"+weblog.getHandle());
-            }
-        } else {
-            // invalid theme type
-            // TODO: i18n
-            addError("no valid theme type submitted");
-        }
-        
-        if(!hasActionErrors()) {
-            try {
+                
                 // save updated weblog and flush
                 UserManager userMgr = 
RollerFactory.getRoller().getUserManager();
                 userMgr.saveWebsite(weblog);
@@ -155,44 +192,21 @@
                 CacheManager.invalidate(weblog);
                 
                 // TODO: i18n
-                addMessage("Successfully updated theme");
+                addMessage("Successfully set theme to - "+newTheme.getName());
                 
             } catch(WebloggerException re) {
                 log.error("Error saving weblog - 
"+getActionWeblog().getHandle(), re);
                 addError("Error setting theme");
             }
-        }
-        
-        return execute();
-    }
-    
-    
-    // validation
-    private void myValidate() {
-        
-        String newTheme = getThemeId();
-        
-        // make sure theme is valid and enabled
-        if(newTheme == null) {
-            // TODO: i18n
-            addError("No theme specified");
             
+        // unknown theme scenario, error
         } else {
-            try {
-                ThemeManager themeMgr = 
RollerFactory.getRoller().getThemeManager();
-                Theme newThemeObj = themeMgr.getTheme(getThemeId());
-                
-                if(!newThemeObj.isEnabled()) {
-                    // TODO: i18n
-                    addError("Theme not enabled");
-                }
-                
-            } catch(Exception ex) {
-                log.warn(ex);
-                // TODO: i18n
-                addError("Theme not found");
-            }
+            // invalid theme type
+            // TODO: i18n
+            addError("no valid theme type submitted");
         }
+        
+        return execute();
     }
     
     
@@ -203,7 +217,8 @@
     // has this weblog had a custom theme before?
     public boolean isFirstCustomization() {
         try {
-            return 
(getActionWeblog().getPageByAction(WeblogTemplate.ACTION_WEBLOG) == null);
+            UserManager umgr = RollerFactory.getRoller().getUserManager();
+            return (umgr.getPageByAction(getActionWeblog(), 
WeblogTemplate.ACTION_WEBLOG) == null);
         } catch (WebloggerException ex) {
             log.error("Error looking up weblog template", ex);
         }

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
 Thu Jun  7 19:51:57 2007
@@ -27,7 +27,7 @@
 import org.apache.roller.weblogger.config.RollerRuntimeConfig;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.ui.core.util.UIUtils;
+import org.apache.roller.weblogger.ui.struts2.util.UIUtils;
 import org.apache.roller.weblogger.ui.core.util.menu.Menu;
 import org.apache.roller.weblogger.ui.core.util.menu.MenuHelper;
 

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
 Thu Jun  7 19:51:57 2007
@@ -1352,10 +1352,16 @@
 Beware though, managing a blog design of your own takes a bit of effort.
 
 themeEditor.yourCurrentTheme=Your current theme is
-themeEditor.selectTheme=Select a new theme to preview
+themeEditor.selectTheme=Select a new shared theme for your blog
 themeEditor.youMayCustomize=If you like you may customize a personal copy of \
 this theme.
 
+themeEditor.templatesLink=Start editing your blog templates.
+themeEditor.templatesDescription=Now that you are using a custom theme the \
+design of your blog is defined entirely by you using a series of templates. \
+You can modify your templates as much as you like and if you ever decide you \
+want to start over you can do so by copying one of the existing themes.
+
 themeEditor.previewLink=See how your blog will look with this theme.
 themeEditor.previewDescription=How can you know if this is really the \
 theme for you until you see it on your blog right?  Click the link above \
@@ -1367,14 +1373,14 @@
 different fonts, colors, etc, then try making your own stylesheet or \
 borrow one from someoone else using your theme.
 
-themeEditor.import=I want to copy the templates from the selected theme into 
my weblog.
+themeEditor.import=I want to copy the templates from an existing theme into my 
weblog.
 themeEditor.importWarning=WARNING: this operation may overwrite some of your \
 existing templates.
 themeEditor.importRequired=Since this is the first time you are going to try a 
\
-custom theme you must copy the templates from an existing theme to start with. 
\
+custom theme you must copy the templates from an existing theme. \
 Please select the theme you would like to use as a starting point for your 
customizations.
 
-themeEditor.save=Save
+themeEditor.save=Update Theme
 
 
 # ---------------------------------------------------------------------- 
Uploads

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
 Thu Jun  7 19:51:57 2007
@@ -59,9 +59,8 @@
                         <s:text name="weblogEdit.published" />
                         (<s:text name="weblogEdit.updateTime" />
                         <s:date name="entry.updateTime" format="dd/MM/yyyy 
hh:mm a" />)
-                        <a href='<s:property value="entry.permalink" />'>
-                            <s:property value="entry.permaLink" />
-                        </a>
+                        &nbsp;&nbsp;&nbsp;&nbsp;<img src="<s:url 
value="/images/launch-link.png"/>" />
+                        <a href='<s:property value="entry.permalink" 
/>'><s:text name="weblogEdit.permaLink" /></a>
                     </span>
                 </s:if>
                 <s:elseif test="bean.draft">

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/ThemeEdit.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/ThemeEdit.jsp?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/ThemeEdit.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/ThemeEdit.jsp
 Thu Jun  7 19:51:57 2007
@@ -47,6 +47,10 @@
         $('sharedOptioner').hide();
     }
 }
+
+function toggleImportThemeDisplay() {
+    $('themeImport').toggle();
+}
 -->
 </script>
 
@@ -77,7 +81,14 @@
     </table>
     
     <div id="sharedOptioner" class="optioner" style="display:none;">
-        <p><s:text name="themeEditor.yourCurrentTheme" />: <b><s:property 
value="actionWeblog.theme.name"/></b></p>
+        <p>
+            <s:if test="!customTheme">
+                <s:text name="themeEditor.yourCurrentTheme" />: <b><s:property 
value="actionWeblog.theme.name"/></b>
+            </s:if>
+            <s:else>
+                <s:text name="themeEditor.selectTheme" />
+            </s:else>
+        </p>
         
         <p>
             <s:select id="sharedSelector" name="themeId" list="themes" 
listKey="id" listValue="name" size="1" 
onchange="previewImage($('sharedPreviewImg'), this[selectedIndex].value)"/>
@@ -112,41 +123,63 @@
     </div>
     
     <div id="customOptioner" class="optioner" style="display:none;">
-        <p>
-            <s:if test="!firstCustomization">
+        
+        <s:if test="firstCustomization">
+            <p>
                 <s:hidden name="importTheme" value="true" />
                 <span class="warning"><s:text 
name="themeEditor.importRequired" /></span>
+            </p>
+        </s:if>
+        <s:else>
+            <s:if test="customTheme">
+                <p>
+                    <s:url id="templatesUrl" action="templates">
+                        <s:param name="weblog" value="%{actionWeblog.handle}" 
/>
+                    </s:url>
+                    &raquo; <s:a href="%{templatesUrl}"><s:text 
name="themeEditor.templatesLink" /></s:a><br/>
+                    <s:text name="themeEditor.templatesDescription" />
+                </p>
             </s:if>
-            <s:else>
-                <s:checkbox name="importTheme" /><s:text 
name="themeEditor.import" /><br/>
-                <span class="warning"><s:text name="themeEditor.importWarning" 
/></span>
-            </s:else>
-        </p>
-        <p>
-            <s:select id="customSelector" name="importThemeId" list="themes" 
listKey="id" listValue="name" size="1" 
onchange="previewImage($('customPreviewImg'), this[selectedIndex].value)"/>
-        </p>
-        <p>
-            <img id="customPreviewImg" src="" />
-            <!-- initialize preview image at page load -->
-            <script type="text/javascript">
+            
+            <p>
+                <s:checkbox name="importTheme" 
onclick="$('themeImport').toggle();" /><s:text name="themeEditor.import" />
+            </p>
+        </s:else>
+        
+        <div id="themeImport" style="display:none;">
+            <s:if test="customTheme">
+                <p>
+                    <span class="warning"><s:text 
name="themeEditor.importWarning" /></span>
+                </p>
+            </s:if>
+            
+            <p>
+                <s:select id="customSelector" name="importThemeId" 
list="themes" listKey="id" listValue="name" size="1" 
onchange="previewImage($('customPreviewImg'), this[selectedIndex].value)"/>
+            </p>
+            <p>
+                <img id="customPreviewImg" src="" />
+                <!-- initialize preview image at page load -->
+                <script type="text/javascript">
                 <s:if test="customTheme">
                     previewImage($('customPreviewImg'), '<s:property 
value="themes[0].id"/>');
                 </s:if>
                 <s:else>
                     previewImage($('customPreviewImg'), '<s:property 
value="themeId"/>');
                 </s:else>
-            </script>
-        </p>
-        <p>
-            &raquo; <a href="#" 
onclick="fullPreview($('customSelector'))"><s:text 
name="themeEditor.previewLink" /></a><br/>
-            <s:text name="themeEditor.previewDescription" />
-        </p>
+                </script>
+            </p>
+            <p>
+                &raquo; <a href="#" 
onclick="fullPreview($('customSelector'))"><s:text 
name="themeEditor.previewLink" /></a><br/>
+                <s:text name="themeEditor.previewDescription" />
+            </p>
+        </div>
+        
         <p><s:submit key="themeEditor.save" /></p>
     </div>
     
 </s:form>
 
-<%-- initializes the chooser/optioner display at page load time --%>
+<%-- initializes the chooser/optioner/themeImport display at page load time 
--%>
 <script type="text/javascript">
     <s:if test="customTheme">
         updateThemeChooser($('customRadio'));
@@ -154,4 +187,8 @@
     <s:else>
         updateThemeChooser($('sharedRadio'));
     </s:else>
+    
+    <s:if test="firstCustomization">
+        $('themeImport').show();
+    </s:if>
 </script>

Modified: 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/styles/roller.css
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/roller-ui/styles/roller.css?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/roller-ui/styles/roller.css 
(original)
+++ roller/branches/roller_guice/apps/weblogger/web/roller-ui/styles/roller.css 
Thu Jun  7 19:51:57 2007
@@ -733,3 +733,9 @@
 .optioner {
   margin: 0px 30px 30px 30px;
 }
+
+#themeImport {
+  width: 85%;
+  margin-left: auto;
+  margin-right: auto;
+}

Propchange: roller/branches/roller_guice/components/core/nbproject/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jun  7 19:51:57 2007
@@ -0,0 +1 @@
+private

Modified: roller/branches/roller_guice/merges.txt
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/merges.txt?view=diff&rev=545380&r1=545379&r2=545380
==============================================================================
--- roller/branches/roller_guice/merges.txt (original)
+++ roller/branches/roller_guice/merges.txt Thu Jun  7 19:51:57 2007
@@ -1,6 +1,9 @@
 
 June 6, 2007
-svn merge -r 544667: https://svn.apache.org/repos/asf/roller/trunk
+svn merge -r 544948:545377 https://svn.apache.org/repos/asf/roller/trunk
+
+June 6, 2007
+svn merge -r 544667:544948 https://svn.apache.org/repos/asf/roller/trunk
 
 June 5, 2007
 svn merge -r 544642:544667 https://svn.apache.org/repos/asf/roller/trunk


Reply via email to