From 289c455b98e289d1be495197f71721d2abf1893f Mon Sep 17 00:00:00 2001
From: Wenjie Zheng <wenjie.zheng@tiolive.com>
Date: Thu, 11 Jun 2015 10:48:19 +0000
Subject: [PATCH] WorkflowTool.py: modify action url to gain compatiblity of
 erp5 workflow after conversion.

---
 product/ERP5/Tool/WorkflowTool.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/product/ERP5/Tool/WorkflowTool.py b/product/ERP5/Tool/WorkflowTool.py
index f8ff8a789b..f730486d99 100644
--- a/product/ERP5/Tool/WorkflowTool.py
+++ b/product/ERP5/Tool/WorkflowTool.py
@@ -160,6 +160,7 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
     return False
 
   def doActionFor(self, ob, action, wf_id=None, *args, **kw):
+    LOG(" Call user_action '%s' "%action, WARNING, " in WorkflowTool.py 163")
     workflow_list = self.getWorkflowValueListFor(ob.getPortalType())
     if wf_id is None:
       if workflow_list == []:
@@ -168,6 +169,7 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
       for wf in workflow_list:
         if wf.isActionSupported(ob, action, **kw):
           found = 1
+          LOG(" user_action is from workflow '%s'"%wf.getId(), WARNING, " in WorkflowTool.py, 172")
           break
       if not found:
         msg = _(u"No workflow provides the '${action_id}' action.",mapping={'action_id': action})
@@ -322,7 +324,12 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
           transition.setActboxCategory(tdef.actbox_category)
           transition.setActboxIcon(tdef.actbox_icon)
           transition.setActboxName(tdef.actbox_name)
-          transition.setActboxUrl(tdef.actbox_url)
+          # alter actbox_url to gain compatibility of erp5 workflow
+          compatible_url = tdef.actbox_url
+          if compatible_url is not None:
+            index_action_id = compatible_url.find(tdef.id)
+            compatible_url = compatible_url[:index_action_id] + 'transition_' + compatible_url[index_action_id:]
+            transition.setActboxUrl(compatible_url)
           transition.setDescription(tdef.description)
           if tdef.after_script_name is not None:
             # check after script is a Transion or a Script:
@@ -406,16 +413,25 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
                 state_id = 'state_'+value
                 state_id_list.append(state_id)
               worklist.setMatchedSimulationStateList(state_id_list)
+              # alter url:
+              compatible_url = qdef.actbox_url
+              index_state_id = compatible_url.find(value)
+              compatible_url = compatible_url[:index_state_id] + 'state_' + compatible_url[index_state_id:]
+              worklist.setActboxUrl(compatible_url)
             elif key == 'validation_state':
               state_id_list = []
               for value in values:
                 state_id = 'state_'+value
                 state_id_list.append(state_id)
               worklist.setMatchedValidationStateList(state_id_list)
+              # alter url:
+              compatible_url = qdef.actbox_url
+              index_state_id = compatible_url.find(value)
+              compatible_url = compatible_url[:index_state_id] + 'state_' + compatible_url[index_state_id:]
+              worklist.setActboxUrl(compatible_url)
           worklist.setActboxCategory(qdef.actbox_category)
           worklist.setActboxIcon(qdef.actbox_icon)
           worklist.setActboxName(qdef.actbox_name)
-          worklist.setActboxUrl(qdef.actbox_url)
           # configure guard
           if qdef.guard:
             worklist.setRoleList(qdef.guard.roles)
-- 
2.30.9