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" />