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>