You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by gm...@apache.org on 2014/08/29 18:00:23 UTC

svn commit: r1621331 - in /roller/trunk/app/src/main: java/org/apache/roller/weblogger/business/themes/ java/org/apache/roller/weblogger/ui/rendering/servlets/ java/org/apache/roller/weblogger/ui/struts2/ajax/ java/org/apache/roller/weblogger/ui/struts...

Author: gmazza
Date: Fri Aug 29 16:00:22 2014
New Revision: 1621331

URL: http://svn.apache.org/r1621331
Log:
PreviewThemeImageServlet and ThemeDescriptionServlet replaced with new ThemeDataServlet.

Added:
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
Removed:
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewThemeImageServlet.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDescriptionServlet.java
Modified:
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/web.xml

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java Fri Aug 29 16:00:22 2014
@@ -35,7 +35,7 @@ import org.apache.roller.weblogger.pojos
 /**
  * The Theme object encapsulates all elements of a single weblog theme. It is
  * used mostly to contain all the templates for a theme, but does contain other
- * theme related attributes such as name, last modifed date, etc.
+ * theme related attributes such as name, last modified date, etc.
  */
 public class SharedThemeFromDir extends SharedTheme {
 

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManager.java Fri Aug 29 16:00:22 2014
@@ -67,7 +67,7 @@ public interface ThemeManager {
      *
      * @return List A list of Theme objects which are enabled.
      */
-    List<Theme> getEnabledThemesList();
+    List<SharedTheme> getEnabledThemesList();
 
     /**
      * Import all the contents for a Theme into a weblog.

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java Fri Aug 29 16:00:22 2014
@@ -82,7 +82,7 @@ public class ThemeManagerImpl implements
 	// directory where themes are kept
 	private String themeDir = null;
 	// the Map contains ... (theme id, Theme)
-	private Map<String, Theme> themes = null;
+	private Map<String, SharedTheme> themes = null;
 
 	@com.google.inject.Inject
 	protected ThemeManagerImpl(Weblogger roller) {
@@ -174,11 +174,9 @@ public class ThemeManagerImpl implements
 
 	/**
 	 * @see org.apache.roller.weblogger.business.themes.ThemeManager#getEnabledThemesList()
-	 * 
-	 *      TODO: reimplement enabled vs. disabled logic once we support it
 	 */
-	public List<Theme> getEnabledThemesList() {
-		List<Theme> allThemes = new ArrayList<Theme>(this.themes.values());
+	public List<SharedTheme> getEnabledThemesList() {
+		List<SharedTheme> allThemes = new ArrayList<SharedTheme>(this.themes.values());
 
 		// sort 'em ... default ordering for themes is by name
 		Collections.sort(allThemes);
@@ -384,9 +382,9 @@ public class ThemeManagerImpl implements
 	 * This is a convenience method which loads all the theme data from themes
 	 * stored on the filesystem in the roller webapp /themes/ directory.
 	 */
-	private Map<String, Theme> loadAllThemesFromDisk() {
+	private Map<String, SharedTheme> loadAllThemesFromDisk() {
 
-		Map<String, Theme> themeMap = new HashMap<String, Theme>();
+		Map<String, SharedTheme> themeMap = new HashMap<String, SharedTheme>();
 
 		// first, get a list of the themes available
 		File themesdir = new File(this.themeDir);
@@ -409,7 +407,7 @@ public class ThemeManagerImpl implements
             // now go through each theme and load it into a Theme object
             for (String themeName : themenames) {
                 try {
-                    Theme theme = new SharedThemeFromDir(this.themeDir
+                    SharedTheme theme = new SharedThemeFromDir(this.themeDir
                             + File.separator + themeName);
                     themeMap.put(theme.getId(), theme);
                     log.info("Loaded theme '" + themeName + "'");
@@ -432,7 +430,7 @@ public class ThemeManagerImpl implements
 
 		try {
 
-			Theme theme = new SharedThemeFromDir(this.themeDir + File.separator
+            SharedTheme theme = new SharedThemeFromDir(this.themeDir + File.separator
 					+ reloadTheme);
 
             Theme loadedTheme = themes.get(theme.getId());

Added: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java?rev=1621331&view=auto
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java (added)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java Fri Aug 29 16:00:22 2014
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+package org.apache.roller.weblogger.ui.struts2.ajax;
+
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.business.themes.SharedTheme;
+import org.apache.roller.weblogger.business.themes.ThemeManager;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Return theme information (id, name, description, relative path to thumbnail)
+ * in JSON format.  Usage:
+ * <ul>
+ * <li>/authoring/themedata - get array of all shared theme data</li>
+ * <li>/authoring/themedata?theme=xxx - get data for specific theme</li>
+ * </ul>
+ */
+public class ThemeDataServlet extends HttpServlet {
+
+    protected void doPost(
+            HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        doGet(request, response);
+    }
+
+    public void doGet(
+            HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+
+        List<SharedTheme> themes;
+        String themeId;
+
+        themeId = request.getParameter("theme");
+
+        ThemeManager themeMgr = WebloggerFactory.getWeblogger()
+                .getThemeManager();
+        if (themeId == null) {
+            themes = themeMgr.getEnabledThemesList();
+        } else {
+            themes = new ArrayList<SharedTheme>(1);
+            try {
+                SharedTheme theme = themeMgr.getTheme(themeId);
+                themes.add(theme);
+            } catch (WebloggerException e) {
+                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "ERROR fetching theme data");
+                return;
+            }
+        }
+
+        response.setContentType("application/json; charset=utf-8");
+        PrintWriter pw = response.getWriter();
+        if (themeId == null) {
+            pw.println("[" );
+        }
+        for (Iterator it = themes.iterator(); it.hasNext();) {
+            SharedTheme theme = (SharedTheme) it.next();
+            pw.print("    { \"id\" : \"");
+            pw.print(theme.getId());
+            pw.print("\", ");
+            pw.print("\"name\" : \"");
+            pw.print(theme.getName());
+            pw.print("\", ");
+            pw.print("\"description\" : \"");
+            pw.print(theme.getDescription());
+            pw.print("\", ");
+            pw.print("\"previewPath\" : \"");
+            pw.print("/themes" + "/" + theme.getId() + "/" + theme.getPreviewImage().getPath());
+            pw.print("\" }");
+            if (it.hasNext()) {
+                pw.println(", ");
+            }
+        }
+        if (themeId == null) {
+            pw.println("]" );
+        }
+        response.flushBuffer();
+    }
+}

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java Fri Aug 29 16:00:22 2014
@@ -49,7 +49,7 @@ public class ThemeEdit extends UIAction 
     private static Log log = LogFactory.getLog(Templates.class);
 
     // list of available themes
-    private List<Theme> themes = Collections.emptyList();
+    private List<SharedTheme> themes = Collections.emptyList();
 
     // type of theme desired, either 'shared' or 'custom'
     private String themeType = null;
@@ -70,10 +70,9 @@ public class ThemeEdit extends UIAction 
     }
 
     public void myPrepare() {
-
         ThemeManager themeMgr = WebloggerFactory.getWeblogger()
                 .getThemeManager();
-        setThemes(themeMgr.getEnabledThemesList());
+        themes = themeMgr.getEnabledThemesList();
     }
 
     public String execute() {
@@ -258,14 +257,10 @@ public class ThemeEdit extends UIAction 
         return false;
     }
 
-    public List<Theme> getThemes() {
+    public List<SharedTheme> getThemes() {
         return themes;
     }
 
-    public void setThemes(List<Theme> themes) {
-        this.themes = themes;
-    }
-
     public String getThemeType() {
         return themeType;
     }

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java Fri Aug 29 16:00:22 2014
@@ -1,6 +1,6 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  The ASF licenses this file to You
+ * contributor license agreements.  The ASF licenses this file to You
  * under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License.
  * You may obtain a copy of the License at

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp Fri Aug 29 16:00:22 2014
@@ -19,15 +19,15 @@
 <script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
 
 <script>
-<!--
-function previewImage(theme) {
-    document.preview.src="<s:property value="siteURL" />/roller-ui/authoring/previewtheme?theme="+theme;
-    console.log(theme);
-    var url = "<%= request.getContextPath() %>/roller-ui/authoring/themedata/";
-	$.ajax({ url: url, data: {theme:theme}, success: function(data) { $('#themedescription').html(data);} });
+function previewImage(themeId) {
+  $.ajax({ url: "<s:property value='siteURL' />/roller-ui/authoring/themedata",
+    data: {theme:themeId}, success: function(data) {
+      $('#themedescription').html(data.description);
+      $('#themeThumbnail').attr('src','<s:property value="siteURL" />' + data.previewPath);
+    }
+  });
 }
 
-
 function handlePreview(handle) {
     previewSpan = document.getElementById("handlePreview");
     var n1 = previewSpan.childNodes[0];
@@ -38,12 +38,11 @@ function handlePreview(handle) {
 	    previewSpan.replaceChild(n2, n1);
     }
 }
--->
 </script>
 
 <p class="subtitle"><s:text name="createWebsite.prompt" /></p>
 
-<br /> 
+<br />
 
 <s:form action="createWeblog!save">
 <s:hidden name="salt" />
@@ -105,7 +104,7 @@ function handlePreview(handle) {
         <p id="themedescription"></p>
         <br />
 
-        <img name="preview" src='' />
+        <img id="themeThumbnail" src='' />
         <!-- initialize preview image at page load -->
         <script>
             <s:if test="bean.theme == null">
@@ -122,13 +121,13 @@ function handlePreview(handle) {
 </table>
 
 <br />
-   
+
 <s:submit value="%{getText('createWebsite.button.save')}" />
 <input type="button" value="<s:text name="generic.cancel"/>" onclick="window.location='<s:url action="menu"/>'" />
-    
+
 </s:form>
 
 <script>
     document.forms[0].elements[0].focus();
 </script>
-    
+

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp Fri Aug 29 16:00:22 2014
@@ -335,7 +335,7 @@ $( "#tagAutoComplete" )
     .autocomplete({
         delay: 500,
         source: function(request, response) {
-            $.getJSON("<s:property value="jsonAutocompleteUrl" />", { format: 'json', prefix: extractLast( request.term ) },
+            $.getJSON("<s:property value='jsonAutocompleteUrl' />", { format: 'json', prefix: extractLast( request.term ) },
             function(data) {
                 response($.map(data.tagcounts, function (dataValue) {
                     return {

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp Fri Aug 29 16:00:22 2014
@@ -16,17 +16,20 @@
   directory of this distribution.
 --%>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
+<script src="<s:url value='/roller-ui/scripts/jquery-2.1.1.min.js' />"></script>
 
 <script>
-function previewImage(q, q_desc, theme) {
-    q.attr('src','<s:property value="siteURL" />/roller-ui/authoring/previewtheme?theme=' + theme);
-    var url = "<%= request.getContextPath() %>/roller-ui/authoring/themedata/";
-	$.ajax({ url: url, data: {theme:theme}, success: function(data) { q_desc.html(data);} });
+function previewImage(themeId) {
+  $.ajax({ url: "<s:url value='themedata'/>",
+    data: {theme:themeId}, success: function(data) {
+      $('#themeDescription').html(data.description);
+      $('#themeThumbnail').attr('src','<s:property value="siteURL" />' + data.previewPath);
+    }
+  });
 }
 function fullPreview(selector) {
     selected = selector.selectedIndex;
-    window.open('<s:url value="/roller-ui/authoring/preview/%{actionWeblog.handle}"/>?theme='+selector.options[selected].value);
+    window.open('<s:url value="/roller-ui/authoring/preview/%{actionWeblog.handle}"/>?theme=' + selector.options[selected].value);
 }
 function updateThemeChooser(selected) {
     if (selected[0].value == 'shared') {
@@ -93,7 +96,6 @@ function updateThemeChooser(selected) {
                 <s:text name="themeEditor.selectTheme" />:
             </s:else>
         </p>
-
     </div>
 
     <div id="customOptioner" class="optioner" style="display:none;">
@@ -113,21 +115,12 @@ function updateThemeChooser(selected) {
         <p>
             <s:select id="themeSelector" name="selectedThemeId" list="themes"
                       listKey="id" listValue="name" size="1"
-                      onchange="previewImage($('#themeThumbnail'), $('#themeDescription'), this[selectedIndex].value)"/>
+                      onchange="previewImage(this[selectedIndex].value)"/>
         </p>
 
         <p id="themeDescription"></p>
         <p>
             <img id="themeThumbnail" src="" />
-            <!-- initialize preview image at page load -->
-            <script>
-            <s:if test="customTheme">
-                previewImage($('#themeThumbnail'), $('#themeDescription'), '<s:property value="themes[0].id"/>');
-            </s:if>
-            <s:else>
-                previewImage($('#themeThumbnail'), $('#themeDescription'), '<s:property value="themeId"/>');
-            </s:else>
-            </script>
         </p>
         <p>
             <s:text name="themeEditor.previewDescription" />
@@ -150,8 +143,10 @@ function updateThemeChooser(selected) {
 <script>
     <s:if test="customTheme">
         updateThemeChooser($('#customRadio'));
+        previewImage('<s:property value="themes[0].id"/>');
     </s:if>
     <s:else>
         updateThemeChooser($('#sharedRadio'));
+        previewImage('<s:property value="themeId"/>');
     </s:else>
 </script>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/web.xml?rev=1621331&r1=1621330&r2=1621331&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/web.xml (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/web.xml Fri Aug 29 16:00:22 2014
@@ -261,12 +261,6 @@
     </servlet>
 
     <servlet>
-        <servlet-name>PreviewThemeImageServlet</servlet-name>
-        <servlet-class>org.apache.roller.weblogger.ui.rendering.servlets.PreviewThemeImageServlet</servlet-class>
-        <load-on-startup>9</load-on-startup>
-    </servlet>
-
-    <servlet>
         <servlet-name>AtomServlet</servlet-name>
         <servlet-class>com.rometools.propono.atom.server.AtomServlet</servlet-class>
     </servlet>
@@ -282,8 +276,8 @@
     </servlet>
 
     <servlet>
-        <servlet-name>ThemeDescriptionServlet</servlet-name>
-        <servlet-class>org.apache.roller.weblogger.ui.struts2.ajax.ThemeDescriptionServlet</servlet-class>
+        <servlet-name>ThemeDataServlet</servlet-name>
+        <servlet-class>org.apache.roller.weblogger.ui.struts2.ajax.ThemeDataServlet</servlet-class>
     </servlet>
 
     <servlet>
@@ -400,12 +394,6 @@
         <url-pattern>/roller-ui/authoring/previewresource/*</url-pattern>
     </servlet-mapping>
 
-    <servlet-mapping>
-        <servlet-name>PreviewThemeImageServlet</servlet-name>
-        <url-pattern>/roller-ui/authoring/previewtheme</url-pattern>
-    </servlet-mapping>
-
-
     <!-- Servlets for supporting Ajax -->
     <servlet-mapping>
         <servlet-name>CommentDataServlet</servlet-name>
@@ -418,7 +406,7 @@
     </servlet-mapping>
 
     <servlet-mapping>
-        <servlet-name>ThemeDescriptionServlet</servlet-name>
+        <servlet-name>ThemeDataServlet</servlet-name>
         <url-pattern>/roller-ui/authoring/themedata/*</url-pattern>
     </servlet-mapping>