[portal-commits] JBoss Portal SVN: r6068 - in trunk: core-cms/src/resources/portal-cms-war/WEB-INF/classes and 2 other directories.

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Mon Jan 22 15:08:21 EST 2007


Author: roy.russo at jboss.com
Date: 2007-01-22 15:08:21 -0500 (Mon, 22 Jan 2007)
New Revision: 6068

Added:
   trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp
Modified:
   trunk/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java
   trunk/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties
   trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/main.jsp
   trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublish.java
   trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublishImpl.java
Log:
JBPORTAL-1153 - ui for workflows added. modified jbpm accessor methods to retrieve list of all pending items.

Modified: trunk/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java
===================================================================
--- trunk/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java	2007-01-22 19:39:41 UTC (rev 6067)
+++ trunk/core-cms/src/main/org/jboss/portal/core/cms/ui/admin/CMSAdminPortlet.java	2007-01-22 20:08:21 UTC (rev 6068)
@@ -511,6 +511,29 @@
          javax.portlet.PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH + "/securenode.jsp");
          prd.include(rReq, rRes);
       }
+      else if (CMSAdminConstants.OP_VIEWPENDING.equals(op))
+      {
+         String sPath = rReq.getParameter("path");
+
+         if (this.getApprovePublish() != null)
+         {
+            try
+            {
+               Collection pendingQueue = this.getApprovePublish().getAllPendingInQueue();
+               rReq.setAttribute("pendingQueue", pendingQueue);
+            }
+            catch (WorkflowException we)
+            {
+               rReq.setAttribute("pendingQueue", null);
+            }
+         }
+
+         rRes.setContentType("text/html");
+         rReq.setAttribute("currpath", sPath);
+
+         javax.portlet.PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(CMSAdminConstants.CMS_JSP_PATH + "/pending_items.jsp");
+         prd.include(rReq, rRes);
+      }
    }
 
    public void processAction(final JBossActionRequest aReq, final JBossActionResponse aRes) throws PortletException

Modified: trunk/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties
===================================================================
--- trunk/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties	2007-01-22 19:39:41 UTC (rev 6067)
+++ trunk/core-cms/src/resources/portal-cms-war/WEB-INF/classes/Resource.properties	2007-01-22 20:08:21 UTC (rev 6068)
@@ -87,4 +87,5 @@
 CMS_APPROVE=Approve
 CMS_DENY=Deny
 CMS_APPROVAL=Pending Items
+CMS_PATH=Location
  
\ No newline at end of file

Modified: trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/main.jsp
===================================================================
--- trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/main.jsp	2007-01-22 19:39:41 UTC (rev 6067)
+++ trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/main.jsp	2007-01-22 20:08:21 UTC (rev 6068)
@@ -94,6 +94,10 @@
    <portlet:param name="path" value="<%= sCurrPath %>"/>
    <portlet:param name="returnOp" value="<%= CMSAdminConstants.OP_MAIN %>"/>
    </portlet:renderURL>">${n:i18n("CMS_SECURE")}</a></li>
+            <li><a href="<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_VIEWPENDING %>"/>
+   <portlet:param name="path" value="<%= sCurrPath %>"/>
+   </portlet:renderURL>">${n:i18n("CMS_APPROVAL")}</a></li>
             <%
                if (!"/".equals(sCurrPath))
                {
@@ -150,7 +154,7 @@
           <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
           <portlet:param name="path" value="<%= folder.getBasePath() %>"/>
         </portlet:renderURL>"><%=
-      folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %>
+   folder.getBasePath().substring(folder.getBasePath().lastIndexOf("/") + 1, folder.getBasePath().length()) %>
    </a>
    </td>
    <td>
@@ -211,7 +215,7 @@
           <portlet:param name="path"
             value="<%= file.getBasePath() %>"/>
         </portlet:renderURL>"><%=
-      file.getBasePath().substring(file.getBasePath().lastIndexOf("/") + 1, file.getBasePath().length()) %>
+   file.getBasePath().substring(file.getBasePath().lastIndexOf("/") + 1, file.getBasePath().length()) %>
    </a>
    </td>
    <td>

Added: trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp
===================================================================
--- trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp	                        (rev 0)
+++ trunk/core-cms/src/resources/portal-cms-war/WEB-INF/jsp/cms/admin/pending_items.jsp	2007-01-22 20:08:21 UTC (rev 6068)
@@ -0,0 +1,129 @@
+<%@ page language="java" extends="org.jboss.portal.core.servlet.jsp.PortalJsp" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="/WEB-INF/portal-lib.tld" prefix="n" %>
+<%@ page isELIgnored="false" %>
+
+<%@ page import="org.jboss.portal.core.cms.ui.admin.CMSAdminConstants,
+                 java.util.Collection" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.util.StringTokenizer" %>
+
+<portlet:defineObjects/>
+
+<%
+   String sCurrPath = (String)request.getAttribute("currpath");
+   Collection pendingQueue = (Collection)request.getAttribute("pendingQueue");
+
+   String rowClass = "portlet-section-body";
+%>
+
+<br>
+
+${n:i18n("CMS_MAIN_USE")}
+
+<hr/>
+
+<!-- Currently browsing -->
+Browsing: <a href="<portlet:renderURL>
+<portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+<portlet:param name="path" value="/"/>
+        </portlet:renderURL>">Home</a>
+<%
+   StringTokenizer parser = new StringTokenizer(sCurrPath, "/");
+   String sPathBuilder = "";
+   while (parser.hasMoreTokens())
+   {
+      String sPathChunk = parser.nextToken();
+      sPathBuilder += "/" + sPathChunk;
+      if (parser.hasMoreTokens())
+      {
+%>
+>&nbsp;<a href="
+<portlet:renderURL>
+   <portlet:param name="op" value="<%= CMSAdminConstants.OP_MAIN %>"/>
+   <portlet:param name="path" value="<%= sPathBuilder %>"/>
+</portlet:renderURL>
+"><%= sPathChunk %>
+</a>
+<%
+}
+else
+{
+%>
+>&nbsp;<%= sPathChunk %>
+<%
+      }
+   }
+%>
+
+<br/><br/>
+
+<div align="center"><font class="portlet-font-dim"><b>Pending Approval Queue</b></font></div>
+<br/>
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+   <tr>
+      <td class="portlet-table-text"><b>${n:i18n("CMS_PATH")}</b></td>
+      <td class="portlet-table-text"><b>${n:i18n("CMS_TYPE")}</b></td>
+      <td class="portlet-table-text"><b>${n:i18n("CMS_CREATED")}</b></td>
+      <td class="portlet-table-text"><b>${n:i18n("CMS_CREATED_BY")}</b></td>
+      <td class="portlet-table-text"><b>${n:i18n("CMS_ACTION")}</b></td>
+   </tr>
+   <%int i = 0;%>
+   <%
+      for (Iterator itr = pendingQueue.iterator(); itr.hasNext();)
+      {
+   %>
+   <%
+      // TODO: need accessor for approvalpid in Content, for param in links below.
+      // TODO: need security access to get current manager as param for links below.
+      org.jboss.portal.workflow.cms.Content cour = (org.jboss.portal.workflow.cms.Content)itr.next();
+
+      String linkPath = cour.getPath().substring(0, cour.getPath().lastIndexOf("/"));
+
+      if (i % 2 == 0)
+      {
+         rowClass = "portlet-section-body";
+      }
+      else
+      {
+         rowClass = "portlet-section-alternate";
+      }
+      i++;
+   %>
+   <tr class="<%= rowClass %>">
+      <!-- Path -->
+      <td><a href="<portlet:renderURL>
+          <portlet:param name="op" value="<%= CMSAdminConstants.OP_VIEWFILE %>"/>
+          <portlet:param name="path"
+            value="<%= linkPath %>"/>
+        </portlet:renderURL>"><%= linkPath %>
+      </a>
+      </td>
+      <!-- Mime Type -->
+      <td><%= cour.getMimeType() %>
+      </td>
+      <!-- Creation Date -->
+      <td>
+         <%= cour.getCreationDateStr() %>
+      </td>
+      <!-- User who requested approval -->
+      <td><%= cour.getUserName() %>
+      </td>
+      <td>
+         <a href="<portlet:actionURL>
+         <portlet:param name="op" value="<%= CMSAdminConstants.OP_APPROVE %>"/>
+         <portlet:param name="pid" value="TODO"/>
+         <portlet:param name="manager" value="TODO"/>
+         <portlet:param name="path" value="<%= cour.getPath() %>"/>
+         </portlet:actionURL>">${n:i18n("CMS_APPROVE")}</a>
+         &nbsp;
+         <a href="<portlet:actionURL>
+         <portlet:param name="op" value="<%= CMSAdminConstants.OP_DENY %>"/>
+         <portlet:param name="pid" value="TODO"/>
+         <portlet:param name="manager" value="TODO"/>
+         <portlet:param name="path" value="<%= cour.getPath() %>"/>
+         </portlet:actionURL>">${n:i18n("CMS_DENY")}</a>
+      </td>
+   </tr>
+   <%}%>
+</table>
\ No newline at end of file

Modified: trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublish.java
===================================================================
--- trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublish.java	2007-01-22 19:39:41 UTC (rev 6067)
+++ trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublish.java	2007-01-22 20:08:21 UTC (rev 6068)
@@ -22,10 +22,10 @@
  ******************************************************************************/
 package org.jboss.portal.workflow.cms;
 
+import org.jboss.portal.workflow.WorkflowException;
+
 import java.util.Collection;
 
-import org.jboss.portal.workflow.WorkflowException;
-
 /**
  * Created on : Dec 19, 2006
  *
@@ -60,4 +60,12 @@
     * @throws WorkflowException
     */
    public Collection getPendingQueue(String filePath) throws WorkflowException;
+
+   /**
+    * Retrieves a queue of unapproved content for everything in the CMS.
+    *
+    * @return
+    * @throws WorkflowException
+    */
+   public Collection getAllPendingInQueue() throws WorkflowException;
 }

Modified: trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublishImpl.java
===================================================================
--- trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublishImpl.java	2007-01-22 19:39:41 UTC (rev 6067)
+++ trunk/workflow/src/main/org/jboss/portal/workflow/cms/ApprovePublishImpl.java	2007-01-22 20:08:21 UTC (rev 6068)
@@ -22,35 +22,30 @@
  ******************************************************************************/
 package org.jboss.portal.workflow.cms;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-
 import org.apache.log4j.Logger;
-
-import org.jboss.portal.workflow.service.WorkflowService;
-import org.jboss.portal.workflow.WorkflowException;
-
-import org.jboss.portal.jems.as.system.AbstractJBossService;
 import org.jboss.portal.common.util.JNDI;
 import org.jboss.portal.common.util.Tools;
-
+import org.jboss.portal.jems.as.system.AbstractJBossService;
+import org.jboss.portal.workflow.WorkflowException;
+import org.jboss.portal.workflow.service.WorkflowService;
 import org.jbpm.JbpmContext;
+import org.jbpm.db.GraphSession;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.taskmgmt.exe.TaskInstance;
-import org.jbpm.db.GraphSession;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
 /**
  * Created on : Dec 19, 2006
  *
@@ -168,132 +163,100 @@
       }
    }
 
-   /**
-    * @return
-    */
+   /** @return  */
    public WorkflowService getWorkflowService()
    {
       return this.workflowService;
    }
 
-   /**
-    * @param workflowService
-    */
+   /** @param workflowService  */
    public void setWorkflowService(WorkflowService workflowService)
    {
       this.workflowService = workflowService;
    }
 
-   /**
-    * @return
-    */
+   /** @return  */
    public String getProcess()
    {
       return this.process;
    }
 
-   /**
-    * @param process
-    */
+   /** @param process  */
    public void setProcess(String process)
    {
       this.process = process;
    }
 
 
-   /**
-    * @return the managerRoles
-    */
+   /** @return the managerRoles */
    public String getManagerEmails()
    {
       return managerEmails;
    }
 
-   /**
-    * @param managerEmails the manager emails to set
-    */
+   /** @param managerEmails the manager emails to set */
    public void setManagerEmails(String managerEmails)
    {
       this.managerEmails = managerEmails;
    }
 
 
-   /**
-    * @return the overwrite
-    */
+   /** @return the overwrite */
    public boolean isOverwrite()
    {
       return overwrite;
    }
 
-   /**
-    * @param overwrite the overwrite to set
-    */
+   /** @param overwrite the overwrite to set */
    public void setOverwrite(boolean overwrite)
    {
       this.overwrite = overwrite;
    }
 
-   /**
-    * @return
-    */
+   /** @return  */
    public String getJNDIName()
    {
       return this.jndiName;
    }
 
-   /**
-    * @param jndiName
-    */
+   /** @param jndiName  */
    public void setJNDIName(String jndiName)
    {
       this.jndiName = jndiName;
    }
 
 
-   /**
-    * @return the body
-    */
+   /** @return the body */
    public String getBody()
    {
       return body;
    }
 
-   /**
-    * @param body the body to set
-    */
+   /** @param body the body to set */
    public void setBody(String body)
    {
       this.body = body;
    }
 
-   /**
-    * @return the from
-    */
+   /** @return the from */
    public String getFrom()
    {
       return from;
    }
 
-   /**
-    * @param from the from to set
-    */
+   /** @param from the from to set */
    public void setFrom(String from)
    {
       this.from = from;
    }
 
-   /**
-    * @return the subject
-    */
+   /** @return the subject */
    public String getSubject()
    {
       return subject;
    }
 
-   /**
-    * @param subject the subject to set
-    */
+   /** @param subject the subject to set */
    public void setSubject(String subject)
    {
       this.subject = subject;
@@ -481,4 +444,49 @@
       }
       return pendingQueue;
    }
+
+   /**
+    * Retrieves a queue of unapproved content for everything in the CMS.
+    *
+    * @return
+    * @throws WorkflowException
+    */
+   public Collection getAllPendingInQueue() throws WorkflowException
+   {
+      Collection pendingQueue = new ArrayList();
+      JbpmContext jbpmContext = null;
+      try
+      {
+         jbpmContext = this.workflowService.getJbpmConfiguration().createJbpmContext();
+
+         GraphSession graphSession = jbpmContext.getGraphSession();
+         ProcessDefinition processDef = graphSession.findLatestProcessDefinition(this.processName);
+         List processInstances = graphSession.findProcessInstances(processDef.getId());
+
+         if (processInstances != null)
+         {
+            for (int i = 0; i < processInstances.size(); i++)
+            {
+               ProcessInstance cour = (ProcessInstance)processInstances.get(i);
+               //iterate through a list of currently pending approval tasks
+               if (!cour.hasEnded())
+               {
+                  Content content = (Content)cour.getContextInstance().getVariable("content");
+
+                  //apply proper criteria to extract pending content only for the specified file
+                  if (content != null)
+                  {
+                     pendingQueue.add(content);
+                  }
+               }
+            }
+         }
+      }
+      finally
+      {
+         Tools.safeClose(jbpmContext);
+      }
+      return pendingQueue;
+   }
+
 }




More information about the portal-commits mailing list