From 70d4475e62ea6c4fff3d19e1ee43183ac018dcdb Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Thu, 20 Oct 2011 11:01:47 +0000 Subject: [PATCH] Fix for ALF-435 - Unfriendly error occurs when trying to delete renamed category from category page git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31375 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/bean/categories/CategoriesDialog.java | 12 +++++++++ .../bean/categories/EditCategoryDialog.java | 25 +++++++++++-------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/source/java/org/alfresco/web/bean/categories/CategoriesDialog.java b/source/java/org/alfresco/web/bean/categories/CategoriesDialog.java index cb8e831005..f3b12b4d44 100644 --- a/source/java/org/alfresco/web/bean/categories/CategoriesDialog.java +++ b/source/java/org/alfresco/web/bean/categories/CategoriesDialog.java @@ -459,6 +459,12 @@ public class CategoriesDialog extends BaseDialogBean implements IContextListener this.setCurrentCategory(ref); } + /** + * If category.equals(handler.label) then the breadcrumb reverts one step back + * (needed for deleting) + * Else current breadcrumb is updated accordingly to the current category + * (needed for editing) + */ protected void removeFromBreadcrumb(String category) { // remove this node from the breadcrumb if required @@ -477,6 +483,12 @@ public class CategoriesDialog extends BaseDialogBean implements IContextListener this.setCurrentCategory(handler.nodeRef); } } + else + { + handler=new CategoryBreadcrumbHandler (getCategory().getNodeRef(), Repository.getNameForNode(getNodeService(), getCategory().getNodeRef())); + location.set(location.size() - 1, handler); + this.setCurrentCategory(handler.nodeRef); + } } @Override diff --git a/source/java/org/alfresco/web/bean/categories/EditCategoryDialog.java b/source/java/org/alfresco/web/bean/categories/EditCategoryDialog.java index 3002ba1c2c..3d99468614 100644 --- a/source/java/org/alfresco/web/bean/categories/EditCategoryDialog.java +++ b/source/java/org/alfresco/web/bean/categories/EditCategoryDialog.java @@ -98,6 +98,17 @@ public class EditCategoryDialog extends BaseDialogBean setActionCategory(category); } + @Override + protected String doPostCommitProcessing(FacesContext context, String outcome) + { + // add the category to the request object so it gets picked up by + // category dialog, this will allow it to be edited in the breadcrumb + context.getExternalContext().getRequestMap().put( + CategoriesDialog.KEY_CATEGORY, this.category.getName()); + + return outcome; + } + public String getName() { return name; @@ -277,17 +288,11 @@ public class EditCategoryDialog extends BaseDialogBean } // edit the node in the breadcrumb if required + CategoriesDialog categoriesDialog = new CategoriesDialog(); List location = getLocation(); - IBreadcrumbHandler handler = location.get(location.size() - 1); - - // see if the current breadcrumb location is our node - if (nodeRef.equals(((IRepoBreadcrumbHandler) handler).getNodeRef())) - { - // and update with the modified node details - CategoriesDialog categoriesDialog = new CategoriesDialog(); - IBreadcrumbHandler newHandler = categoriesDialog.new CategoryBreadcrumbHandler(nodeRef, Repository.getNameForNode(getNodeService(), nodeRef)); - location.set(location.size() - 1, newHandler); - } + IBreadcrumbHandler handler = categoriesDialog.new CategoryBreadcrumbHandler(nodeRef, Repository.getNameForNode(getNodeService(), nodeRef)); + location.set(location.size() - 1, handler); + setCategory(new Node(nodeRef)); } catch (Throwable err) {