? b
? bt-callbacks.diff
Index: bug-tracker.info
===================================================================
RCS file: /cvsroot/openacs-4/packages/bug-tracker/bug-tracker.info,v
retrieving revision 1.23.2.1
diff -u -r1.23.2.1 bug-tracker.info
--- bug-tracker.info 7 Nov 2005 19:40:53 -0000 1.23.2.1
+++ bug-tracker.info 11 Jun 2006 03:13:43 -0000
@@ -24,14 +24,24 @@
-
-
-
+
+
+
+
Index: tcl/bug-tracker-procs.tcl
===================================================================
RCS file: /cvsroot/openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl,v
retrieving revision 1.32.2.3
diff -u -r1.32.2.3 bug-tracker-procs.tcl
--- tcl/bug-tracker-procs.tcl 18 Nov 2005 15:00:29 -0000 1.32.2.3
+++ tcl/bug-tracker-procs.tcl 11 Jun 2006 03:13:46 -0000
@@ -10,6 +10,52 @@
namespace eval bug_tracker {}
+ad_proc \
+ -callback bug_tracker::bug__resource_discovery \
+ {} \
+ {
+ allow subscribing code to uncover their resources needed
+ for the bug page
+ } \
+ -
+
+ad_proc \
+ -callback bug_tracker::bug__evaluate_actions_state \
+ {action_id workflow_id} \
+ {
+ allow subscribing code to look at state of workflow actions.
+ usually you should set upvar-ed vars defined here or in prev
+ callback for this to have any effect.
+ } \
+ -
+
+ad_proc \
+ -callback bug_tracker::bug__form_append \
+ {} \
+ {
+ allows subscribing code to append form elements (only!!)
+ to the end of the form.
+ } \
+ -
+
+ad_proc \
+ -callback bug_tracker::bug__log_message \
+ {} \
+ { allows subscribing code to supply named pieces of the log message } \
+ -
+
+ad_proc \
+ -callback bug_tracker::bug__add_new_log_entry \
+ {log_id user_id peeraddr context_id form_message message_mime_type} \
+ { allows subscribing code to add db items associated with new log entry } \
+ -
+
+ad_proc \
+ -callback bug_tracker::bug__register_form_log_message \
+ {message_from_form message_data_type log_message_revision_id} \
+ { allows subscribing code to do something with description from form } \
+ -
+
ad_proc bug_tracker::package_key {} {
return "bug-tracker"
}
Index: www/bug.tcl
===================================================================
RCS file: /cvsroot/openacs-4/packages/bug-tracker/www/bug.tcl,v
retrieving revision 1.38
diff -u -r1.38 bug.tcl
--- www/bug.tcl 1 Mar 2005 00:01:26 -0000 1.38
+++ www/bug.tcl 11 Jun 2006 03:13:48 -0000
@@ -24,6 +24,7 @@
set package_id [ad_conn package_id]
set package_key [ad_conn package_key]
+set peeraddr [ad_conn peeraddr]
set user_id [ad_conn user_id]
permission::require_permission -object_id $package_id -privilege read
@@ -58,6 +59,13 @@
set workflow_id [bug_tracker::bug::get_instance_workflow_id ]
+# (jim) this callback is for subscribing code to determine available
+# resources. Haven't decided what the return values mean yet.
+
+set bug__resource_list \
+ [callback \
+ bug_tracker::bug__resource_discovery]
+
#####
#
@@ -102,6 +110,12 @@
}
}
+set bug__evalactions_list \
+ [callback \
+ bug_tracker::bug__evaluate_actions_state \
+ $action_id \
+ $workflow_id]
+
#####
#
# Create the form
@@ -215,6 +229,10 @@
{entry_id:integer(hidden),optional}
}
+# (jim) this callback is for subscribing code to add elements to the form.
+
+set bug__formappend_list [callback bug_tracker::bug__form_append]
+
# TODO: Export filters
set filters [list]
foreach name [bug_tracker::get_export_variables] {
@@ -254,15 +272,85 @@
}
set description [element get_value bug description]
-
- bug_tracker::bug::edit \
+
+ db_transaction {
+
+ set bug__description_list \
+ [callback \
+ bug_tracker::bug__log_message]
+
+ set form_desc [template::util::richtext::get_property contents $description]
+
+ # parse the list of name-value strings into an array
+
+ foreach item $bug__description_list {
+ if {[regexp \
+ {^([a-zA-Z_][a-zA-Z0-9_]*)=(.*)$} \
+ $item \
+ match \
+ name \
+ value]} {
+ set result_arr(@$name@) $value
+ }
+ # add else clause here to complain about item format error
+ }
+
+ # form_desc is the description text from the bug form
+ set result_arr(@form_desc@) $form_desc
+
+ # all the values are now in result_arr array
+
+ # get the format string from the BugLogEntryFormatString parameter
+ set log_format_string \
+ [parameter::get \
+ -package_id $package_id \
+ -parameter BugLogEntryFormatString \
+ -default "@form_desc@"]
+
+ # parsing approach suggested by Gustaf Neumann in
+ # http://openacs.org/forums/message-view?message%5fid=432195
+
+ set description_string \
+ [string map \
+ [array get result_arr] \
+ $log_format_string]
+
+ # (jim) will reuse these, so set them here
+ set entry_id [element get_value bug entry_id]
+ set desc_format \
+ [template::util::richtext::get_property format $description]
+
+ bug_tracker::bug::edit \
-bug_id $bug(bug_id) \
-enabled_action_id $enabled_action_id \
- -description [template::util::richtext::get_property contents $description] \
- -desc_format [template::util::richtext::get_property format $description] \
+ -description $description_string \
+ -desc_format $desc_format \
-array row \
- -entry_id [element get_value bug entry_id]
+ -entry_id $entry_id
+ set bt_rev_id \
+ [content::item::get_live_revision -item_id $entry_id]
+
+ set bug__addnewentry_list \
+ [callback bug_tracker::bug__add_new_log_entry \
+ $bt_rev_id \
+ $user_id \
+ $peeraddr \
+ $package_id \
+ $form_desc \
+ $desc_format]
+
+ # (but package_id might be wrong for the context id)
+
+ # (jim) invoke callback to allow processing of the description
+ # text that actually came from the form (for example, to store it)
+ set bug__regmsg_list \
+ [callback \
+ bug_tracker::bug__register_form_log_message \
+ $form_desc \
+ $desc_format \
+ $bt_rev_id]
+ }
ad_returnredirect $return_url
ad_script_abort