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/06 18:09:40 UTC
svn commit: r1616263 - in /roller/trunk/app/src/main:
java/org/apache/roller/weblogger/business/jpa/
java/org/apache/roller/weblogger/pojos/
java/org/apache/roller/weblogger/ui/struts2/editor/
java/org/apache/roller/weblogger/ui/struts2/util/ resources...
Author: gmazza
Date: Wed Aug 6 16:09:39 2014
New Revision: 1616263
URL: http://svn.apache.org/r1616263
Log:
Consolidated BookmarkAdd into BookmarkEdit.
Removed:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkAdd.jsp
Modified:
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmark.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
roller/trunk/app/src/main/resources/ApplicationResources.properties
roller/trunk/app/src/main/resources/struts.xml
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkEdit.jsp
roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java Wed Aug 6 16:09:39 2014
@@ -67,11 +67,15 @@ public class JPABookmarkManagerImpl impl
public void saveBookmark(WeblogBookmark bookmark) throws WebloggerException {
- boolean exists = getBookmark(bookmark.getId()) != null;
+ boolean exists = getBookmark(bookmark.getId()) != null;
if (!exists) {
// New object make sure that relationship is set on managed copy of other side
bookmark.getFolder().addBookmark(bookmark);
}
+ // set ranking (order of appearance) of bookmark
+ if (bookmark.getPriority() == null) {
+ bookmark.calculatePriority();
+ }
this.strategy.store(bookmark);
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmark.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmark.java?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmark.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmark.java Wed Aug 6 16:09:39 2014
@@ -62,18 +62,11 @@ public class WeblogBookmark implements S
this.url = url;
this.feedUrl = feedUrl;
this.image = image;
-
folder.addBookmark(this);
- int size = folder.getBookmarks().size();
- if (size == 1) {
- this.priority = 0;
- } else {
- this.priority = folder.getBookmarks().get(size - 2).getPriority() + 1;
- }
+ calculatePriority();
}
//------------------------------------------------------------- Attributes
-
public String getId() {
return this.id;
}
@@ -81,7 +74,16 @@ public class WeblogBookmark implements S
public void setId(String id) {
this.id = id;
}
-
+
+ public void calculatePriority() {
+ int size = folder.getBookmarks().size();
+ if (size == 1) {
+ this.priority = 0;
+ } else {
+ this.priority = folder.getBookmarks().get(size - 2).getPriority() + 1;
+ }
+ }
+
/**
* Name of bookmark.
*/
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java Wed Aug 6 16:09:39 2014
@@ -18,9 +18,6 @@
package org.apache.roller.weblogger.ui.struts2.editor;
-import java.net.MalformedURLException;
-import java.net.URL;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,116 +31,99 @@ import org.apache.struts2.interceptor.va
/**
- * Add a new bookmark to a folder.
+ * Edit a new or existing bookmark (blogroll item).
*/
public class BookmarkEdit extends UIAction {
private static Log log = LogFactory.getLog(BookmarkEdit.class);
-
- // the id of the folder we are working with
- private String folderId = null;
-
- // the bookmark we are editing
- private WeblogBookmark bookmark = null;
-
+
// bean for managing form data
private BookmarkBean bean = new BookmarkBean();
-
-
+
+ // the id of the folder holding the bookmark
+ private String folderId = null;
+
+ // the bookmark we are adding or editing
+ private WeblogBookmark bookmark = null;
+
+
public BookmarkEdit() {
- this.actionName = "bookmarkEdit";
this.desiredMenu = "editor";
- this.pageTitle = "bookmarkForm.edit.title";
}
public void myPrepare() {
- try {
+ if (StringUtils.isEmpty(bean.getId())) {
+ // Create and initialize new, not-yet-saved WeblogBookmark
+ bookmark = new WeblogBookmark();
BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
- if(!StringUtils.isEmpty(getBean().getId())) {
- setBookmark(bmgr.getBookmark(getBean().getId()));
+ try {
+ if (!StringUtils.isEmpty(getFolderId())) {
+ bookmark.setFolder(bmgr.getFolder(getFolderId()));
+ }
+ } catch (WebloggerException ex) {
+ addError("generic.error.check.logs");
+ log.error("Error looking up folder", ex);
+ }
+ } else {
+ // existing bookmark, retrieve its info from DB
+ try {
+ BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
+ bookmark = bmgr.getBookmark(getBean().getId());
+ } catch (WebloggerException ex) {
+ addError("generic.error.check.logs");
+ log.error("Error looking up bookmark" + getBean().getId(), ex);
}
- } catch (WebloggerException ex) {
- log.error("Error looking up bookmark - "+getBean().getId(), ex);
}
}
@SkipValidation
public String execute() {
-
- if(getBookmark() == null) {
- addError("Cannot edit null bookmark");
- return ERROR;
+ if (!isAdd()) {
+ // make sure bean is populated with DB values on initial load
+ getBean().copyFrom(getBookmark());
}
-
- // make sure bean is properly loaded with pojo data
- getBean().copyFrom(getBookmark());
-
return INPUT;
}
public String save() {
-
- if(getBookmark() == null) {
- addError("Cannot edit null bookmark");
- return ERROR;
- }
-
+
// validation
myValidate();
if(!hasActionErrors()) {
try {
- getBean().copyTo(getBookmark());
-
+ getBean().copyTo(bookmark);
BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
- bmgr.saveBookmark(getBookmark());
+ bmgr.saveBookmark(bookmark);
WebloggerFactory.getWeblogger().flush();
-
- CacheManager.invalidate(getBookmark());
-
- addMessage("bookmarkForm.changesSaved");
+ CacheManager.invalidate(bookmark);
+ addMessage(isAdd() ? "bookmarkForm.created" : "bookmarkForm.updated",
+ getBookmark().getName());
+ return SUCCESS;
} catch(Exception ex) {
log.error("Error saving bookmark", ex);
- addError("bookmarkForm.error.saving");
+ addError("generic.error.check.logs");
}
}
return INPUT;
}
- /**
- * Cancel.
- *
- * @return the string
- */
- public String cancel() {
- return CANCEL;
- }
-
public void myValidate() {
- if (StringUtils.isNotEmpty(getBean().getUrl()) && !validURL(getBean().getUrl())) {
- addError("bookmarkgetBean().error.invalidURL", getBean().getUrl());
- }
- if (StringUtils.isNotEmpty(getBean().getFeedUrl()) && !validURL(getBean().getFeedUrl())) {
- addError("bookmarkgetBean().error.invalidURL", getBean().getFeedUrl());
- }
- if (StringUtils.isNotEmpty(getBean().getImage()) && !validURL(getBean().getImage())) {
- addError("bookmarkgetBean().error.invalidURL", getBean().getImage());
+ // if name new or changed, check new name doesn't already exist
+ if ((isAdd() || !getBean().getName().equals(bookmark.getName()))
+ && bookmark.getFolder().hasBookmarkOfName(getBean().getName())) {
+ addError("bookmarkForm.error.duplicateName", getBean().getUrl());
}
}
-
- public boolean validURL(String url) {
- boolean valid = false;
- try {
- URL test = new URL(url);
- valid = true;
- } catch (MalformedURLException intentionallyIgnored) {}
- return valid;
+
+ private boolean isAdd() {
+ return actionName.equals("bookmarkAdd");
}
-
+
public String getFolderId() {
return folderId;
}
@@ -152,14 +132,6 @@ public class BookmarkEdit extends UIActi
this.folderId = folderId;
}
- public WeblogBookmark getBookmark() {
- return bookmark;
- }
-
- public void setBookmark(WeblogBookmark bookmark) {
- this.bookmark = bookmark;
- }
-
public BookmarkBean getBean() {
return bean;
}
@@ -167,5 +139,9 @@ public class BookmarkEdit extends UIActi
public void setBean(BookmarkBean bean) {
this.bean = bean;
}
-
+
+ // getter needed because JSP reads this object in order to obtain folder name
+ public WeblogBookmark getBookmark() {
+ return bookmark;
+ }
}
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java Wed Aug 6 16:09:39 2014
@@ -85,12 +85,13 @@ public final class EntryEdit extends UIA
}
public void myPrepare() {
- if (getBean().getId() == null) { // new entry?
+ if (getBean().getId() == null) {
// Create and initialize new, not-yet-saved Weblog Entry
entry = new WeblogEntry();
entry.setCreatorUserName(getAuthenticatedUser().getUserName());
entry.setWebsite(getActionWeblog());
- } else { // already saved entry
+ } else {
+ // already saved entry
try {
// retrieve from DB WeblogEntry based on ID
WeblogEntryManager wmgr = WebloggerFactory.getWeblogger()
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java Wed Aug 6 16:09:39 2014
@@ -133,8 +133,16 @@ public abstract class UIAction extends A
} catch (Exception e) {}
return false;
}
-
-
+
+ /**
+ * Cancel.
+ *
+ * @return "CANCEL" string constant.
+ */
+ public String cancel() {
+ return CANCEL;
+ }
+
public String getSiteURL() {
return WebloggerRuntimeConfig.getRelativeContextURL();
}
Modified: roller/trunk/app/src/main/resources/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/ApplicationResources.properties?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/ApplicationResources.properties (original)
+++ roller/trunk/app/src/main/resources/ApplicationResources.properties Wed Aug 6 16:09:39 2014
@@ -45,8 +45,10 @@ bookmarkForm.edit.subtitle=Editing bookm
bookmarkForm.image=Image URL
bookmarkForm.rssUrl=Newsfeed URL
bookmarkForm.url=Bookmark URL
-bookmarkForm.created=Bookmark created
-bookmarkForm.changesSaved=Changes saved
+bookmarkForm.created=Bookmark "{0}" created
+bookmarkForm.updated=Bookmark "{0}" updated
+
+bookmarkForm.rootPrompt=Just the {0} and {1} fields are required.
# errors from validation
Bookmark.error.nameNull=Name is a required field
@@ -57,7 +59,6 @@ Bookmark.error.urlBad=The URL you entere
Bookmark.error.imageBad=The image URL you entered is not valid
Bookmark.error.feedUrlBad=The feed URL you entered is not valid
bookmarkForm.error.duplicateName=Bookmark with that name already exists in folder
-bookmarkForm.error.saving=Error saving new bookmark
# ----------------------------------------------------------- BookmarksForm.jsp
@@ -476,7 +477,7 @@ folderForm.edit.title=Edit Folder
folderForm.edit.subtitle=Editing bookmark folder [{0}]
folderForm.add.success=Folder added
-folderForm.update.success=Folder updated
+folderForm.update.success=Folder name updated
folderForm.error.duplicateName=The folder name {0} is already in use, you will need to choose another
Modified: roller/trunk/app/src/main/resources/struts.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/struts.xml?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/struts.xml (original)
+++ roller/trunk/app/src/main/resources/struts.xml Wed Aug 6 16:09:39 2014
@@ -362,30 +362,30 @@
class="org.apache.roller.weblogger.ui.struts2.editor.Bookmarks">
<result name="list" type="tiles">.Bookmarks</result>
</action>
-
+
<action name="bookmarkAdd!*" method="{1}"
- class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkAdd">
- <result name="input" type="tiles">.BookmarkAdd</result>
+ class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
+ <param name="actionName">bookmarkAdd</param>
+ <param name="pageTitle">bookmarkForm.add.title</param>
+ <result name="input" type="tiles">.BookmarkEdit</result>
<result name="success" type="chain">bookmarks</result>
- <result name="cancel" type="redirectAction">
- <param name="actionName">bookmarks</param>
- <param name="weblog">${weblog}</param>
- <param name="folderId">${folderId}</param>
- <param name="suppressEmptyParameters">true</param>
- </result>
<result name="error" type="chain">bookmarks</result>
</action>
<action name="bookmarkEdit!*" method="{1}"
class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
+ <param name="actionName">bookmarkEdit</param>
+ <param name="pageTitle">bookmarkForm.edit.title</param>
<result name="input" type="tiles">.BookmarkEdit</result>
+ <result name="success" type="chain">bookmarks</result>
<result name="cancel" type="redirectAction">
<param name="actionName">bookmarks</param>
<param name="weblog">${weblog}</param>
<param name="folderId">${folderId}</param>
+ <!-- TODO: Remove in JSP? -->
<param name="suppressEmptyParameters">true</param>
</result>
- <result name="error" type="chain">bookmarks</result>
+ <result name="error" type="chain">bookmarkEdit</result>
</action>
<action name="bookmarksImport!*" method="{1}"
Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkEdit.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkEdit.jsp?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkEdit.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarkEdit.jsp Wed Aug 6 16:09:39 2014
@@ -17,18 +17,43 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+<%-- Titling, processing actions different between bookmark add and edit --%>
+<s:if test="actionName == 'bookmarkEdit'">
+ <s:set var="subtitleKey">bookmarkForm.edit.subtitle</s:set>
+ <s:set var="mainAction">bookmarkEdit</s:set>
+</s:if>
+<s:else>
+ <s:set var="subtitleKey">bookmarkForm.add.subtitle</s:set>
+ <s:set var="mainAction">bookmarkAdd</s:set>
+</s:else>
+
<p class="subtitle">
- <s:text name="bookmarkForm.edit.subtitle" >
- <s:param value="bookmark.folder.name" />
+ <s:text name="%{#subtitleKey}" >
+ <s:param value="bookmark.folder.name"/>
+ </s:text>
+</p>
+
+<p class="pagetip">
+ <s:text name="bookmarkForm.rootPrompt">
+ <s:param><s:text name="generic.name"/></s:param>
+ <s:param><s:text name="bookmarkForm.url"/></s:param>
</s:text>
</p>
-<s:form action="bookmarkEdit!save">
+<s:form>
<s:hidden name="salt" />
<s:hidden name="weblog" />
- <s:hidden name="bean.id" />
+ <%--
+ Edit action uses folderId for redirection back to proper bookmarks folder on cancel
+ (as configured in struts.xml); add action also, plus to know which folder to put new
+ bookmark in.
+ --%>
<s:hidden name="folderId" />
-
+ <s:if test="actionName == 'bookmarkEdit'">
+ <%-- bean for bookmark add does not have a bean id yet --%>
+ <s:hidden name="bean.id" />
+ </s:if>
+
<table>
<tr>
@@ -37,11 +62,6 @@
</tr>
<tr>
- <td><s:text name="generic.description" /></td>
- <td><s:textarea name="bean.description" rows="5" cols="50" /></td>
- </tr>
-
- <tr>
<td><s:text name="bookmarkForm.url" /></td>
<td><s:textfield name="bean.url" maxlength="255" size="70" /></td>
</tr>
@@ -52,6 +72,11 @@
</tr>
<tr>
+ <td><s:text name="generic.description" /></td>
+ <td><s:textarea name="bean.description" rows="5" cols="50" /></td>
+ </tr>
+
+ <tr>
<td><s:text name="bookmarkForm.image" /></td>
<td><s:textfield name="bean.image" maxlength="255" size="70" /></td>
</tr>
@@ -59,8 +84,8 @@
</table>
<p>
- <s:submit value="%{getText('generic.save')}" />
- <s:submit value="%{getText('generic.cancel')}" action="bookmarkAdd!cancel" />
+ <s:submit value="%{getText('generic.save')}" action="%{#mainAction}!save"/>
+ <s:submit value="%{getText('generic.cancel')}" action="bookmarkEdit!cancel" />
</p>
</s:form>
Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp Wed Aug 6 16:09:39 2014
@@ -130,7 +130,7 @@ function onMove()
<s:url var="editUrl" action="bookmarkEdit">
<s:param name="weblog" value="%{actionWeblog.handle}" />
<s:param name="bean.id" value="#bookmark.id" />
- <s:param name="folderId" value="%{folderId}" suppressEmptyParameters="true" />
+ <s:param name="folderId" value="%{folderId}" suppressEmptyParameters="true"/>
</s:url>
<s:a href="%{editUrl}"><img src='<s:url value="/images/page_white_edit.png"/>' border="0" alt="icon"
title="<s:text name='bookmarksForm.edit.tip' />" /></s:a>
@@ -170,7 +170,9 @@ function onMove()
</s:if>
<s:if test="folder.name != 'default'">
- <s:submit value="%{getText('bookmarksForm.deleteFolder')}" action="bookmarks!deleteFolder" onclick="onDeleteFolder();return false;"/>
+ <span style="float:right">
+ <s:submit value="%{getText('bookmarksForm.deleteFolder')}" action="bookmarks!deleteFolder" onclick="onDeleteFolder();return false;"/>
+ </span>
</s:if>
</div>
Modified: roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml?rev=1616263&r1=1616262&r2=1616263&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml Wed Aug 6 16:09:39 2014
@@ -338,11 +338,6 @@
<put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
</definition>
- <definition name=".BookmarkAdd" extends=".tiles-tabbedpage" >
- <put-attribute name="content" value="/WEB-INF/jsps/editor/BookmarkAdd.jsp" />
- <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />
- </definition>
-
<definition name=".BookmarkEdit" extends=".tiles-tabbedpage" >
<put-attribute name="content" value="/WEB-INF/jsps/editor/BookmarkEdit.jsp" />
<put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />