Index: openacs-4/packages/bug-tracker/bug-tracker.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/bug-tracker.info,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/bug-tracker/bug-tracker.info 30 Nov 2002 17:27:05 -0000 1.7 +++ openacs-4/packages/bug-tracker/bug-tracker.info 9 Dec 2002 21:23:50 -0000 1.8 @@ -43,7 +43,6 @@ - @@ -84,6 +83,12 @@ + + + + + + Index: openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql 11 Sep 2002 14:03:22 -0000 1.5 +++ openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql 9 Dec 2002 21:24:01 -0000 1.6 @@ -6,6 +6,7 @@ project_id integer not null constraint bt_projects_apm_packages_fk references apm_packages(package_id) + on delete cascade constraint bt_projects_pk primary key, description text, @@ -747,3 +748,5 @@ constraint bt_patch_bug_map_un unique (patch_id, bug_id) ); + +\i bug-tracker-notifications-init.sql Index: openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl,v diff -u -N -r1.15 -r1.16 --- openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl 30 Nov 2002 17:27:18 -0000 1.15 +++ openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl 9 Dec 2002 21:24:12 -0000 1.16 @@ -494,6 +494,7 @@ resolve "Resolved" reopen "Reopened" close "Closed" + patched "Patched" } if { [info exists action_codes($action)] } { @@ -552,12 +553,12 @@ set sql { select distinct q.* from ( - select u.first_names || ' ' || u.last_name as name, u.user_id + select u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id from bt_bugs b, cc_users u where b.project_id = :package_id and u.user_id = b.assignee union - select u.first_names || ' ' || u.last_name as name, u.user_id + select u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id from cc_users u where u.user_id = :user_id ) q @@ -631,7 +632,7 @@ assignee.first_names as assignee_first_names, assignee.last_name as assignee_last_name, assignee.email as assignee_email, - to_char(now(), 'fmMM/DDfm/YYYY') as now_pretty + to_char(now(), 'fmMon/DDfm/YYYY') as now_pretty from bt_bugs b left outer join cc_users assignee on (assignee.user_id = b.assignee), acs_objects o, @@ -648,37 +649,34 @@ and submitter.user_id = o.creation_user } -column_array bug - set subject_start "Bug #$bug(bug_number). [ad_html_to_text -- [string_truncate -len 30 $bug(summary)]]" - set body_start "Bug #$bug(bug_number). $bug(summary)" + set subject "Bug #$bug(bug_number). [ad_html_to_text -- [string_truncate -len 30 $bug(summary)]]: [bug_action_pretty $action $resolution] by [conn user_first_names] [conn user_last_name]" + set body "Bug no: #$bug(bug_number) +Summary: $bug(summary) + +Component: $bug(component_name) +Status: [status_pretty $bug(status)] +Severity: $bug(severity_pretty) +Priority: $bug(priority_pretty) +Found in version: $bug(found_in_version_name) + +Action: [bug_action_pretty $action $resolution] +By user: [conn user_first_names] [conn user_last_name] <[conn user_email]> + +" + if { ![string equal $action "patched"] } { - set subject "$subject_start: [bug_action_pretty $action $resolution] by [conn user_first_names] [conn user_last_name]" - - set body "$body_start - - Action: [bug_action_pretty $action $resolution] by [conn user_first_names] [conn user_last_name] - " if { ![empty_string_p $comment] } { - append body " - Comment: - - [bug_convert_comment_to_text -comment $comment -format $comment_format] - " - } + append body "Comment:\n\n[bug_convert_comment_to_text -comment $comment -format $comment_format]\n\n" + } } else { - # The bug was patched - we use different text in this case - set subject "$subject_start was patched by [conn user_first_names] [conn user_last_name]" - - set body "$body_start - - A patch with summary \"$patch_summary\" has been entered for this bug." + append body "\n\nSummary: $patch_summary\n\n" } - - append body " - [ad_url][ad_conn package_url]bug?[export_vars -url { { bug_number $bug(bug_number) } }] - " + + append body "--\nTo comment on, edit, resolve, close, or reopen this bug, go to:\n[ad_url][ad_conn package_url]bug?[export_vars -url { { bug_number $bug(bug_number) } }]\n" + # Use the Notification service to alert (could be immediately, or daily, or weekly) # people who have signed up for notification on this bug notification::new \ @@ -723,8 +721,12 @@ set notification_link [list] # Only present the link to logged in users. - if { $user_id != "0" } { + if { $user_id != 0 } { set type_id [notification::type::get_type_id -short_name $type] + if { [empty_string_p $type_id] } { + ns_log Error "Can't find notification of type '$type'" + return "" + } set request_id [notification::request::get_request_id -type_id $type_id -object_id $object_id -user_id $user_id] Index: openacs-4/packages/bug-tracker/www/bug.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/bug.tcl,v diff -u -N -r1.15 -r1.16 --- openacs-4/packages/bug-tracker/www/bug.tcl 4 Dec 2002 16:33:13 -0000 1.15 +++ openacs-4/packages/bug-tracker/www/bug.tcl 9 Dec 2002 21:24:22 -0000 1.16 @@ -228,7 +228,7 @@ -options [bug_tracker::users_get_options] \ -optional \ -search_query { - select distinct u.first_names || ' ' || u.last_name as name, u.user_id + select distinct u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id from cc_users u where upper(coalesce(u.first_names || ' ', '') || coalesce(u.last_name || ' ', '') || u.email || ' ' || coalesce(u.screen_name, '')) like upper('%'||:value||'%') order by name Index: openacs-4/packages/bug-tracker/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/index.tcl,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/bug-tracker/www/index.tcl 20 Sep 2002 13:40:46 -0000 1.11 +++ openacs-4/packages/bug-tracker/www/index.tcl 9 Dec 2002 21:24:22 -0000 1.12 @@ -37,11 +37,6 @@ set num_bugs [db_string num_bugs { select count(bug_id) from bt_bugs where project_id = :package_id }] -if { $num_bugs == 0 } { - ad_return_template "no-bugs" - return -} - set user_id [ad_conn user_id] # Notifications for a project. Provide a link for logged in users @@ -51,6 +46,11 @@ -url $return_url \ -pretty_name "project"] +if { $num_bugs == 0 } { + ad_return_template "no-bugs" + return +} + # # Filter management # Index: openacs-4/packages/bug-tracker/www/no-bugs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/no-bugs.adp,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/bug-tracker/www/no-bugs.adp 3 May 2002 16:29:59 -0000 1.1 +++ openacs-4/packages/bug-tracker/www/no-bugs.adp 9 Dec 2002 21:24:22 -0000 1.2 @@ -1,6 +1,7 @@ @project_name@ @context_bar@ +@notification_link@ No bugs in this bug-tracker. Index: openacs-4/packages/bug-tracker/www/admin/component-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/admin/component-ae.tcl,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/bug-tracker/www/admin/component-ae.tcl 10 Sep 2002 22:22:28 -0000 1.5 +++ openacs-4/packages/bug-tracker/www/admin/component-ae.tcl 9 Dec 2002 21:24:31 -0000 1.6 @@ -47,11 +47,21 @@ -optional element create component maintainer \ - -datatype integer \ - -widget select \ + -widget search \ + -datatype search \ + -result_datatype integer \ -label "Maintainer" \ - -options [concat {{ "--None--" "" }} [db_list_of_lists users { select first_names || ' ' || last_name, user_id from cc_users }]] -optional + -options [bug_tracker::users_get_options] \ + -optional \ + -search_query { + select distinct u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id + from cc_users u + where upper(coalesce(u.first_names || ' ', '') || coalesce(u.last_name || ' ', '') || u.email || ' ' || coalesce(u.screen_name, '')) like upper('%'||:value||'%') + order by name +} + + element create component component_id \ -datatype integer \ -widget hidden Index: openacs-4/packages/bug-tracker/www/admin/version-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/admin/version-ae.tcl,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/bug-tracker/www/admin/version-ae.tcl 28 Aug 2002 15:44:18 -0000 1.3 +++ openacs-4/packages/bug-tracker/www/admin/version-ae.tcl 9 Dec 2002 21:24:31 -0000 1.4 @@ -30,73 +30,87 @@ # no primary key and you're only inserting, you can just ignore it. # Add handling for any other incoming URL variables that should become part of the form. -template::form create version +form create version -template::element create version version_id -widget hidden -template::element create version return_url -datatype text -widget hidden -value $return_url +element create version version_id -widget hidden +element create version return_url -datatype text -widget hidden -value $return_url -template::element create version version_name -label "Version name" -widget text -datatype text -html { size 50 } -template::element create version description -label "Description" -widget textarea -datatype text -optional -html { cols 50 rows 8 } -template::element create version supported_platforms -label "Supported platforms" -widget text -datatype text \ +element create version version_name -label "Version name" -widget text -datatype text -html { size 50 } +element create version description -label "Description" -widget textarea -datatype text -optional -html { cols 50 rows 8 } +element create version supported_platforms -label "Supported platforms" -widget text -datatype text \ -html { size 50 } -optional -template::element create version maintainer -label "Maintainer" -widget select -datatype integer \ - -options [concat {{ "--None--" "" }} [db_list_of_lists users { select first_names || ' ' || last_name, user_id from cc_users }]] -optional -template::element create version anticipated_freeze_date -label "Anticipated freeze date" -widget date -datatype date -optional -format "MONTH DD, YYYY" -template::element create version anticipated_release_date -label "Anticipated release date" -widget date -datatype date -optional -format "MONTH DD, YYYY" -template::element create version assignable_p -label "Assignable?" -widget select -datatype text -optional -options {{Yes t} {No f}} -template::element create version insert_or_update -widget hidden -datatype text +element create version maintainer \ + -widget search \ + -datatype search \ + -result_datatype integer \ + -label "Maintainer" \ + -options [bug_tracker::users_get_options] \ + -optional \ + -search_query { + select distinct u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id + from cc_users u + where upper(coalesce(u.first_names || ' ', '') || coalesce(u.last_name || ' ', '') || u.email || ' ' || coalesce(u.screen_name, '')) like upper('%'||:value||'%') + order by name +} -if { [template::form is_request version] } { + +element create version anticipated_freeze_date -label "Anticipated freeze date" -widget date -datatype date -optional -format "MONTH DD, YYYY" +element create version anticipated_release_date -label "Anticipated release date" -widget date -datatype date -optional -format "MONTH DD, YYYY" +element create version assignable_p -label "Assignable?" -widget select -datatype text -optional -options {{Yes t} {No f}} + +element create version insert_or_update -widget hidden -datatype text + +if { [form is_request version] } { if {[empty_string_p $version_id]} { set insert_or_update insert - template::element set_properties version insert_or_update -value insert + element set_properties version insert_or_update -value insert set version_id [db_nextval "acs_object_id_seq"] - template::element set_properties version version_id -value $version_id + element set_properties version version_id -value $version_id } else { set insert_or_update update - template::element set_properties version insert_or_update -value update + element set_properties version insert_or_update -value update db_1row get_current_values " select version_id, version_name, description, to_char(anticipated_freeze_date, 'YYYY MM DD HH24 MI') as anticipated_freeze_date, to_char(anticipated_release_date, 'YYYY MM DD HH24 MI') as anticipated_release_date, maintainer, supported_platforms, assignable_p from bt_versions where version_id = :version_id " - template::element set_properties version version_id -value $version_id - template::element set_properties version version_name -value $version_name - template::element set_properties version description -value $description - template::element set_properties version anticipated_freeze_date -value $anticipated_freeze_date - template::element set_properties version anticipated_release_date -value $anticipated_release_date - template::element set_properties version maintainer -value $maintainer - template::element set_properties version supported_platforms -value $supported_platforms - template::element set_properties version assignable_p -value $assignable_p + element set_properties version version_id -value $version_id + element set_properties version version_name -value $version_name + element set_properties version description -value $description + element set_properties version anticipated_freeze_date -value $anticipated_freeze_date + element set_properties version anticipated_release_date -value $anticipated_release_date + element set_properties version maintainer -value $maintainer + element set_properties version supported_platforms -value $supported_platforms + element set_properties version assignable_p -value $assignable_p } } -set insert_or_update [template::element::get_value version insert_or_update] +set insert_or_update [element::get_value version insert_or_update] -if { [template::form is_valid version] } { +if { [form is_valid version] } { # valid form submission - set version_id [template::element::get_value version version_id] + set version_id [element::get_value version version_id] set project_id [ad_conn package_id] - set version_name [template::element::get_value version version_name] - set description [template::element::get_value version description] - set anticipated_freeze_date [template::element::get_value version anticipated_freeze_date] + set version_name [element::get_value version version_name] + set description [element::get_value version description] + set anticipated_freeze_date [element::get_value version anticipated_freeze_date] if {![empty_string_p $anticipated_freeze_date]} { - set anticipated_freeze_date [template::util::date::get_property sql_date $anticipated_freeze_date] + set anticipated_freeze_date [util::date::get_property sql_date $anticipated_freeze_date] } else { set anticipated_freeze_date NULL } - set anticipated_release_date [template::element::get_value version anticipated_release_date] + set anticipated_release_date [element::get_value version anticipated_release_date] if {![empty_string_p $anticipated_release_date]} { - set anticipated_release_date [template::util::date::get_property sql_date $anticipated_release_date] + set anticipated_release_date [util::date::get_property sql_date $anticipated_release_date] } else { set anticipated_release_date NULL } - set maintainer [template::element::get_value version maintainer] - set supported_platforms [template::element::get_value version supported_platforms] - set assignable_p [template::element::get_value version assignable_p] + set maintainer [element::get_value version maintainer] + set supported_platforms [element::get_value version supported_platforms] + set assignable_p [element::get_value version assignable_p] if {$insert_or_update == "insert"} { if {[db_0or1row check_exists "