Author: ghuber
Date: Sun Mar  4 16:18:43 2012
New Revision: 1296827

URL: http://svn.apache.org/viewvc?rev=1296827&view=rev
Log:
Some testing...

Modified:
    
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java
    
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
    
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
    
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java
    
roller/trunk/weblogger-web/src/main/resources/ApplicationResources.properties
    
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
    
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Categories.jsp
    roller/trunk/weblogger-webapp/src/main/webapp/theme/scripts/roller.js

Modified: 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java
 (original)
+++ 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkAdd.java
 Sun Mar  4 16:18:43 2012
@@ -116,6 +116,9 @@ public class BookmarkAdd extends UIActio
             // TODO: i18n
             addMessage("bookmark added");
             
+            // Set for next action
+            getBean().setId(newBookmark.getId());
+            
             return SUCCESS;
             
         } catch(Exception ex) {

Modified: 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
 (original)
+++ 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
 Sun Mar  4 16:18:43 2012
@@ -36,271 +36,285 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
 
-
 /**
- * List bookmarks and folders and allow for moving them around and deleting 
them.
+ * List bookmarks and folders and allow for moving them around and deleting
+ * them.
  */
 public class Bookmarks extends UIAction {
-    
-    private static Log log = LogFactory.getLog(Bookmarks.class);
-    
-    // the id of folder being viewed
-    private String folderId = null;
-    
-    // the folder being viewed
-    private WeblogBookmarkFolder folder = null;
-    
-    // the list of folders to move/delete
-    private String[] selectedFolders = null;
-    
-    // the list of bookmarks to move/delete
-    private String[] selectedBookmarks = null;
-    
-    // the target folder to move items to
-    private String targetFolderId = null;
-    
-    // all folders from the action weblog
-    private Set allFolders = Collections.EMPTY_SET;
-    
-    // path of folders representing selected folders hierarchy
-    private List folderPath = Collections.EMPTY_LIST;
-    
-    
-    public Bookmarks() {
-        this.actionName = "bookmarks";
-        this.desiredMenu = "editor";
-        this.pageTitle = "bookmarksForm.rootTitle";
-    }
-    
-    
-    // admin perms required
-    public List<String> requiredWeblogPermissionActions() {
-        return Collections.singletonList(WeblogPermission.ADMIN);
-    }
-    
-    
-    public void myPrepare() {
-        try {
-            BookmarkManager bmgr = 
WebloggerFactory.getWeblogger().getBookmarkManager();
-            if(!StringUtils.isEmpty(getFolderId()) && 
-                    !"/".equals(getFolderId())) {
-                setFolder(bmgr.getFolder(getFolderId()));
-            } else {
-                setFolder(bmgr.getRootFolder(getActionWeblog()));
-            }
-        } catch (WebloggerException ex) {
-            log.error("Error looking up folder", ex);
-        }
-    }
-    
-    
-    /**
-     * Present the bookmarks and subfolders available in the folder specified
-     * by the request.
-     */
-    public String execute() {
-        
-        // build list of folders for display
-        TreeSet allFolders = new TreeSet(new FolderPathComparator());
-        
-        try {
-            // Build list of all folders, except for current one, sorted by 
path.
-            BookmarkManager bmgr = 
WebloggerFactory.getWeblogger().getBookmarkManager();
-            List<WeblogBookmarkFolder> folders = 
bmgr.getAllFolders(getActionWeblog());
-            for(WeblogBookmarkFolder fd : folders) {
-                if (!fd.getId().equals(getFolderId())) {
-                    allFolders.add(fd);
-                }
-            }
-            
-            // build folder path
-            WeblogBookmarkFolder parent = getFolder().getParent();
-            if(parent != null) {
-                List folderPath = new LinkedList();
-                folderPath.add(0, getFolder());
-                while (parent != null) {
-                    folderPath.add(0, parent);
-                    parent = parent.getParent();
-                }
-                setFolderPath(folderPath);
-            }
-        } catch (WebloggerException ex) {
-            log.error("Error building folders list", ex);
-            // TODO: i18n
-            addError("Error building folders list");
-        }
-        
-        if (allFolders.size() > 0) {
-            setAllFolders(allFolders);
-        }
-
-        return LIST;
-    }
-    
-    
-    /**
-     * Delete folders and bookmarks.
-     */
-    public String delete() {
-        
-        BookmarkManager bmgr = 
WebloggerFactory.getWeblogger().getBookmarkManager();
-        
-        log.debug("Deleting selected folders and bookmarks.");
-        
-        try {
-            String folders[] = getSelectedFolders();
-            if (null != folders) {
-                log.debug("Processing delete of "+folders.length+" folders.");
-                for (int i = 0; i < folders.length; i++) {
-                    log.debug("Deleting folder - "+folders[i]);
-                    WeblogBookmarkFolder fd = bmgr.getFolder(folders[i]);
-                    bmgr.removeFolder(fd); // removes child folders and 
bookmarks too
-                }
-            }
-            
-            WeblogBookmark bookmark = null;
-            String bookmarks[] = getSelectedBookmarks();
-            if (null != bookmarks) {
-                log.debug("Processing delete of "+bookmarks.length+" 
bookmarks.");
-                for (int j = 0; j < bookmarks.length; j++) {
-                    log.debug("Deleting bookmark - "+bookmarks[j]);
-                    bookmark = bmgr.getBookmark(bookmarks[j]);
-                    bmgr.removeBookmark(bookmark);
-                }
-            }
-            
-            // flush changes
-            WebloggerFactory.getWeblogger().flush();
-            
-            // notify caches
-            CacheManager.invalidate(getActionWeblog());
-            
-        } catch (WebloggerException ex) {
-            log.error("Error doing folder/bookmark deletes", ex);
-            // TODO: i18n
-            addError("Error doing folder/bookmark deletes");
-        }
-        
-        return execute();
-    }
-    
-    
-    /**
-     * Move folders and bookmarks to a new folder.
-     */
-    public String move() {
-        
-        try {
-            BookmarkManager bmgr = 
WebloggerFactory.getWeblogger().getBookmarkManager();
-            
-            log.debug("Moving folders and bookmarks to folder - 
"+getTargetFolderId());
-            
-            // Move folders to new parent folder.
-            String folders[] = getSelectedFolders();
-            WeblogBookmarkFolder parent = bmgr.getFolder(getTargetFolderId());
-            if (null != folders) {
-                for (int i = 0; i < folders.length; i++) {
-                    WeblogBookmarkFolder fd = bmgr.getFolder(folders[i]);
-                    
-                    // Don't move folder into itself.
-                    if (!fd.getId().equals(parent.getId()) && 
-                            !parent.descendentOf(fd)) {
-                        bmgr.moveFolder(fd, parent);
-                    } else {
-                        addMessage("bookmarksForm.warn.notMoving", 
fd.getName());
-                    }
-                }
-            }
-            
-            // Move bookmarks to new parent folder.
-            String bookmarks[] = getSelectedBookmarks();
-            if (null != bookmarks) {
-                for (int j = 0; j < bookmarks.length; j++) {
-                    // maybe we should be using folder.addBookmark()?
-                    WeblogBookmark bd = bmgr.getBookmark(bookmarks[j]);
-                    bd.setFolder(parent);
-                    bmgr.saveBookmark(bd);
-                }
-            }
-            
-            // flush changes
-            WebloggerFactory.getWeblogger().flush();
-            
-            // notify caches
-            CacheManager.invalidate(getActionWeblog());
-            
-        } catch (WebloggerException e) {
-            log.error("Error doing folder/bookmark move", e);
-            addError("bookmarksForm.error.move");
-        }
-        
-        return execute();
-    }
-    
-    
-    private static final class FolderPathComparator implements Comparator {
-        public int compare(Object o1, Object o2) {
-            WeblogBookmarkFolder f1 = (WeblogBookmarkFolder)o1;
-            WeblogBookmarkFolder f2 = (WeblogBookmarkFolder)o2;
-            return f1.getPath().compareTo(f2.getPath());
-        }
-    }
-    
-
-    public String getFolderId() {
-        return folderId;
-    }
-
-    public void setFolderId(String folderId) {
-        this.folderId = folderId;
-    }
-
-    public String[] getSelectedFolders() {
-        return selectedFolders;
-    }
-
-    public void setSelectedFolders(String[] folders) {
-        this.selectedFolders = folders;
-    }
-
-    public String[] getSelectedBookmarks() {
-        return selectedBookmarks;
-    }
-
-    public void setSelectedBookmarks(String[] bookmarks) {
-        this.selectedBookmarks = bookmarks;
-    }
-
-    public String getTargetFolderId() {
-        return targetFolderId;
-    }
-
-    public void setTargetFolderId(String targetFolderId) {
-        this.targetFolderId = targetFolderId;
-    }
-
-    public Set getAllFolders() {
-        return allFolders;
-    }
-
-    public void setAllFolders(Set allFolders) {
-        this.allFolders = allFolders;
-    }
-
-    public WeblogBookmarkFolder getFolder() {
-        return folder;
-    }
-
-    public void setFolder(WeblogBookmarkFolder folder) {
-        this.folder = folder;
-    }
-
-    public List getFolderPath() {
-        return folderPath;
-    }
-
-    public void setFolderPath(List folderPath) {
-        this.folderPath = folderPath;
-    }
-    
+
+       private static Log log = LogFactory.getLog(Bookmarks.class);
+
+       // the id of folder being viewed
+       private String folderId = null;
+
+       // the folder being viewed
+       private WeblogBookmarkFolder folder = null;
+
+       // the list of folders to move/delete
+       private String[] selectedFolders = null;
+
+       // the list of bookmarks to move/delete
+       private String[] selectedBookmarks = null;
+
+       // the target folder to move items to
+       private String targetFolderId = null;
+
+       // all folders from the action weblog
+       private Set allFolders = Collections.EMPTY_SET;
+
+       // path of folders representing selected folders hierarchy
+       private List folderPath = Collections.EMPTY_LIST;
+
+       public Bookmarks() {
+               this.actionName = "bookmarks";
+               this.desiredMenu = "editor";
+               this.pageTitle = "bookmarksForm.rootTitle";
+       }
+
+       // admin perms required
+       public List<String> requiredWeblogPermissionActions() {
+               return Collections.singletonList(WeblogPermission.ADMIN);
+       }
+
+       public void myPrepare() {
+               try {
+                       BookmarkManager bmgr = WebloggerFactory.getWeblogger()
+                                       .getBookmarkManager();
+                       if (!StringUtils.isEmpty(getFolderId())
+                                       && !"/".equals(getFolderId())) {
+                               setFolder(bmgr.getFolder(getFolderId()));
+                       } else {
+                               
setFolder(bmgr.getRootFolder(getActionWeblog()));
+                       }
+               } catch (WebloggerException ex) {
+                       log.error("Error looking up folder", ex);
+               }
+       }
+
+       /**
+        * Present the bookmarks and subfolders available in the folder 
specified by
+        * the request.
+        */
+       public String execute() {
+
+               // build list of folders for display
+               TreeSet allFolders = new TreeSet(new FolderPathComparator());
+
+               try {
+                       // Build list of all folders, except for current one, 
sorted by
+                       // path.
+                       BookmarkManager bmgr = WebloggerFactory.getWeblogger()
+                                       .getBookmarkManager();
+                       List<WeblogBookmarkFolder> folders = bmgr
+                                       .getAllFolders(getActionWeblog());
+                       for (WeblogBookmarkFolder fd : folders) {
+                               if (getFolderId() == null && fd.getParent() == 
null) {
+                                       // Root folder so do not show the root /
+                               } else if (!fd.getId().equals(getFolderId())) {
+                                       allFolders.add(fd);
+                               }
+                       }
+
+                       // build folder path
+                       WeblogBookmarkFolder parent = getFolder().getParent();
+                       if (parent != null) {
+                               List folderPath = new LinkedList();
+                               folderPath.add(0, getFolder());
+                               while (parent != null) {
+                                       folderPath.add(0, parent);
+                                       parent = parent.getParent();
+                               }
+                               setFolderPath(folderPath);
+                       }
+               } catch (WebloggerException ex) {
+                       log.error("Error building folders list", ex);
+                       // TODO: i18n
+                       addError("Error building folders list");
+               }
+
+               if (allFolders.size() > 0) {
+                       setAllFolders(allFolders);
+               }
+
+               return LIST;
+       }
+
+       /**
+        * Delete folders and bookmarks.
+        */
+       public String delete() {
+
+               BookmarkManager bmgr = WebloggerFactory.getWeblogger()
+                               .getBookmarkManager();
+
+               log.debug("Deleting selected folders and bookmarks.");
+
+               try {
+                       String folders[] = getSelectedFolders();
+                       if (null != folders && folders.length > 0) {
+                               if (log.isDebugEnabled())
+                                       log.debug("Processing delete of " + 
folders.length
+                                                       + " folders.");
+                               for (int i = 0; i < folders.length; i++) {
+                                       if (log.isDebugEnabled())
+                                               log.debug("Deleting folder - " 
+ folders[i]);
+                                       WeblogBookmarkFolder fd = 
bmgr.getFolder(folders[i]);
+                                       if (fd != null) {
+                                               bmgr.removeFolder(fd); // 
removes child folders and
+                                               // bookmarks too
+                                       }
+                               }
+                       }
+
+                       WeblogBookmark bookmark = null;
+                       String bookmarks[] = getSelectedBookmarks();
+                       if (null != bookmarks && bookmarks.length > 0) {
+                               if (log.isDebugEnabled())
+                                       log.debug("Processing delete of " + 
bookmarks.length
+                                                       + " bookmarks.");
+                               for (int j = 0; j < bookmarks.length; j++) {
+                                       if (log.isDebugEnabled())
+                                               log.debug("Deleting bookmark - 
" + bookmarks[j]);
+                                       bookmark = 
bmgr.getBookmark(bookmarks[j]);
+                                       if (bookmark != null) {
+                                               bmgr.removeBookmark(bookmark);
+                                       }
+
+                               }
+                       }
+
+                       // flush changes
+                       WebloggerFactory.getWeblogger().flush();
+
+                       // notify caches
+                       CacheManager.invalidate(getActionWeblog());
+
+               } catch (WebloggerException ex) {
+                       log.error("Error doing folder/bookmark deletes", ex);
+                       // TODO: i18n
+                       addError("Error doing folder/bookmark deletes");
+               }
+
+               return execute();
+       }
+
+       /**
+        * Move folders and bookmarks to a new folder.
+        */
+       public String move() {
+
+               try {
+                       BookmarkManager bmgr = WebloggerFactory.getWeblogger()
+                                       .getBookmarkManager();
+
+                       if (log.isDebugEnabled())
+                               log.debug("Moving folders and bookmarks to 
folder - "
+                                               + getTargetFolderId());
+
+                       // Move folders to new parent folder.
+                       String folders[] = getSelectedFolders();
+                       WeblogBookmarkFolder parent = 
bmgr.getFolder(getTargetFolderId());
+                       if (null != folders && folders.length > 0) {
+                               for (int i = 0; i < folders.length; i++) {
+                                       WeblogBookmarkFolder fd = 
bmgr.getFolder(folders[i]);
+
+                                       // Don't move folder into itself.
+                                       if (!fd.getId().equals(parent.getId())
+                                                       && 
!parent.descendentOf(fd)) {
+                                               bmgr.moveFolder(fd, parent);
+                                       } else {
+                                               
addMessage("bookmarksForm.warn.notMoving", fd.getName());
+                                       }
+                               }
+                       }
+
+                       // Move bookmarks to new parent folder.
+                       String bookmarks[] = getSelectedBookmarks();
+                       if (null != bookmarks && bookmarks.length > 0) {
+                               for (int j = 0; j < bookmarks.length; j++) {
+                                       // maybe we should be using 
folder.addBookmark()?
+                                       WeblogBookmark bd = 
bmgr.getBookmark(bookmarks[j]);
+                                       bd.setFolder(parent);
+                                       bmgr.saveBookmark(bd);
+                               }
+                       }
+
+                       // flush changes
+                       WebloggerFactory.getWeblogger().flush();
+
+                       // notify caches
+                       CacheManager.invalidate(getActionWeblog());
+
+               } catch (WebloggerException e) {
+                       log.error("Error doing folder/bookmark move", e);
+                       addError("bookmarksForm.error.move");
+               }
+
+               return execute();
+       }
+
+       private static final class FolderPathComparator implements Comparator {
+               public int compare(Object o1, Object o2) {
+                       WeblogBookmarkFolder f1 = (WeblogBookmarkFolder) o1;
+                       WeblogBookmarkFolder f2 = (WeblogBookmarkFolder) o2;
+                       return f1.getPath().compareTo(f2.getPath());
+               }
+       }
+
+       public String getFolderId() {
+               return folderId;
+       }
+
+       public void setFolderId(String folderId) {
+               this.folderId = folderId;
+       }
+
+       public String[] getSelectedFolders() {
+               return selectedFolders;
+       }
+
+       public void setSelectedFolders(String[] folders) {
+               this.selectedFolders = folders;
+       }
+
+       public String[] getSelectedBookmarks() {
+               return selectedBookmarks;
+       }
+
+       public void setSelectedBookmarks(String[] bookmarks) {
+               this.selectedBookmarks = bookmarks;
+       }
+
+       public String getTargetFolderId() {
+               return targetFolderId;
+       }
+
+       public void setTargetFolderId(String targetFolderId) {
+               this.targetFolderId = targetFolderId;
+       }
+
+       public Set getAllFolders() {
+               return allFolders;
+       }
+
+       public void setAllFolders(Set allFolders) {
+               this.allFolders = allFolders;
+       }
+
+       public WeblogBookmarkFolder getFolder() {
+               return folder;
+       }
+
+       public void setFolder(WeblogBookmarkFolder folder) {
+               this.folder = folder;
+       }
+
+       public List getFolderPath() {
+               return folderPath;
+       }
+
+       public void setFolderPath(List folderPath) {
+               this.folderPath = folderPath;
+       }
+
 }

Modified: 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
 (original)
+++ 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
 Sun Mar  4 16:18:43 2012
@@ -34,184 +34,186 @@ import org.apache.roller.weblogger.pojos
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 
-
 /**
  * Manage weblog categories.
  */
 public class Categories extends UIAction {
-    
-    private static Log log = LogFactory.getLog(Categories.class);
-    
-    // the id of the category we are viewing
-    private String categoryId = null;
-    
-    // the category we are viewing
-    private WeblogCategory category = null;
-    
-    // list of category ids to move
-    private String[] selectedCategories = null;
-    
-    // category id of the category to move to
-    private String targetCategoryId = null;
-    
-    // all categories from the action weblog
-    private Set allCategories = Collections.EMPTY_SET;
-    
-    // path of categories representing selected categories hierarchy
-    private List categoryPath = Collections.EMPTY_LIST;
-    
-    
-    public Categories() {
-        this.actionName = "categories";
-        this.desiredMenu = "editor";
-        this.pageTitle = "categoriesForm.rootTitle";
-    }
-    
-    
-    // author perms required
-    public List<String> requiredWeblogPermissionActions() {
-        return Collections.singletonList(WeblogPermission.POST);
-    }
-    
-    
-    public void myPrepare() {
-        try {
-            WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger().getWeblogEntryManager();
-            if(!StringUtils.isEmpty(getCategoryId()) && 
-                    !"/".equals(getCategoryId())) {
-                setCategory(wmgr.getWeblogCategory(getCategoryId()));
-            } else {
-                setCategory(wmgr.getRootWeblogCategory(getActionWeblog()));
-            }
-        } catch (WebloggerException ex) {
-            log.error("Error looking up category", ex);
-        }
-    }
-    
-    
-    public String execute() {
-        
-        // build list of categories for display
-        TreeSet allCategories = new TreeSet(new 
WeblogCategoryPathComparator());
-        
-        try {
-            // Build list of all categories, except for current one, sorted by 
path.
-            WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger().getWeblogEntryManager();
-            List<WeblogCategory> cats = 
wmgr.getWeblogCategories(getActionWeblog(), true);
-            for(WeblogCategory cat : cats) {
-                if (!cat.getId().equals(getCategoryId())) {
-                    allCategories.add(cat);
-                }
-            }
-            
-            // build category path
-            WeblogCategory parent = getCategory().getParent();
-            if(parent != null) {
-                List categoryPath = new LinkedList();
-                categoryPath.add(0, getCategory());
-                while (parent != null) {
-                    categoryPath.add(0, parent);
-                    parent = parent.getParent();
-                }
-                setCategoryPath(categoryPath);
-            }
-        } catch (WebloggerException ex) {
-            log.error("Error building categories list", ex);
-            // TODO: i18n
-            addError("Error building categories list");
-        }
-        
-        if (allCategories.size() > 0) {
-            setAllCategories(allCategories);
-        }
-        
-        return LIST;
-    }
-    
-    
-    public String move() {
-        
-        try {
-            WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger().getWeblogEntryManager();
-            
-            log.debug("Moving categories to category - 
"+getTargetCategoryId());
-            
-            // Move subCategories to new category.
-            String[] cats = getSelectedCategories();
-            WeblogCategory parent = 
wmgr.getWeblogCategory(getTargetCategoryId());
-            if(cats != null) {
-                for (int i = 0; i < cats.length; i++) {
-                    WeblogCategory cd =
-                            wmgr.getWeblogCategory(cats[i]);
-                    
-                    // Don't move category into itself.
-                    if (!cd.getId().equals(parent.getId()) && 
-                            !parent.descendentOf(cd)) {
-                        wmgr.moveWeblogCategory(cd, parent);
-                    } else {
-                        addMessage("categoriesForm.warn.notMoving", 
cd.getName());
-                    }
-                }
-                
-                // flush changes
-                WebloggerFactory.getWeblogger().flush();
-            }
-            
-        } catch (WebloggerException ex) {
-            log.error("Error moving categories", ex);
-            addError("categoriesForm.error.move");
-        }
-        
-        return execute();
-    }
-    
-
-    public String getCategoryId() {
-        return categoryId;
-    }
-
-    public void setCategoryId(String categoryId) {
-        this.categoryId = categoryId;
-    }
-
-    public WeblogCategory getCategory() {
-        return category;
-    }
-
-    public void setCategory(WeblogCategory category) {
-        this.category = category;
-    }
-
-    public String[] getSelectedCategories() {
-        return selectedCategories;
-    }
-
-    public void setSelectedCategories(String[] selectedCategories) {
-        this.selectedCategories = selectedCategories;
-    }
-
-    public String getTargetCategoryId() {
-        return targetCategoryId;
-    }
-
-    public void setTargetCategoryId(String targetCategoryId) {
-        this.targetCategoryId = targetCategoryId;
-    }
-
-    public Set getAllCategories() {
-        return allCategories;
-    }
-
-    public void setAllCategories(Set allCategories) {
-        this.allCategories = allCategories;
-    }
-
-    public List getCategoryPath() {
-        return categoryPath;
-    }
-
-    public void setCategoryPath(List categoryPath) {
-        this.categoryPath = categoryPath;
-    }
-    
+
+       private static Log log = LogFactory.getLog(Categories.class);
+
+       // the id of the category we are viewing
+       private String categoryId = null;
+
+       // the category we are viewing
+       private WeblogCategory category = null;
+
+       // list of category ids to move
+       private String[] selectedCategories = null;
+
+       // category id of the category to move to
+       private String targetCategoryId = null;
+
+       // all categories from the action weblog
+       private Set allCategories = Collections.EMPTY_SET;
+
+       // path of categories representing selected categories hierarchy
+       private List categoryPath = Collections.EMPTY_LIST;
+
+       public Categories() {
+               this.actionName = "categories";
+               this.desiredMenu = "editor";
+               this.pageTitle = "categoriesForm.rootTitle";
+       }
+
+       // author perms required
+       public List<String> requiredWeblogPermissionActions() {
+               return Collections.singletonList(WeblogPermission.POST);
+       }
+
+       public void myPrepare() {
+               try {
+                       WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger()
+                                       .getWeblogEntryManager();
+                       if (!StringUtils.isEmpty(getCategoryId())
+                                       && !"/".equals(getCategoryId())) {
+                               
setCategory(wmgr.getWeblogCategory(getCategoryId()));
+                       } else {
+                               
setCategory(wmgr.getRootWeblogCategory(getActionWeblog()));
+                       }
+               } catch (WebloggerException ex) {
+                       log.error("Error looking up category", ex);
+               }
+       }
+
+       public String execute() {
+
+               // build list of categories for display
+               TreeSet allCategories = new TreeSet(new 
WeblogCategoryPathComparator());
+
+               try {
+                       // Build list of all categories, except for current 
one, sorted by
+                       // path.
+                       WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger()
+                                       .getWeblogEntryManager();
+                       List<WeblogCategory> cats = wmgr.getWeblogCategories(
+                                       getActionWeblog(), true);
+                       for (WeblogCategory cat : cats) {
+                               if (getCategoryId() == null && cat.getParent() 
== null) {
+                                       // Root folder so do not show the root /
+                               } else if 
(!cat.getId().equals(getCategoryId())) {
+                                       allCategories.add(cat);
+                               }
+                       }
+
+                       // build category path
+                       WeblogCategory parent = getCategory().getParent();
+                       if (parent != null) {
+                               List categoryPath = new LinkedList();
+                               categoryPath.add(0, getCategory());
+                               while (parent != null) {
+                                       categoryPath.add(0, parent);
+                                       parent = parent.getParent();
+                               }
+                               setCategoryPath(categoryPath);
+                       }
+               } catch (WebloggerException ex) {
+                       log.error("Error building categories list", ex);
+                       // TODO: i18n
+                       addError("Error building categories list");
+               }
+
+               if (allCategories.size() > 0) {
+                       setAllCategories(allCategories);
+               }
+
+               return LIST;
+       }
+
+       public String move() {
+
+               try {
+                       WeblogEntryManager wmgr = 
WebloggerFactory.getWeblogger()
+                                       .getWeblogEntryManager();
+
+                       log.debug("Moving categories to category - "
+                                       + getTargetCategoryId());
+
+                       // Move subCategories to new category.
+                       String[] cats = getSelectedCategories();
+                       WeblogCategory parent = wmgr
+                                       
.getWeblogCategory(getTargetCategoryId());
+                       if (cats != null) {
+                               for (int i = 0; i < cats.length; i++) {
+                                       WeblogCategory cd = 
wmgr.getWeblogCategory(cats[i]);
+
+                                       // Don't move category into itself.
+                                       if (!cd.getId().equals(parent.getId())
+                                                       && 
!parent.descendentOf(cd)) {
+                                               wmgr.moveWeblogCategory(cd, 
parent);
+                                       } else {
+                                               
addMessage("categoriesForm.warn.notMoving",
+                                                               cd.getName());
+                                       }
+                               }
+
+                               // flush changes
+                               WebloggerFactory.getWeblogger().flush();
+                       }
+
+               } catch (WebloggerException ex) {
+                       log.error("Error moving categories", ex);
+                       addError("categoriesForm.error.move");
+               }
+
+               return execute();
+       }
+
+       public String getCategoryId() {
+               return categoryId;
+       }
+
+       public void setCategoryId(String categoryId) {
+               this.categoryId = categoryId;
+       }
+
+       public WeblogCategory getCategory() {
+               return category;
+       }
+
+       public void setCategory(WeblogCategory category) {
+               this.category = category;
+       }
+
+       public String[] getSelectedCategories() {
+               return selectedCategories;
+       }
+
+       public void setSelectedCategories(String[] selectedCategories) {
+               this.selectedCategories = selectedCategories;
+       }
+
+       public String getTargetCategoryId() {
+               return targetCategoryId;
+       }
+
+       public void setTargetCategoryId(String targetCategoryId) {
+               this.targetCategoryId = targetCategoryId;
+       }
+
+       public Set getAllCategories() {
+               return allCategories;
+       }
+
+       public void setAllCategories(Set allCategories) {
+               this.allCategories = allCategories;
+       }
+
+       public List getCategoryPath() {
+               return categoryPath;
+       }
+
+       public void setCategoryPath(List categoryPath) {
+               this.categoryPath = categoryPath;
+       }
+
 }

Modified: 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java
 (original)
+++ 
roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderAdd.java
 Sun Mar  4 16:18:43 2012
@@ -120,6 +120,9 @@ public class FolderAdd extends UIAction 
             // TODO: i18n
             addMessage("folder added");
             
+            // Set for next action
+            getBean().setId(newFolder.getId());
+            
             return SUCCESS;
             
         } catch(Exception ex) {

Modified: 
roller/trunk/weblogger-web/src/main/resources/ApplicationResources.properties
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/resources/ApplicationResources.properties?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-web/src/main/resources/ApplicationResources.properties 
(original)
+++ 
roller/trunk/weblogger-web/src/main/resources/ApplicationResources.properties 
Sun Mar  4 16:18:43 2012
@@ -92,7 +92,7 @@ bookmarksForm.folder=Bookmark Folder
 bookmarksForm.priority=Priority
 bookmarksForm.edit=Edit
 bookmarksForm.edit.tip=Click to edit this folder or bookmark
-bookmarksForm.move=Move selected
+bookmarksForm.move=Move
 bookmarksForm.move.confirm=Move selected bookmarks?
 bookmarksForm.name=Name
 bookmarksForm.path=Path
@@ -103,6 +103,7 @@ bookmarksForm.warn.notMoving=Can''t move
 children 
 bookmarksForm.error.move=Error performing move, parent to child moves not 
allowed
 bookmarksForm.importBookmarks=Import bookmarks via OPML
+bookmarksForm.noresults=There are currently no folders or bookmarks
 
 # --------------------------------------------------------- Bookmarks 
import.jsp
 
@@ -155,6 +156,7 @@ Category.error.nameNull=Name is a requir
 Category.error.nameSize=Name cannot be more than 255 characters
 Category.error.descriptionSize=Description cannot be more than 255 characters
 Category.error.imageBad=The image url you entered is not valid
+categoriesForm.noresults=There are currently no categories
 
 
 # ----------------------------------------------------------- 
CategoriesForm.jsp

Modified: 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp 
(original)
+++ 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp 
Sun Mar  4 16:18:43 2012
@@ -19,16 +19,7 @@
 
 <%-- JavaScript for bookmarks table --%> 
 <script type="text/javascript">
-<!-- 
-function setChecked(val) 
-{
-    len = document.bookmarks.elements.length;
-    var i=0;
-    for( i=0 ; i<len ; i++) 
-    {
-        document.bookmarks.elements[i].checked=val;
-    }
-}
+// <!-- 
 function onDelete() 
 {
     if ( confirm("<s:text name='bookmarksForm.delete.confirm' />") ) 
@@ -45,7 +36,7 @@ function onMove() 
         document.bookmarks.submit();
     }
 }
-//-->
+// -->
 </script>
 
 <s:if test="folderPath.isEmpty">
@@ -79,29 +70,21 @@ function onMove() 
     <s:hidden name="weblog" />
     <s:hidden name="folderId" /> 
     
-    <%-- Select-all button --%>
-    <input type="button" value="<s:text name="bookmarksForm.checkAll"/>" 
onclick="setChecked(1)" />
-    
-    <%-- Select-none button --%>
-    <input type="button" value="<s:text name="bookmarksForm.checkNone"/>" 
onclick="setChecked(0)" />
-    
-    <%-- Delete-selected button --%>
-    <input type="button" value="<s:text name="bookmarksForm.delete"/>" 
onclick="onDelete()" /> 
-    
-    <s:if test="!allFolders.isEmpty">
+    <s:if test="!allFolders.isEmpty && ( folder.folders.size > 0 || 
folder.bookmarks.size > 0)">
+        
         <%-- Move-selected button --%>
-        <s:submit type="button" action="bookmarks!move" 
key="bookmarksForm.move" onclick="onMove()" />
+        <s:submit type="button" action="bookmarks!move" 
key="bookmarksForm.move" onclick="onMove();return false;" />
         
         <%-- Move-to combo-box --%>
         <s:select name="targetFolderId" list="allFolders" listKey="id" 
listValue="path" />
+        
+        <br /><br />
+        
     </s:if>
-    
-    <p />
-    
     <table class="rollertable">
-        
+    
         <tr class="rHeaderTr">
-            <th class="rollertable" width="5%">&nbsp;</th>
+            <th class="rollertable" width="5%"><input name="control" 
type="checkbox" onclick="toggleFunctionAll(this.checked);"/></th>
             <th class="rollertable" width="5%">&nbsp;</th>
             <th class="rollertable" width="30%"><s:text 
name="bookmarksForm.name" /></th>
             <th class="rollertable" width="45%"><s:text 
name="bookmarksForm.description" /></th>
@@ -110,6 +93,8 @@ function onMove() 
             <th class="rollertable" width="5%"><s:text 
name="bookmarksForm.visitLink" /></th>
         </tr>
         
+        <s:if test="folder.folders.size > 0 || folder.bookmarks.size > 0">
+        
         <%-- Folders --%>
         <s:iterator id="folder" value="folder.folders" status="rowstatus">
             <s:if test="#rowstatus.odd == true">
@@ -119,7 +104,7 @@ function onMove() 
                 <tr class="rollertable_even">
             </s:else>
                 
-                <td class="rollertable">
+                <td class="rollertable center" style="vertical-align:middle">
                     <input type="checkbox" name="selectedFolders" 
value="<s:property value="#folder.id"/>" />
                 </td>
                 
@@ -161,7 +146,7 @@ function onMove() 
                 <tr class="rollertable_even">
             </s:else>
                 
-                <td class="rollertable">
+                <td class="rollertable center" style="vertical-align:middle">
                     <input type="checkbox" name="selectedBookmarks" 
value="<s:property value="#bookmark.id"/>" />
                 </td>
                 
@@ -200,6 +185,19 @@ function onMove() 
             </tr>
         </s:iterator>
         
+        </s:if>
+        <s:else>
+            <tr>
+                <td style="vertical-align:middle" colspan="7"><s:text 
name="bookmarksForm.noresults" /></td>
+            </tr>
+        </s:else>
     </table>
     
+    <s:if test="folder.folders.size > 0 || folder.bookmarks.size > 0">
+        <div class="control">
+            <%-- Delete-selected button --%>
+            <input type="button" value="<s:text name="bookmarksForm.delete"/>" 
onclick="onDelete()" /> 
+        </div>
+    </s:if>
+
 </s:form>

Modified: 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Categories.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Categories.jsp?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Categories.jsp
 (original)
+++ 
roller/trunk/weblogger-webapp/src/main/webapp/WEB-INF/jsps/editor/Categories.jsp
 Sun Mar  4 16:18:43 2012
@@ -19,17 +19,8 @@
 
 <%-- JavaScript for categories table --%> 
 <script type="text/javascript">
-<!-- 
-function setChecked(val) 
-{
-    len = document.categories.elements.length;
-    var i=0;
-    for( i=0 ; i<len ; i++) 
-    {
-        document.categories.elements[i].checked=val;
-    }
-}
-function onMove() 
+// <!-- 
+function onMove()
 {
     if ( confirm("<s:text name='categoriesForm.move.confirm' />") ) 
     {
@@ -71,33 +62,31 @@ function onMove() 
     <s:hidden name="weblog" />
     <s:hidden name="categoryId" /> 
     
-    <%-- Select-all button --%>
-    <input type="button" value="<s:text name='categoriesForm.checkAll' />" 
onclick="setChecked(1)" /></input>
-    
-    <%-- Select-none button --%>
-    <input type="button" value="<s:text name='categoriesForm.checkNone' />" 
onclick="setChecked(0)" /></input>
+    <s:if test="!allCategories.isEmpty">
     
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+        <%-- Move-selected button --%>
+        <s:submit value="%{getText('categoriesForm.move')}" 
onclick="onMove();return false;" />
     
-    <%-- Move-selected button --%>
-    <s:submit value="%{getText('categoriesForm.move')}" onclick="onMove()" />
+        <%-- Move-to combo-box --%>
+        <s:select name="targetCategoryId" list="allCategories" listKey="id" 
listValue="path" />
     
-    <%-- Move-to combo-box --%>
-    <s:select name="targetCategoryId" list="allCategories" listKey="id" 
listValue="path" />
+        <br /><br />
     
-    <p />
+    </s:if>
     
     <table class="rollertable">
         
         <tr class="rollertable">
-            <th class="rollertable" width="5%">&nbsp;</td>
-            <th class="rollertable" width="5%">&nbsp;</td>
-            <th class="rollertable" width="30%"><s:text 
name="categoriesForm.name" /></td>
-            <th class="rollertable" width="45%"><s:text 
name="categoriesForm.description" /></td>
-            <th class="rollertable" width="5%"><s:text 
name="categoriesForm.edit" /></td>
-            <th class="rollertable" width="5%"><s:text 
name="categoriesForm.remove" /></td>
+            <th class="rollertable" width="5%"><input type="checkbox" 
name="control" onclick="toggleFunctionAll(this.checked);"/></th>
+            <th class="rollertable" width="5%">&nbsp;</th>
+            <th class="rollertable" width="30%"><s:text 
name="categoriesForm.name" /></th>
+            <th class="rollertable" width="45%"><s:text 
name="categoriesForm.description" /></th>
+            <th class="rollertable" width="5%"><s:text 
name="categoriesForm.edit" /></th>
+            <th class="rollertable" width="5%"><s:text 
name="categoriesForm.remove" /></th>
         </tr>
         
+        <s:if test="AllCategories != null && !AllCategories.isEmpty">
+        
         <%-- Categories --%>
         <s:iterator id="category" value="category.weblogCategories" 
status="rowstatus">
             <s:if test="#rowstatus.odd == true">
@@ -107,7 +96,7 @@ function onMove() 
                 <tr class="rollertable_even">
             </s:else>
             
-                <td class="rollertable">
+                <td class="rollertable center" style="vertical-align:middle">
                     <input type="checkbox" name="selectedCategories" 
value="<s:property value="#category.id"/>" />
                 </td>
                 
@@ -144,6 +133,13 @@ function onMove() 
             </tr>
         </s:iterator>
         
+        </s:if>
+        <s:else>
+            <tr>
+                <td style="vertical-align:middle" colspan="6"><s:text 
name="categoriesForm.noresults" /></td>
+            </tr>
+        </s:else>
+        
     </table>
     
 </s:form>

Modified: roller/trunk/weblogger-webapp/src/main/webapp/theme/scripts/roller.js
URL: 
http://svn.apache.org/viewvc/roller/trunk/weblogger-webapp/src/main/webapp/theme/scripts/roller.js?rev=1296827&r1=1296826&r2=1296827&view=diff
==============================================================================
--- roller/trunk/weblogger-webapp/src/main/webapp/theme/scripts/roller.js 
(original)
+++ roller/trunk/weblogger-webapp/src/main/webapp/theme/scripts/roller.js Sun 
Mar  4 16:18:43 2012
@@ -180,11 +180,23 @@ function isblank(s) {
 window.defaultStatus=document.title;
 
 // Toggle check boxes
+function toggleFunctionAll(toggle) {
+       var inputs = document.getElementsByTagName('input');
+       for(var i = 0; i < inputs.length ; i++) {
+               if(inputs[i].name != "control" && inputs[i].type == 'checkbox' 
&& inputs[i].disabled == false ) {
+                       if (inputs[i].checked == true){
+                               inputs[i].checked = !inputs[i].checked;
+                       } else{
+                               inputs[i].checked = toggle;
+                       }
+               }
+       }
+}
 function toggleFunction(toggle,name) {;
        var inputs = document.getElementsByName(name);
        for(var i = 0; i < inputs.length ; i++) {
                if(inputs[i].type == 'checkbox' && inputs[i].disabled == false) 
{
-                       if (inputs[i].checked==true){
+                       if (inputs[i].checked == true){
                                inputs[i].checked = !inputs[i].checked;
                        } else{
                                inputs[i].checked = toggle;


Reply via email to