From 7f31e1a888b41f251e51ac901b9e1096be2a0fa9 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Fri, 5 Oct 2007 09:00:20 +0000 Subject: [PATCH] Fixed issue with actions on manage groups dialog I introduced recently git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6922 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/web-client-config-actions.xml | 2 + .../alfresco/web/action/ActionEvaluator.java | 10 +++ .../evaluator/AddTranslationEvaluator.java | 6 +- .../action/evaluator/ApproveDocEvaluator.java | 3 +- .../ApproveNonDraftDocEvaluator.java | 3 +- .../action/evaluator/BaseActionEvaluator.java | 59 +++++++++++++++++ .../evaluator/CancelCheckoutDocEvaluator.java | 3 +- .../evaluator/CancelWorkflowEvaluator.java | 3 +- .../action/evaluator/CheckinDocEvaluator.java | 3 +- .../evaluator/CheckoutDocEvaluator.java | 3 +- .../action/evaluator/CreateFormEvaluator.java | 3 +- .../evaluator/CreateForumNodeEvaluator.java | 3 +- .../evaluator/CreateWebProjectEvaluator.java | 4 +- .../action/evaluator/CutNodeEvaluator.java | 3 +- .../action/evaluator/DeleteDocEvaluator.java | 3 +- .../evaluator/DiscussNodeEvaluator.java | 3 +- .../evaluator/DiscussionCopyEvaluator.java | 3 +- .../evaluator/DiscussionCutEvaluator.java | 2 - .../evaluator/EditDocCIFSEvaluator.java | 3 +- .../evaluator/EditDocHttpEvaluator.java | 3 +- .../evaluator/EditDocWebDavEvaluator.java | 3 +- .../action/evaluator/EditFormEvaluator.java | 4 +- .../evaluator/ForumsCheckinDocEvaluator.java | 3 +- .../evaluator/GroupActionEvaluator.java | 66 +++++++++++++++++++ .../evaluator/MakeMultilingualEvaluator.java | 3 +- .../MultilingualDetailsEvaluator.java | 3 +- .../action/evaluator/NewEditionEvaluator.java | 3 +- .../RegenerateRenditionsEvaluator.java | 5 +- .../action/evaluator/RejectDocEvaluator.java | 3 +- .../evaluator/RejectNonDraftDocEvaluator.java | 3 +- .../evaluator/ShortcutNodeEvaluator.java | 3 +- .../evaluator/StartWorkflowEvaluator.java | 3 +- .../evaluator/TakeOwnershipDocEvaluator.java | 3 +- .../action/evaluator/UnlockDocEvaluator.java | 3 +- .../action/evaluator/UpdateDocEvaluator.java | 3 +- .../action/evaluator/WCMLockEvaluator.java | 3 +- .../WCMStagingReadonlyEvaluator.java | 3 +- .../evaluator/ActionInstanceEvaluator.java | 28 ++++++-- 38 files changed, 197 insertions(+), 73 deletions(-) create mode 100644 source/java/org/alfresco/web/action/evaluator/BaseActionEvaluator.java create mode 100644 source/java/org/alfresco/web/action/evaluator/GroupActionEvaluator.java diff --git a/config/alfresco/web-client-config-actions.xml b/config/alfresco/web-client-config-actions.xml index 0a9a8fc010..e088456f6c 100644 --- a/config/alfresco/web-client-config-actions.xml +++ b/config/alfresco/web-client-config-actions.xml @@ -684,6 +684,7 @@ delete_group /images/icons/delete_group.gif + org.alfresco.web.action.evaluator.GroupActionEvaluator dialog:deleteGroup #{DialogManager.setupParameters} @@ -696,6 +697,7 @@ add_user /images/icons/add_user.gif + org.alfresco.web.action.evaluator.GroupActionEvaluator dialog:addUsers #{DialogManager.setupParameters} diff --git a/source/java/org/alfresco/web/action/ActionEvaluator.java b/source/java/org/alfresco/web/action/ActionEvaluator.java index 9254a312bc..01f7a375be 100644 --- a/source/java/org/alfresco/web/action/ActionEvaluator.java +++ b/source/java/org/alfresco/web/action/ActionEvaluator.java @@ -47,4 +47,14 @@ public interface ActionEvaluator * @return result of whether the action can proceed. */ public boolean evaluate(Node node); + + /** + * The evaluator should decide if the action precondition is valid based on the appropriate + * logic and the state etc. of the given object and return the result. + * + * @param obj The object the action is for + * + * @return result of whether the action can proceed. + */ + public boolean evaluate(Object obj); } diff --git a/source/java/org/alfresco/web/action/evaluator/AddTranslationEvaluator.java b/source/java/org/alfresco/web/action/evaluator/AddTranslationEvaluator.java index 0a8320337f..aff603c6b2 100644 --- a/source/java/org/alfresco/web/action/evaluator/AddTranslationEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/AddTranslationEvaluator.java @@ -28,7 +28,6 @@ import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.ml.MultilingualContentService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.UserPreferencesBean; import org.alfresco.web.bean.ml.MultilingualUtils; @@ -45,8 +44,11 @@ import org.alfresco.web.bean.repository.Node; * * @author Yannick Pignot */ -public class AddTranslationEvaluator implements ActionEvaluator +public class AddTranslationEvaluator extends BaseActionEvaluator { + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ public boolean evaluate(Node node) { boolean isNodeMultililingal = node.hasAspect(ContentModel.ASPECT_MULTILINGUAL_DOCUMENT); diff --git a/source/java/org/alfresco/web/action/evaluator/ApproveDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/ApproveDocEvaluator.java index a3a4313b0a..0924d66286 100644 --- a/source/java/org/alfresco/web/action/evaluator/ApproveDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/ApproveDocEvaluator.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.action.evaluator; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -32,7 +31,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class ApproveDocEvaluator implements ActionEvaluator +public class ApproveDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/ApproveNonDraftDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/ApproveNonDraftDocEvaluator.java index 7998806943..cd812cb321 100644 --- a/source/java/org/alfresco/web/action/evaluator/ApproveNonDraftDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/ApproveNonDraftDocEvaluator.java @@ -25,7 +25,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -33,7 +32,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class ApproveNonDraftDocEvaluator implements ActionEvaluator +public class ApproveNonDraftDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/BaseActionEvaluator.java b/source/java/org/alfresco/web/action/evaluator/BaseActionEvaluator.java new file mode 100644 index 0000000000..16c937f2d0 --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/BaseActionEvaluator.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.web.action.evaluator; + +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.bean.repository.Node; + +/** + * Base class for all action evaluators. + * + * @author gavinc + */ +public class BaseActionEvaluator implements ActionEvaluator +{ + public boolean evaluate(Node node) + { + // Allow the action by default + + return true; + } + + public boolean evaluate(Object obj) + { + // if a Node object is passed to this method call + // the explicit evaluate(Node) method otherwise + // allow the action by default. + + if (obj instanceof Node) + { + return evaluate((Node)obj); + } + else + { + return true; + } + } +} \ No newline at end of file diff --git a/source/java/org/alfresco/web/action/evaluator/CancelCheckoutDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CancelCheckoutDocEvaluator.java index d44e177619..ad09aaf0f8 100644 --- a/source/java/org/alfresco/web/action/evaluator/CancelCheckoutDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CancelCheckoutDocEvaluator.java @@ -26,7 +26,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -34,7 +33,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class CancelCheckoutDocEvaluator implements ActionEvaluator +public class CancelCheckoutDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CancelWorkflowEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CancelWorkflowEvaluator.java index d6194fe4e0..b4df9de8d3 100644 --- a/source/java/org/alfresco/web/action/evaluator/CancelWorkflowEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CancelWorkflowEvaluator.java @@ -31,7 +31,6 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.util.ISO9075; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -44,7 +43,7 @@ import org.alfresco.web.bean.repository.User; * * @author gavinc */ -public class CancelWorkflowEvaluator implements ActionEvaluator +public class CancelWorkflowEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CheckinDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CheckinDocEvaluator.java index cdb15c8a7f..5abc310bed 100644 --- a/source/java/org/alfresco/web/action/evaluator/CheckinDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CheckinDocEvaluator.java @@ -26,7 +26,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -34,7 +33,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class CheckinDocEvaluator implements ActionEvaluator +public class CheckinDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CheckoutDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CheckoutDocEvaluator.java index ac58592022..f46ab6b2ae 100644 --- a/source/java/org/alfresco/web/action/evaluator/CheckoutDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CheckoutDocEvaluator.java @@ -29,7 +29,6 @@ import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -38,7 +37,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class CheckoutDocEvaluator implements ActionEvaluator +public class CheckoutDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java index 2caa3cac87..4e367dbdd3 100644 --- a/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CreateFormEvaluator.java @@ -29,7 +29,6 @@ import javax.faces.context.FacesContext; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.NavigationBean; @@ -41,7 +40,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class CreateFormEvaluator implements ActionEvaluator +public class CreateFormEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CreateForumNodeEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CreateForumNodeEvaluator.java index 5bae9b5b27..30ddfa8e04 100644 --- a/source/java/org/alfresco/web/action/evaluator/CreateForumNodeEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CreateForumNodeEvaluator.java @@ -25,7 +25,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ForumModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -33,7 +32,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class CreateForumNodeEvaluator implements ActionEvaluator +public class CreateForumNodeEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java index 546c6e0571..5b4c331adb 100644 --- a/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CreateWebProjectEvaluator.java @@ -28,9 +28,7 @@ import javax.faces.context.FacesContext; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.Path; -import org.alfresco.service.cmr.security.AccessStatus; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.NavigationBean; @@ -42,7 +40,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class CreateWebProjectEvaluator implements ActionEvaluator +public class CreateWebProjectEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/CutNodeEvaluator.java b/source/java/org/alfresco/web/action/evaluator/CutNodeEvaluator.java index 9e95c2cd36..a3f8f26792 100644 --- a/source/java/org/alfresco/web/action/evaluator/CutNodeEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/CutNodeEvaluator.java @@ -27,7 +27,6 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.ml.MultilingualUtils; import org.alfresco.web.bean.repository.Node; @@ -45,7 +44,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Yannick Pignot */ -public class CutNodeEvaluator implements ActionEvaluator +public class CutNodeEvaluator extends BaseActionEvaluator { public boolean evaluate(Node node) { diff --git a/source/java/org/alfresco/web/action/evaluator/DeleteDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/DeleteDocEvaluator.java index 4752d41576..e1cd7ec65f 100644 --- a/source/java/org/alfresco/web/action/evaluator/DeleteDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/DeleteDocEvaluator.java @@ -28,7 +28,6 @@ import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.ml.MultilingualContentService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.ml.MultilingualUtils; import org.alfresco.web.bean.repository.Node; @@ -38,7 +37,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class DeleteDocEvaluator implements ActionEvaluator +public class DeleteDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/DiscussNodeEvaluator.java b/source/java/org/alfresco/web/action/evaluator/DiscussNodeEvaluator.java index dc68932c49..a22744f1c1 100644 --- a/source/java/org/alfresco/web/action/evaluator/DiscussNodeEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/DiscussNodeEvaluator.java @@ -32,7 +32,6 @@ import org.alfresco.model.ForumModel; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.RegexQNamePattern; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -41,7 +40,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class DiscussNodeEvaluator implements ActionEvaluator +public class DiscussNodeEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/DiscussionCopyEvaluator.java b/source/java/org/alfresco/web/action/evaluator/DiscussionCopyEvaluator.java index 4505d6578f..f574e0ce96 100644 --- a/source/java/org/alfresco/web/action/evaluator/DiscussionCopyEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/DiscussionCopyEvaluator.java @@ -31,7 +31,6 @@ import org.alfresco.model.ForumModel; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -42,7 +41,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author gavinc */ -public class DiscussionCopyEvaluator implements ActionEvaluator +public class DiscussionCopyEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/DiscussionCutEvaluator.java b/source/java/org/alfresco/web/action/evaluator/DiscussionCutEvaluator.java index 1d6906d77a..b0118ba3e4 100644 --- a/source/java/org/alfresco/web/action/evaluator/DiscussionCutEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/DiscussionCutEvaluator.java @@ -26,12 +26,10 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; -import org.alfresco.model.ContentModel; import org.alfresco.model.ForumModel; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java index 7110286345..99f136d7a7 100644 --- a/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/EditDocCIFSEvaluator.java @@ -30,7 +30,6 @@ import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -40,7 +39,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class EditDocCIFSEvaluator implements ActionEvaluator +public class EditDocCIFSEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java index 37bb4ac686..f845377ac3 100644 --- a/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/EditDocHttpEvaluator.java @@ -30,7 +30,6 @@ import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -40,7 +39,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class EditDocHttpEvaluator implements ActionEvaluator +public class EditDocHttpEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java index 9a9e195ef6..51cc7dba17 100644 --- a/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/EditDocWebDavEvaluator.java @@ -30,7 +30,6 @@ import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -40,7 +39,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class EditDocWebDavEvaluator implements ActionEvaluator +public class EditDocWebDavEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/EditFormEvaluator.java b/source/java/org/alfresco/web/action/evaluator/EditFormEvaluator.java index 8e21f2a445..af4a930b57 100644 --- a/source/java/org/alfresco/web/action/evaluator/EditFormEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/EditFormEvaluator.java @@ -23,8 +23,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.WCMAppModel; -import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -32,7 +30,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Ariel Backenroth */ -public class EditFormEvaluator implements ActionEvaluator +public class EditFormEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/ForumsCheckinDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/ForumsCheckinDocEvaluator.java index a04b78785f..01727f7c8b 100644 --- a/source/java/org/alfresco/web/action/evaluator/ForumsCheckinDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/ForumsCheckinDocEvaluator.java @@ -31,7 +31,6 @@ import org.alfresco.model.ForumModel; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -40,7 +39,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class ForumsCheckinDocEvaluator implements ActionEvaluator +public class ForumsCheckinDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/GroupActionEvaluator.java b/source/java/org/alfresco/web/action/evaluator/GroupActionEvaluator.java new file mode 100644 index 0000000000..ef6197ec96 --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/GroupActionEvaluator.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.web.action.evaluator; + +import java.util.Map; + +import org.alfresco.web.bean.groups.GroupsDialog; + + +/** + * Evaluator that determines whether the add group user action should + * be visible - only visible when the dialog is not showing the root + * group. + * + * @author Gavin Cornwell + */ +public class GroupActionEvaluator extends BaseActionEvaluator +{ + @Override + public boolean evaluate(Object obj) + { + boolean result = true; + + if (obj instanceof GroupsDialog) + { + // if the object is the GroupsDialog check whether the group is null, + // if it is it represents the root group so disallow the action + result = (((GroupsDialog)obj).getGroup() != null); + } + else if (obj instanceof Map) + { + // if the object is a Map retrieve the group and check for null, + // if it is it represents the root group so disallow the action + Object group = ((Map)obj).get(GroupsDialog.PARAM_GROUP); + result = (group != null); + } + else + { + result = super.evaluate(obj); + } + + return result; + } +} diff --git a/source/java/org/alfresco/web/action/evaluator/MakeMultilingualEvaluator.java b/source/java/org/alfresco/web/action/evaluator/MakeMultilingualEvaluator.java index 9ebadfd4ce..ae6f4d9237 100644 --- a/source/java/org/alfresco/web/action/evaluator/MakeMultilingualEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/MakeMultilingualEvaluator.java @@ -27,7 +27,6 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.UserPreferencesBean; import org.alfresco.web.bean.repository.Node; @@ -39,7 +38,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Yannick Pignot */ -public class MakeMultilingualEvaluator implements ActionEvaluator +public class MakeMultilingualEvaluator extends BaseActionEvaluator { public boolean evaluate(Node node) { diff --git a/source/java/org/alfresco/web/action/evaluator/MultilingualDetailsEvaluator.java b/source/java/org/alfresco/web/action/evaluator/MultilingualDetailsEvaluator.java index 35fa25d514..24b609db44 100644 --- a/source/java/org/alfresco/web/action/evaluator/MultilingualDetailsEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/MultilingualDetailsEvaluator.java @@ -25,7 +25,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -35,7 +34,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Yannick Pignot */ -public class MultilingualDetailsEvaluator implements ActionEvaluator +public class MultilingualDetailsEvaluator extends BaseActionEvaluator { public boolean evaluate(Node node) { diff --git a/source/java/org/alfresco/web/action/evaluator/NewEditionEvaluator.java b/source/java/org/alfresco/web/action/evaluator/NewEditionEvaluator.java index c59164ca0f..d3872d8a39 100644 --- a/source/java/org/alfresco/web/action/evaluator/NewEditionEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/NewEditionEvaluator.java @@ -26,7 +26,6 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.ml.MultilingualUtils; import org.alfresco.web.bean.repository.Node; @@ -38,7 +37,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Yanick Pignot */ -public class NewEditionEvaluator implements ActionEvaluator +public class NewEditionEvaluator extends BaseActionEvaluator { public boolean evaluate(Node node) { diff --git a/source/java/org/alfresco/web/action/evaluator/RegenerateRenditionsEvaluator.java b/source/java/org/alfresco/web/action/evaluator/RegenerateRenditionsEvaluator.java index cae888fc88..1a7fc62577 100644 --- a/source/java/org/alfresco/web/action/evaluator/RegenerateRenditionsEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/RegenerateRenditionsEvaluator.java @@ -24,11 +24,10 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; + import org.alfresco.model.WCMAppModel; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.Path; -import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.NavigationBean; @@ -40,7 +39,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Ariel Backenroth */ -public class RegenerateRenditionsEvaluator implements ActionEvaluator +public class RegenerateRenditionsEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/RejectDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/RejectDocEvaluator.java index 55adb6b04b..1f4fd91be0 100644 --- a/source/java/org/alfresco/web/action/evaluator/RejectDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/RejectDocEvaluator.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.action.evaluator; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -32,7 +31,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class RejectDocEvaluator implements ActionEvaluator +public class RejectDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/RejectNonDraftDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/RejectNonDraftDocEvaluator.java index 5385aa38ab..cdcf384ff6 100644 --- a/source/java/org/alfresco/web/action/evaluator/RejectNonDraftDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/RejectNonDraftDocEvaluator.java @@ -25,7 +25,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -33,7 +32,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class RejectNonDraftDocEvaluator implements ActionEvaluator +public class RejectNonDraftDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java b/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java index 2daf211a44..757ef126ca 100644 --- a/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/ShortcutNodeEvaluator.java @@ -26,7 +26,6 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.NavigationBean; import org.alfresco.web.bean.repository.Node; @@ -36,7 +35,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class ShortcutNodeEvaluator implements ActionEvaluator +public class ShortcutNodeEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java b/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java index dfefaa1515..3bc06f9ab1 100644 --- a/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/StartWorkflowEvaluator.java @@ -27,7 +27,6 @@ package org.alfresco.web.action.evaluator; import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.NavigationBean; import org.alfresco.web.bean.repository.Node; @@ -37,7 +36,7 @@ import org.alfresco.web.bean.repository.Node; * * @author gavinc */ -public class StartWorkflowEvaluator implements ActionEvaluator +public class StartWorkflowEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/TakeOwnershipDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/TakeOwnershipDocEvaluator.java index 854ff256a5..5bc6e1e664 100644 --- a/source/java/org/alfresco/web/action/evaluator/TakeOwnershipDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/TakeOwnershipDocEvaluator.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.action.evaluator; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -32,7 +31,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class TakeOwnershipDocEvaluator implements ActionEvaluator +public class TakeOwnershipDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/UnlockDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/UnlockDocEvaluator.java index 01eeb0a5c1..a17d03734d 100644 --- a/source/java/org/alfresco/web/action/evaluator/UnlockDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/UnlockDocEvaluator.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.action.evaluator; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; /** @@ -32,7 +31,7 @@ import org.alfresco.web.bean.repository.Node; * * @author Kevin Roast */ -public class UnlockDocEvaluator implements ActionEvaluator +public class UnlockDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/UpdateDocEvaluator.java b/source/java/org/alfresco/web/action/evaluator/UpdateDocEvaluator.java index 7ec77b0e3d..55eabad4a8 100644 --- a/source/java/org/alfresco/web/action/evaluator/UpdateDocEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/UpdateDocEvaluator.java @@ -28,7 +28,6 @@ import javax.faces.context.FacesContext; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.dictionary.DictionaryService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; @@ -37,7 +36,7 @@ import org.alfresco.web.bean.repository.Repository; * * @author Kevin Roast */ -public class UpdateDocEvaluator implements ActionEvaluator +public class UpdateDocEvaluator extends BaseActionEvaluator { /** * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) diff --git a/source/java/org/alfresco/web/action/evaluator/WCMLockEvaluator.java b/source/java/org/alfresco/web/action/evaluator/WCMLockEvaluator.java index 2f6c67d1ae..22c95ce8fb 100644 --- a/source/java/org/alfresco/web/action/evaluator/WCMLockEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/WCMLockEvaluator.java @@ -28,7 +28,6 @@ import javax.faces.context.FacesContext; import org.alfresco.repo.avm.AVMNodeConverter; import org.alfresco.service.cmr.avm.locking.AVMLockingService; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.FacesHelper; import org.alfresco.web.bean.repository.Node; @@ -42,7 +41,7 @@ import org.alfresco.web.bean.wcm.WebProject; * * @author Kevin Roast */ -public class WCMLockEvaluator implements ActionEvaluator +public class WCMLockEvaluator extends BaseActionEvaluator { /** * @return true if the item is not locked by another user diff --git a/source/java/org/alfresco/web/action/evaluator/WCMStagingReadonlyEvaluator.java b/source/java/org/alfresco/web/action/evaluator/WCMStagingReadonlyEvaluator.java index 689f450147..57f321387a 100644 --- a/source/java/org/alfresco/web/action/evaluator/WCMStagingReadonlyEvaluator.java +++ b/source/java/org/alfresco/web/action/evaluator/WCMStagingReadonlyEvaluator.java @@ -25,7 +25,6 @@ package org.alfresco.web.action.evaluator; import org.alfresco.repo.avm.AVMNodeConverter; -import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.wcm.AVMUtil; @@ -34,7 +33,7 @@ import org.alfresco.web.bean.wcm.AVMUtil; * * @author Kevin Roast */ -public class WCMStagingReadonlyEvaluator implements ActionEvaluator +public class WCMStagingReadonlyEvaluator extends BaseActionEvaluator { /** * @return true if the item is not locked by another user diff --git a/source/java/org/alfresco/web/ui/repo/component/evaluator/ActionInstanceEvaluator.java b/source/java/org/alfresco/web/ui/repo/component/evaluator/ActionInstanceEvaluator.java index 9e38409192..2763dd84f9 100644 --- a/source/java/org/alfresco/web/ui/repo/component/evaluator/ActionInstanceEvaluator.java +++ b/source/java/org/alfresco/web/ui/repo/component/evaluator/ActionInstanceEvaluator.java @@ -24,10 +24,12 @@ */ package org.alfresco.web.ui.repo.component.evaluator; +import java.io.PrintWriter; +import java.io.StringWriter; + import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; -import org.alfresco.config.ConfigException; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.web.action.ActionEvaluator; import org.alfresco.web.bean.repository.Node; @@ -56,12 +58,30 @@ public class ActionInstanceEvaluator extends BaseEvaluator { result = this.getEvaluator().evaluate((Node)obj); } + else + { + result = this.getEvaluator().evaluate(obj); + } } catch (Exception err) { - // return default value on error - s_logger.warn("Error during ActionInstanceEvaluator evaluation of " + this.getEvaluator() + - ": " + err.getMessage()); + // return default value on error and report meaningful error + StringBuilder builder = new StringBuilder("Error during ActionInstanceEvaluator evaluation of "); + builder.append(this.getEvaluator()).append(": "); + String msg = err.getMessage(); + if (msg != null) + { + builder.append(msg); + } + else + { + StringWriter strWriter = new StringWriter(); + PrintWriter writer = new PrintWriter(strWriter); + err.printStackTrace(writer); + builder.append(strWriter.toString()); + } + + s_logger.warn(builder.toString()); } return result;