Index: openacs-4/packages/workflow/workflow.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/workflow.info,v diff -u -r1.19 -r1.20 --- openacs-4/packages/workflow/workflow.info 8 Aug 2006 21:27:24 -0000 1.19 +++ openacs-4/packages/workflow/workflow.info 17 Jun 2010 18:46:09 -0000 1.20 @@ -6,6 +6,8 @@ Workflows f t + f + t workflow @@ -22,20 +24,20 @@ It supports the Bug Tracker, CMS publication, simple approval, and much more. <p> For more information, see: <a href="http://www.collaboraid.biz/developer/workflow-spec">the workflow specification</a>. + 0 - - + - + - + Index: openacs-4/packages/workflow/tcl/case-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/case-procs.tcl,v diff -u -r1.42 -r1.43 --- openacs-4/packages/workflow/tcl/case-procs.tcl 18 Jun 2008 21:42:42 -0000 1.42 +++ openacs-4/packages/workflow/tcl/case-procs.tcl 17 Jun 2010 18:46:09 -0000 1.43 @@ -1206,12 +1206,17 @@ } { db_transaction { if { $replace_p } { - db_dml delete_assignees {} + workflow::case::role::assignees_remove -case_id $case_id -role_id $role_id } foreach party_id $party_ids { if { [catch { db_dml insert_assignee {} + + callback workflow::case::role::after_assign \ + -case_id $case_id \ + -party_id $party_id + } errMsg] } { set already_assigned_p [db_string already_assigned_p {}] if { !$already_assigned_p } { @@ -1240,9 +1245,38 @@ } { db_dml delete_assignee {} + callback workflow::case::role::after_unassign \ + -case_id $case_id \ + -party_id $party_id + workflow::case::role::flush_cache -case_id $case_id } +ad_proc -public workflow::case::role::assignees_remove { + {-case_id:required} + {-role_id:required} +} { + Remove all assignees in this role + + @param case_id the ID of the case. + @param role_id the ID of the role to remove the assignees from. + + @author Ryan Gallimore +} { + set assignees [workflow::case::role::get_assignees -case_id $case_id -role_id $role_id] + foreach assignee $assignees { + foreach {party_id email name} { + callback workflow::case::role::after_unassign \ + -case_id $case_id \ + -party_id $party_id + } + } + + db_dml delete_assignees {} + + workflow::case::role::flush_cache -case_id $case_id +} + ad_proc -public workflow::case::role::assign { {-case_id:required} {-array:required} Index: openacs-4/packages/workflow/tcl/case-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/case-procs.xql,v diff -u -r1.14 -r1.15 --- openacs-4/packages/workflow/tcl/case-procs.xql 5 Feb 2004 10:37:33 -0000 1.14 +++ openacs-4/packages/workflow/tcl/case-procs.xql 17 Jun 2010 18:46:09 -0000 1.15 @@ -137,7 +137,7 @@ - + delete from workflow_case_role_party_map where case_id = :case_id Index: openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl 17 Jun 2010 18:47:12 -0000 1.1 @@ -0,0 +1,19 @@ +ad_library { + ad_proc -callback procs for workflow +} + +ad_proc -callback workflow::case::role::after_assign { + {-case_id:required} + {-party_id:required} +} { + After assignment callback to execute arbitrary code after + a party is assigned to a role. +} - + +ad_proc -callback workflow::case::role::after_unassign { + {-case_id:required} + {-party_id:required} +} { + After assignment callback to execute arbitrary code after + a party is unassigned from a role. +} - \ No newline at end of file