Author: kevinshen
Date: 2009-05-07 05:18:31 +0200 (Thu, 07 May 2009)
New Revision: 35012

Added:
   
CMSContainer/trunk/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/forms/WorkflowItemDelete.java
Modified:
   
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow.properties
   
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_nl.properties
   
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_zh.properties
   
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/WEB-INF/struts-workflow.xml
   
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow.jsp
   
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow_list_table_fragment.jsp
Log:
CMSC-246 Delete items from workflow process

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow.properties
 2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow.properties
 2009-05-07 03:18:31 UTC (rev 35012)
@@ -79,3 +79,6 @@
 searchpages.showresults=Show : {0} - {1} of {2} results.
 searchpages.page=Page
 searchpages.nonefound=No results found
+
+workflow.item.delete = Delete from workflow
+workflow.item.delete.error = This element can not be removed from the 
workflow, because it has never been published in the past. If you want to 
remove it from the workflow, remove it in the content explorer.
\ No newline at end of file

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_nl.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_nl.properties
      2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_nl.properties
      2009-05-07 03:18:31 UTC (rev 35012)
@@ -81,3 +81,6 @@
 searchpages.showresults=Toont : {0} - {1} van de {2} resultaten.
 searchpages.page=Pagina
 searchpages.nonefound=Geen resultaten gevonden
+
+workflow.item.delete = Delete from workflow
+workflow.item.delete.error = Dit element kan niet verwijderd worden uit de 
workflow, omdat het nooit is gepubliceerd. Als het alsnog verwijderd moet 
worden, verwijder het in de content verkenner.

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_zh.properties
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_zh.properties
      2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/resources/cmsc-workflow_zh.properties
      2009-05-07 03:18:31 UTC (rev 35012)
@@ -80,3 +80,6 @@
 searchpages.showresults=显示 :{2}中 {0} - {1} 条记录 .
 searchpages.page=页面
 searchpages.nonefound=没有找到符合条件记录.
+
+workflow.item.delete = 从工作流中删除
+workflow.item.delete.error = 元素未曾发布,不能删除,如若删除,请从内容管理模块删除.

Added: 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/forms/WorkflowItemDelete.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/forms/WorkflowItemDelete.java
                          (rev 0)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/java/com/finalist/cmsc/workflow/forms/WorkflowItemDelete.java
  2009-05-07 03:18:31 UTC (rev 35012)
@@ -0,0 +1,90 @@
+package com.finalist.cmsc.workflow.forms;
+
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Node;
+import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.util.SearchUtil;
+
+import com.finalist.cmsc.repository.RepositoryUtil;
+import com.finalist.cmsc.security.SecurityUtil;
+import com.finalist.cmsc.security.UserRole;
+import com.finalist.cmsc.services.publish.Publish;
+import com.finalist.cmsc.services.versioning.Versioning;
+import com.finalist.cmsc.services.versioning.VersioningService;
+import com.finalist.cmsc.struts.MMBaseFormlessAction;
+
+public class WorkflowItemDelete extends MMBaseFormlessAction{
+
+   private static final String VERSION = "version";
+   private static final String SOURCE = "SOURCE";
+   private static final String WORKFLOWREL = "workflowrel";
+   private static final String WORKFLOWITEM = "workflowitem";
+   private static final String ARCHIVENUMBER = "archivenumber";
+   private static final String ACTION = "action";
+   private static final String RETURNURL = "returnurl";
+   private static final String NUMBER = "number";
+   private static Log log = LogFactory.getLog(WorkflowItemDelete.class);
+   
+   
+   @Override
+   public ActionForward execute(ActionMapping mapping,
+         HttpServletRequest request, Cloud cloud) throws Exception {
+      String number = getParameter(request, NUMBER, "");
+      String returnPath = getParameter(request, RETURNURL, "");
+      String action = getParameter(request, ACTION, null);
+      String archivenumber = getParameter(request, ARCHIVENUMBER, "");
+      
+      Node elementNode = cloud.getNode(number);
+      if(action != null && "delete".equals(action)) {
+         if (cloud.hasNode(archivenumber)) {
+            Node archiveNode = cloud.getNode(archivenumber);
+            UserRole role = RepositoryUtil.getRole(cloud, 
RepositoryUtil.getCreationChannel(elementNode), false);
+            boolean isWriter = SecurityUtil.isWriter(role);
+            if (isWriter) {
+               Versioning.restoreVersion(archiveNode);
+            }
+         }
+         Node workflowItem = 
elementNode.getRelatedNodes(cloud.getNodeManager(WORKFLOWITEM), WORKFLOWREL, 
SOURCE).getNode(0);
+         workflowItem.deleteRelations();
+         workflowItem.delete();
+         return new ActionForward(returnPath,true);
+      }
+      else {
+         if(!Publish.isPublished(elementNode)) {
+            returnPath += "&errMessage=workflow.item.delete.error";
+            return new ActionForward(returnPath,true);
+         }
+         Node workflowItem = 
elementNode.getRelatedNodes(cloud.getNodeManager(WORKFLOWITEM), WORKFLOWREL, 
SOURCE).getNode(0);
+         if(Versioning.isOnLive(elementNode)) {
+            workflowItem.deleteRelations();
+            workflowItem.delete();
+         }
+         else {
+            NodeManager manager = 
cloud.getNodeManager(VersioningService.ARCHIVE);
+            NodeQuery query = manager.createQuery();
+            SearchUtil.addEqualConstraint(query, manager, 
VersioningService.ORIGINAL_NODE, Integer.parseInt(number));
+            SearchUtil.addSortOrder(query, manager, VersioningService.DATE, 
"UP");
+            NodeList archiveNodeList = manager.getList(query);
+            request.setAttribute("archiveNodesSize", archiveNodeList.size());
+            request.setAttribute("archiveNodes", archiveNodeList);
+   
+            UserRole role = RepositoryUtil.getRole(cloud, 
RepositoryUtil.getCreationChannel(elementNode), false);
+            request.setAttribute("isAllowed", SecurityUtil.isWriter(role));
+            request.setAttribute(ACTION,"workflow");
+            request.setAttribute(NUMBER,number);
+            request.setAttribute("returnUrl",returnPath);
+            return mapping.findForward(VERSION);
+         }
+      }
+      return new ActionForward(returnPath,true);
+   }   
+}

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/WEB-INF/struts-workflow.xml
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/WEB-INF/struts-workflow.xml
     2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/WEB-INF/struts-workflow.xml
     2009-05-07 03:18:31 UTC (rev 35012)
@@ -46,6 +46,11 @@
          type="com.finalist.cmsc.workflow.forms.WorkflowTreeStatusAction"
          unknown="false" validate="false">
       </action>
+      <action path="/editors/workflow/WorkflowItemDelete"
+         type="com.finalist.cmsc.workflow.forms.WorkflowItemDelete"
+         unknown="false" validate="false">
+             <forward name="version" path="/editors/versioning/versioning.jsp" 
redirect="false" />
+      </action>
        </action-mappings>
 
        <message-resources parameter="cmsc-workflow" key="WORKFLOW" />

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow.jsp
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow.jsp
   2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow.jsp
   2009-05-07 03:18:31 UTC (rev 35012)
@@ -335,7 +335,9 @@
                        </div>
                        </div>
                </c:if>
-
+      <c:if test="${not empty param.errMessage}">
+         <fmt:message key="${param.errMessage}" />
+               </c:if>
                <div class="ruler_green">
                        <div> 
                       <c:if test="${not empty workflowType and empty 
workflowNodetype}">

Modified: 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow_list_table_fragment.jsp
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow_list_table_fragment.jsp
       2009-05-07 03:12:06 UTC (rev 35011)
+++ 
CMSContainer/trunk/CMSContainer_Modules/workflow/src/webapp/editors/workflow/workflow_list_table_fragment.jsp
       2009-05-07 03:18:31 UTC (rev 35012)
@@ -122,6 +122,15 @@
                     title="<fmt:message key="workflow.icon.versioning.title" 
/>"
                     alt="<fmt:message 
key="workflow.icon.versioning.title"/>"/></a>
          </mm:haspage>
+         <c:if test="${status != 'published'}">
+           <mm:url page="WorkflowItemDelete.do" id="deleteAction" 
write="false">
+             <mm:param name="number" value="${number}"/>
+             <mm:param name="returnurl" 
value="/editors/workflow/${returnAction}?status=${param.status}&workflowNodetype=${param.workflowNodetype}"/>
+           </mm:url>
+           <a href="${deleteAction}" ">
+             <img src="../gfx/icons/delete.png" title="<fmt:message 
key="workflow.item.delete" />"
+              alt="<fmt:message key="workflow.item.delete"/>"/></a>
+        </c:if>
       </c:if>
    </td>
    <td style="white-space: nowrap;">

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to