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