diff --git a/config/alfresco/web-client-config-actions.xml b/config/alfresco/web-client-config-actions.xml index f4c601cee8..c032748172 100644 --- a/config/alfresco/web-client-config-actions.xml +++ b/config/alfresco/web-client-config-actions.xml @@ -380,11 +380,12 @@ wizard:createForm - - org.alfresco.web.action.evaluator.EditFormEvaluator + + Write,CreateChildren + org.alfresco.web.action.evaluator.EditFormEvaluator edit_form /images/icons/edit_form.gif wizard:editForm diff --git a/config/alfresco/web-client-config-wcm-actions.xml b/config/alfresco/web-client-config-wcm-actions.xml index 2da8058c52..d3cad81c51 100644 --- a/config/alfresco/web-client-config-wcm-actions.xml +++ b/config/alfresco/web-client-config-wcm-actions.xml @@ -8,6 +8,7 @@ Write + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator edit /images/icons/edit_icon.gif #{AVMEditBean.setupEditAction} @@ -21,6 +22,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -35,6 +37,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -49,6 +52,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -63,6 +67,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -77,6 +82,7 @@ Read + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator submit /images/icons/submit.gif #{AVMBrowseBean.setupContentAction} @@ -91,6 +97,7 @@ Read + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator revert /images/icons/revert.gif #{AVMBrowseBean.revertNode} @@ -161,6 +168,7 @@ Write + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator update /images/icons/update.gif #{AVMBrowseBean.setupContentAction} diff --git a/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java b/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java new file mode 100644 index 0000000000..007bc3da1c --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.web.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.repo.avm.AVMNodeConverter; +import org.alfresco.repo.avm.wf.AVMSubmittedAspect; +import org.alfresco.service.cmr.avm.AVMService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * UI Action Evaluator - return true if the node is not part of an in-progress WCM workflow. + * + * @author Kevin Roast + */ +public class WCMWorkflowEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + AVMService avm = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getAVMService(); + String path = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef()).getSecond(); + return !avm.hasAspect(-1, path, AVMSubmittedAspect.ASPECT); + } +} diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java index add4244a38..947c5d3332 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java @@ -863,7 +863,14 @@ public class AVMBrowseBean implements IContextListener String[] parts = path.split("[-:]"); String storename = parts[0]; String username = parts[1]; - setupSandboxActionImpl(AVMConstants.buildAVMUserMainStoreName(storename, username), username, false); + if (username.equals(AVMConstants.STORE_STAGING.substring(1))) + { + setupSandboxActionImpl(null, null, false); + } + else + { + setupSandboxActionImpl(AVMConstants.buildAVMUserMainStoreName(storename, username), username, false); + } // setup the action node AVMNodeDescriptor node = avmService.lookup(-1, path, true); diff --git a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java index bd3af95144..ec9532d430 100644 --- a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java @@ -471,7 +471,7 @@ public class SubmitDialog extends BaseDialogBean this.warningItems = new ArrayList(selected.size() >> 1); for (AVMNodeDescriptor node : selected) { - if (hasAssociatedWorkflow(AVMNodeConverter.ToNodeRef(-1, node.getPath())) == false) + if (this.avmService.hasAspect(-1, node.getPath(), AVMSubmittedAspect.ASPECT) == false) { NodeRef ref = AVMNodeConverter.ToNodeRef(-1, node.getPath()); if (submittedPaths.contains(node.getPath()) == false) @@ -555,12 +555,6 @@ public class SubmitDialog extends BaseDialogBean } } - private boolean hasAssociatedWorkflow(NodeRef ref) - { - // TODO: does not appear to work for AVM - need a specific impl instead - return (this.workflowService.getWorkflowsForContent(ref, true).size() != 0); - } - /** * Construct a workflow package as a layered directory over the staging sandbox. The items for * submission are pushed into the layer and the package constructed around it. diff --git a/source/web/images/icons/create_webapp.gif b/source/web/images/icons/create_webapp.gif index acb4beac34..005c9c5d0c 100644 Binary files a/source/web/images/icons/create_webapp.gif and b/source/web/images/icons/create_webapp.gif differ diff --git a/source/web/images/icons/create_webapp_large.gif b/source/web/images/icons/create_webapp_large.gif index 60dfc1d99a..fb9ec9bff4 100644 Binary files a/source/web/images/icons/create_webapp_large.gif and b/source/web/images/icons/create_webapp_large.gif differ