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/07 18:45:38 UTC

svn commit: r1616533 - in /roller/trunk/app/src/main: java/org/apache/roller/weblogger/pojos/ java/org/apache/roller/weblogger/ui/struts2/editor/ resources/ webapp/WEB-INF/ webapp/WEB-INF/jsps/editor/

Author: gmazza
Date: Thu Aug  7 16:45:37 2014
New Revision: 1616533

URL: http://svn.apache.org/r1616533
Log:
Consolidation of FolderAdd and FolderEdit

Removed:
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderAdd.jsp
Modified:
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.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/Bookmarks.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderBean.java
    roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.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/jsps/editor/BookmarksSidebar.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderEdit.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/Weblog.java Thu Aug  7 16:45:37 2014
@@ -878,7 +878,7 @@ public class Weblog implements Serializa
      */
     public boolean hasBookmarkFolder(String name) {
         for (WeblogBookmarkFolder folder : this.getBookmarkFolders()) {
-            if(name.equals(folder.getName())) {
+            if(name.toLowerCase().equals(folder.getName().toLowerCase())) {
                 return true;
             }
         }

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.java?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.java Thu Aug  7 16:45:37 2014
@@ -184,10 +184,4 @@ public class WeblogBookmarkFolder implem
         return bmgr.getBookmarks(this);
     }
 
-    // convenience method for updating the folder name
-    public void updateName(String newName) throws WebloggerException {
-        setName(newName);
-        WebloggerFactory.getWeblogger().getBookmarkManager().saveFolder(this);
-    }
-    
 }

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=1616533&r1=1616532&r2=1616533&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 Thu Aug  7 16:45:37 2014
@@ -80,7 +80,7 @@ public class BookmarkEdit extends UIActi
     @SkipValidation
     public String execute() {
         if (!isAdd()) {
-            // make sure bean is populated with DB values on initial load
+            // load bean with database values during initial load
             getBean().copyFrom(getBookmark());
         }
         return INPUT;
@@ -88,10 +88,8 @@ public class BookmarkEdit extends UIActi
 
     
     public String save() {
-
-        // validation
         myValidate();
-        
+
         if(!hasActionErrors()) {
             try {
                 getBean().copyTo(bookmark);

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java Thu Aug  7 16:45:37 2014
@@ -32,6 +32,7 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * List bookmarks and folders and allow for moving them around and deleting them.
@@ -174,6 +175,13 @@ public class Bookmarks extends UIAction 
         return execute();
     }
 
+    @SkipValidation
+    public String folderCreated() {
+        // action from FolderEdit upon creation of a new folder, to display
+        // a success message prior to showing the new folder.
+        addMessage("folderForm.created");
+        return execute();
+    }
 
     /**
      * View the contents of another bookmark folder.

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderBean.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderBean.java?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderBean.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderBean.java Thu Aug  7 16:45:37 2014
@@ -46,9 +46,7 @@ public class FolderBean {
     }
 
     public void copyTo(WeblogBookmarkFolder dataHolder) throws WebloggerException {
-        if(!dataHolder.getName().equals(this.name)) {
-            dataHolder.updateName(this.name);
-        }
+        dataHolder.setName(this.name);
     }
 
     public void copyFrom(WeblogBookmarkFolder dataHolder) {

Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java (original)
+++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java Thu Aug  7 16:45:37 2014
@@ -32,7 +32,7 @@ import org.apache.struts2.interceptor.va
 
 
 /**
- * Edit an existing folder.
+ * Edit a new or existing folder.
  */
 public class FolderEdit extends UIAction {
     
@@ -41,118 +41,96 @@ public class FolderEdit extends UIAction
     // the id of the folder we are working with
     private String folderId = null;
     
-    // the folder we are editing
+    // the folder we are adding or editing
     private WeblogBookmarkFolder folder = null;
     
     // bean for managing form data
     private FolderBean bean = new FolderBean();
-    
-    
+
     public FolderEdit() {
-        this.actionName = "folderEdit";
         this.desiredMenu = "editor";
-        this.pageTitle = "folderForm.edit.title";
     }
 
     // load folder to edit
     public void myPrepare() {
-        try {
-            BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
-            if(!StringUtils.isEmpty(getBean().getId())) {
-                setFolder(bmgr.getFolder(getBean().getId()));
+        if (StringUtils.isEmpty(bean.getId())) {
+            // Create and initialize new folder but don't save yet
+            folder = new WeblogBookmarkFolder();
+            folder.setWeblog(getActionWeblog());
+        } else {
+            // retrieve existing folder data from DB
+            try {
+                BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
+                folder = bmgr.getFolder(getBean().getId());
+            } catch (WebloggerException ex) {
+                log.error("Error looking up folder", ex);
             }
-        } catch (WebloggerException ex) {
-            log.error("Error looking up folder", ex);
         }
     }
-    
-    
+
     /**
      * Show folder edit page.
      */
     @SkipValidation
     public String execute() {
-        
-        if(getFolder() == null) {
-            addError("Cannot edit null folder");
-            return ERROR;
+        if (!isAdd()) {
+            // load bean with database values during initial load
+            getBean().copyFrom(folder);
         }
-        
-        // make sure bean is properly loaded from pojo data
-        getBean().copyFrom(getFolder());
-        
         return INPUT;
     }
 
-    
     /**
      * Save updated folder data.
      */
     public String save() {
-        
-        if(getFolder() == null) {
-            addError("Cannot edit null folder");
-            return ERROR;
-        }
-        
-        // validation
         myValidate();
         
         if(!hasActionErrors()) {
             try {
-
                 // copy updated attributes
-                getBean().copyTo(getFolder());
+                getBean().copyTo(folder);
 
                 // save changes
                 BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
-                bmgr.saveFolder(getFolder());
+                bmgr.saveFolder(folder);
                 WebloggerFactory.getWeblogger().flush();
 
                 // notify caches
-                CacheManager.invalidate(getFolder());
+                CacheManager.invalidate(folder);
 
-                addMessage("folderForm.update.success");
+                if (isAdd()) {
+                    // if adding, move to new folder upon save.
+                    folderId = folder.getId();
+                } else {
+                    // create message added in Bookmarks class as it's reached via a
+                    // redirect in struts.xml instead of a chain.
+                    addMessage("folderForm.updated");
+                }
+
+                return SUCCESS;
 
             } catch(Exception ex) {
                 log.error("Error saving folder", ex);
-                addError("Error saving folder");
+                addError("generic.error.check.logs");
             }
         }
         
         return INPUT;
     }
 
-    /**
-     * Cancel.
-     * 
-     * @return the string
-     */
-    public String cancel() {
-        return CANCEL;
-    }
-    
-    // TODO: validation
     public void myValidate() {
-        
-        // name is required, has max length, no html
-        
         // make sure new name is not a duplicate of an existing folder
-        if(!getFolder().getName().equals(getBean().getName())) {
-            Weblog weblog = getFolder().getWeblog();
-            if(weblog.hasBookmarkFolder(getBean().getName())) {
+        if((isAdd() || !folder.getName().equals(getBean().getName()))) {
+            if (folder.getWeblog().hasBookmarkFolder(getBean().getName())) {
                 addError("folderForm.error.duplicateName", getBean().getName());
             }
         }
     }
-    
 
-    public WeblogBookmarkFolder getFolder() {
-        return folder;
-    }
 
-    public void setFolder(WeblogBookmarkFolder folder) {
-        this.folder = folder;
+    private boolean isAdd() {
+        return actionName.equals("folderAdd");
     }
 
     public FolderBean getBean() {

Modified: roller/trunk/app/src/main/resources/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/ApplicationResources.properties?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/ApplicationResources.properties (original)
+++ roller/trunk/app/src/main/resources/ApplicationResources.properties Thu Aug  7 16:45:37 2014
@@ -476,10 +476,10 @@ folderForm.add.subtitle=Adding new bookm
 folderForm.edit.title=Edit Folder
 folderForm.edit.subtitle=Editing bookmark folder [{0}]
 
-folderForm.add.success=Folder added
-folderForm.update.success=Folder name updated
+folderForm.created=Folder created
+folderForm.updated=Folder name updated
 
-folderForm.error.duplicateName=The folder name {0} is already in use, you will need to choose another
+folderForm.error.duplicateName=The folder name {0} is already in use, please choose another name
 
 # errors from validation
 Folder.error.nameNull=Name is a required field

Modified: roller/trunk/app/src/main/resources/struts.xml
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/struts.xml?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/struts.xml (original)
+++ roller/trunk/app/src/main/resources/struts.xml Thu Aug  7 16:45:37 2014
@@ -382,8 +382,6 @@
                 <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">bookmarkEdit</result>
         </action>
@@ -395,26 +393,29 @@
         </action>
         
         <action name="folderAdd!*" method="{1}"
-                class="org.apache.roller.weblogger.ui.struts2.editor.FolderAdd">
-            <result name="input" type="tiles">.FolderAdd</result>
-            <result name="success" type="chain">bookmarks</result>
-            <result name="cancel" type="redirectAction">
-                <param name="actionName">bookmarks</param>
+                class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
+            <param name="actionName">folderAdd</param>
+            <param name="pageTitle">folderForm.add.title</param>
+            <result name="input" type="tiles">.FolderEdit</result>
+            <!-- redirect because switching to the newly created bookmarks folder -->
+            <result name="success" type="redirectAction">
+                <param name="actionName">bookmarks!folderCreated</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="folderEdit!*" method="{1}"
                 class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
+            <param name="actionName">folderEdit</param>
+            <param name="pageTitle">folderForm.edit.title</param>
             <result name="input" type="tiles">.FolderEdit</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>

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=1616533&r1=1616532&r2=1616533&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 Thu Aug  7 16:45:37 2014
@@ -17,7 +17,7 @@
 --%>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
-<%-- Titling, processing actions different between bookmark add and edit --%>
+<%-- Titling, processing actions different between add and edit --%>
 <s:if test="actionName == 'bookmarkEdit'">
     <s:set var="subtitleKey">bookmarkForm.edit.subtitle</s:set>
     <s:set var="mainAction">bookmarkEdit</s:set>

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=1616533&r1=1616532&r2=1616533&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 Thu Aug  7 16:45:37 2014
@@ -19,8 +19,7 @@
 
 <%-- JavaScript for bookmarks table --%>
 <script>
-// <!-- 
-function onDelete() 
+function onDelete()
 {
     if ( confirm("<s:text name='bookmarksForm.delete.confirm' />") ) 
     {
@@ -45,7 +44,6 @@ function onMove()
         document.bookmarks.submit();
     }
 }
-// -->
 </script>
 
 <s:if test="folder.name == 'default'">
@@ -64,7 +62,7 @@ function onMove()
     <s:url var="editUrl" action="folderEdit">
         <s:param name="weblog" value="%{actionWeblog.handle}" />
         <s:param name="bean.id" value="%{folder.id}" />
-        <s:param name="folderId" value="%{folder.id}" suppressEmptyParameters="true" />
+        <s:param name="folderId" value="%{folder.id}" />
     </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.folder.edit.tip' />" /></s:a>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarksSidebar.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarksSidebar.jsp?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarksSidebar.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/BookmarksSidebar.jsp Thu Aug  7 16:45:37 2014
@@ -41,6 +41,7 @@
                     <img src='<s:url value="/images/folder_add.png"/>' border="0"alt="icon" />
                     <s:url var="addFolder" action="folderAdd">
                         <s:param name="weblog" value="%{actionWeblog.handle}" />
+                        <s:param name="folderId" value="%{folder.id}" />
                     </s:url>
                     <s:a href="%{addFolder}"><s:text name="bookmarksForm.addFolder" /></s:a>
                 </p>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderEdit.jsp
URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderEdit.jsp?rev=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderEdit.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/FolderEdit.jsp Thu Aug  7 16:45:37 2014
@@ -17,21 +17,33 @@
 --%>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
+<%-- Titling, processing actions different between add and edit --%>
+<s:if test="actionName == 'folderEdit'">
+    <s:set var="subtitleKey">folderForm.edit.subtitle</s:set>
+    <s:set var="mainAction">folderEdit</s:set>
+</s:if>
+<s:else>
+    <s:set var="subtitleKey">folderForm.add.subtitle</s:set>
+    <s:set var="mainAction">folderAdd</s:set>
+</s:else>
+
+
 <p class="subtitle">
-    <s:text name="folderForm.edit.subtitle" >
+    <s:text name="%{#subtitleKey}" >
         <s:param value="folder.name" />
     </s:text>
 </p>
 
-<s:form action="folderEdit!save">
+<s:form>
 	<s:hidden name="salt" />
     <s:hidden name="weblog" />
-    <s:hidden name="bean.id" />
-    
-    <%-- if we cancel then we need this attribute --%>
-    <%-- (Need to test after folder edit re-implemented) --%>
-    <s:hidden name="folderId" value="%{folder.id}" />
-    
+    <%-- folderId needed on cancel to determine folder to return to (see struts.xml) --%>
+    <s:hidden name="folderId" value="%{folderId}" />
+    <s:if test="actionName == 'folderEdit'">
+        <%-- bean for folder add does not have a bean id yet --%>
+        <s:hidden name="bean.id" />
+    </s:if>
+
     <table>
         <tr>
             <td><s:text name="generic.name" /></td>
@@ -40,7 +52,7 @@
     </table>
     
     <p>
-        <s:submit value="%{getText('generic.save')}" />
+        <s:submit value="%{getText('generic.save')}" action="%{#mainAction}!save"/>
         <s:submit value="%{getText('generic.cancel')}" action="folderEdit!cancel" />
     </p>
     

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=1616533&r1=1616532&r2=1616533&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml Thu Aug  7 16:45:37 2014
@@ -348,11 +348,6 @@
         <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />
     </definition>
     
-    <definition name=".FolderAdd" extends=".tiles-tabbedpage" >
-        <put-attribute name="content" value="/WEB-INF/jsps/editor/FolderAdd.jsp" />
-        <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />
-    </definition>
-    
     <definition name=".FolderEdit" extends=".tiles-tabbedpage" >
         <put-attribute name="content" value="/WEB-INF/jsps/editor/FolderEdit.jsp" />
         <put-attribute name="styles" value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />