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.20 -r1.21 --- openacs-4/packages/bug-tracker/bug-tracker.info 2 Apr 2004 00:20:09 -0000 1.20 +++ openacs-4/packages/bug-tracker/bug-tracker.info 27 Apr 2004 12:33:19 -0000 1.21 @@ -7,7 +7,7 @@ f f - + postgresql oracle @@ -18,7 +18,7 @@ Musea Technologies Bug tracking application with notifications, configurable state management, and patch upload. Contains the best of SDM, Bugzilla, FogBUGZ, and bughost.com. - + Index: openacs-4/packages/bug-tracker/catalog/bug-tracker.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/catalog/bug-tracker.en_US.ISO-8859-1.xml,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/bug-tracker/catalog/bug-tracker.en_US.ISO-8859-1.xml 20 Apr 2004 15:45:24 -0000 1.4 +++ openacs-4/packages/bug-tracker/catalog/bug-tracker.en_US.ISO-8859-1.xml 27 Apr 2004 12:33:20 -0000 1.5 @@ -151,6 +151,9 @@ Denied Permission Denied Permissions + Plain + Plain + Preformatted Planned Freeze Planned Release Please contact a project administrator to get the components set up. @@ -171,6 +174,7 @@ Release Version Release this version + Reopen Reopened Request notifications for all activity on this %bug_name% Resolution @@ -214,6 +218,7 @@ Suggestion Support Type platforms + Table There are no open %pretty_names.bugs% to map the patch to. Try changing the component filter above. this %bug_name% This is a new project. @@ -238,7 +243,7 @@ Version name Name - Version_id $version_id not found + Version_id %version_id% not found Versions View the %pretty_names.bugs% for this component Watch this %bug_name% Index: openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-search-triggers.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/sql/postgresql/Attic/bug-tracker-search-triggers.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-search-triggers.sql 27 Apr 2004 12:33:20 -0000 1.1 @@ -0,0 +1,91 @@ +-- Bug tracker search triggers +-- +-- @author davis@xarg.net +-- @cvs-id $Id: bug-tracker-search-triggers.sql,v 1.1 2004/04/27 12:33:20 jeffd Exp $ +-- + +create or replace function bug_tracker_search__itrg () +returns opaque as ' +begin + if new.parent_id is null then + perform search_observer__enqueue(new.message_id,''INSERT''); + else + perform search_observer__enqueue(forums_message__root_message_id(new.parent_id),''UPDATE''); + end if; + return new; +end;' language 'plpgsql'; + +create or replace function forums_message_search__dtrg () +returns opaque as ' +declare + v_root_message_id forums_messages.message_id%TYPE; +begin + -- if the deleted msg has a parent then its an UPDATE to a thread, otherwise a DELETE. + + if old.parent_id is null then + perform search_observer__enqueue(old.message_id,''DELETE''); + else + v_root_message_id := forums_message__root_message_id(old.parent_id); + if not v_root_message_id is null then + perform search_observer__enqueue(v_root_message_id,''UPDATE''); + end if; + end if; + + return old; +end;' language 'plpgsql'; + +create or replace function forums_message_search__utrg () +returns opaque as ' +begin + perform search_observer__enqueue(forums_message__root_message_id (old.message_id),''UPDATE''); + return old; +end;' language 'plpgsql'; + + +create trigger forums_message_search__itrg after insert on forums_messages +for each row execute procedure forums_message_search__itrg (); + +create trigger forums_message_search__dtrg after delete on forums_messages +for each row execute procedure forums_message_search__dtrg (); + +create trigger forums_message_search__utrg after update on forums_messages +for each row execute procedure forums_message_search__utrg (); + + + +-- forums_forums indexing trigger +create or replace function forums_forums_search__itrg () +returns opaque as ' +begin + perform search_observer__enqueue(new.forum_id,''INSERT''); + + return new; +end;' language 'plpgsql'; + +create or replace function forums_forums_search__utrg () +returns opaque as ' +begin + perform search_observer__enqueue(new.forum_id,''UPDATE''); + + return new; +end;' language 'plpgsql'; + +create or replace function forums_forums_search__dtrg () +returns opaque as ' +begin + perform search_observer__enqueue(old.forum_id,''DELETE''); + + return old; +end;' language 'plpgsql'; + + + +create trigger forums_forums_search__itrg after insert on forums_forums +for each row execute procedure forums_forums_search__itrg (); + +create trigger forums_forums_search__utrg after update on forums_forumss +for each row execute procedure forums_forums_search__utrg (); + +create trigger forums_forums_search__dtrg after delete on forums_forums +for each row execute procedure forums_forums_search__dtrg (); + Index: openacs-4/packages/bug-tracker/tcl/bug-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/bug-procs.tcl,v diff -u -N -r1.17 -r1.18 --- openacs-4/packages/bug-tracker/tcl/bug-procs.tcl 20 Apr 2004 15:45:24 -0000 1.17 +++ openacs-4/packages/bug-tracker/tcl/bug-procs.tcl 27 Apr 2004 12:33:21 -0000 1.18 @@ -49,10 +49,10 @@ # Derived fields set row(bug_number_display) "$row(bug_number)" - set row(component_name) [bug_tracker::component_get_name -component_id $row(component_id)] - set row(found_in_version_name) [bug_tracker::version_get_name -version_id $row(found_in_version)] - set row(fix_for_version_name) [bug_tracker::version_get_name -version_id $row(fix_for_version)] - set row(fixed_in_version_name) [bug_tracker::version_get_name -version_id $row(fixed_in_version)] + set row(component_name) [bug_tracker::component_get_name -component_id $row(component_id) -package_id $row(project_id)] + set row(found_in_version_name) [bug_tracker::version_get_name -version_id $row(found_in_version) -package_id $row(project_id)] + set row(fix_for_version_name) [bug_tracker::version_get_name -version_id $row(fix_for_version) -package_id $row(project_id)] + set row(fixed_in_version_name) [bug_tracker::version_get_name -version_id $row(fixed_in_version) -package_id $row(project_id)] # Get state information workflow::case::fsm::get -case_id $case_id -array case -enabled_action_id $enabled_action_id Index: openacs-4/packages/bug-tracker/tcl/bug-search-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/bug-search-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/bug-tracker/tcl/bug-search-procs.tcl 27 Apr 2004 12:33:21 -0000 1.1 @@ -0,0 +1,195 @@ +#TODO: JCD: EXTRACT QUERIES for patch (or really refactor patch.tcl so they both call patch::get) + +ad_library { + Bug tracker - Search Service Contracts + + @creation-date 2004-04-20 + @author Jeff Davis davis@xarg.net + @cvs-id $Id: bug-search-procs.tcl,v 1.1 2004/04/27 12:33:21 jeffd Exp $ +} + +namespace eval bug_tracker::search {} +namespace eval bug_tracker::search::bug {} +namespace eval bug_tracker::search::patch {} + +ad_proc -private bug_tracker::search::bug::datasource { bug_id } { + returns a datasource for the search package this is the content + that will be indexed by the full text search engine. + + @param bug_id + + @author Jeff Davis davis@xarg.net +} { + bug_tracker::bug::get -bug_id $bug_id -array row + set case_id [workflow::case::get_id \ + -object_id $bug_id \ + -workflow_short_name [bug_tracker::bug::workflow_short_name]] + set comments [workflow::case::get_activity_text -case_id $case_id] + set title "Bug $row(bug_number_display) - $row(summary) \[$row(component_name)\]" + set content [lang::util::localize "Bug $row(bug_number_display) - $row(summary) \[$row(component_name)\] +Created: $row(creation_date_pretty) +Fix for: $row(fix_for_version_name) +Fixed in: $row(fixed_in_version_name) $row(fixed_in_version) +Resolution: $row(resolution) +Found in: $row(found_in_version_name) +State: $row(pretty_state) +User agent: $row(user_agent)\n\n$comments"] + + return [list object_id $bug_id \ + title $title \ + content $content \ + keywords $row(component_name) \ + storage_type text \ + mime text/plain ] +} + +ad_proc -private bug_tracker::search::bug::url { bug_id } { + returns a url for a given bug_id + + @param bug_id + @author Jeff Davis davis@xarg.net +} { + if {[db_0or1row get {select project_id, bug_number from bt_bugs where bug_id = :bug_id}]} { + return "[ad_url][apm_package_url_from_id $project_id]bug?bug_number=$bug_number" + } else { + error "bug_id $bug_id not found" + } +} + + +ad_proc -private bug_tracker::search::patch::datasource { patch_id } { + returns a datasource for the search package this is the content + that will be indexed by the full text search engine. + + @param patch_id + + @author Jeff Davis davis@xarg.net +} { + db_1row patch { + select bt_patches.patch_id, + bt_patches.patch_number, + bt_patches.project_id, + bt_patches.component_id, + bt_patches.summary, + bt_patches.content, + bt_patches.generated_from_version, + bt_patches.apply_to_version, + bt_patches.applied_to_version, + bt_patches.status, + bt_components.component_name, + acs_objects.creation_user as submitter_user_id, + submitter.first_names as submitter_first_names, + submitter.last_name as submitter_last_name, + submitter.email as submitter_email, + acs_objects.creation_date, + to_char(acs_objects.creation_date, 'fmMM/DDfm/YYYY') as creation_date_pretty, + to_char(now(), 'fmMM/DDfm/YYYY') as now_pretty + from bt_patches, + acs_objects, + cc_users submitter, + bt_components + where bt_patches.patch_id = :patch_id + and bt_patches.patch_id = acs_objects.object_id + and bt_patches.component_id = bt_components.component_id + and submitter.user_id = acs_objects.creation_user + } -column_array patch + + set title "Patch $patch(patch_number) - $patch(summary) \[$patch(component_name)\]" + set content "Patch $patch(patch_number) - $patch(summary) \[$patch(component_name)\] + submitted by $patch(submitter_first_names) $patch(submitter_last_name) $patch(submitter_email) + Created $patch(creation_date_pretty) + Applies to $patch(generated_from_version) - $patch(apply_to_version) + Status $patch(status) + +" + # Description/Actions/History + db_foreach actions { + select bt_patch_actions.action_id, + bt_patch_actions.action, + bt_patch_actions.actor as actor_user_id, + actor.first_names as actor_first_names, + actor.last_name as actor_last_name, + actor.email as actor_email, + bt_patch_actions.action_date, + to_char(bt_patch_actions.action_date, 'fmMM/DDfm/YYYY') as action_date_pretty, + bt_patch_actions.comment_text, + bt_patch_actions.comment_format + from bt_patch_actions, + cc_users actor + where bt_patch_actions.patch_id = :patch_id + and actor.user_id = bt_patch_actions.actor + order by action_date + } { + append content "$action_date_pretty [bug_tracker::patch_action_pretty $action] by $actor_first_names $actor_last_name + [bug_tracker::bug_convert_comment_to_text -comment $comment_text -format $comment_format]\n" + } + + append content "PATCH CONTENT:\n\n$patch(content)\n" + + return [list object_id $patch_id \ + title $title \ + content $content \ + keywords $patch(component_name) \ + storage_type text \ + mime text/plain ] +} + + +ad_proc -private bug_tracker::search::patch::url { patch_id } { + returns a url for a given patch_id + + @param patch_id + @author Jeff Davis davis@xarg.net +} { + if {[db_0or1row get {select project_id, patch_number from bt_patches where patch_id = :patch_id}]} { + return "[ad_url][apm_package_url_from_id $project_id]patch?patch_number=$patch_number" + } else { + error "bug_id $bug_id not found" + } +} + +ad_proc -private bug_tracker::search::register_implementations {} { + Register the forum_forum and forum_message content type fts contract +} { + db_transaction { + bug_tracker::search::register_bug_fts_impl + bug_tracker::search::register_patch_fts_impl + } +} + +ad_proc -private bug_tracker::search::unregister_implementations {} { + db_transaction { + acs_sc::impl::delete -contract_name FtsContentProvider -impl_name bt_bug + acs_sc::impl::delete -contract_name FtsContentProvider -impl_name bt_patch + } +} + +ad_proc -private bug_tracker::search::register_bug_fts_impl {} { + set spec { + name "bt_bug" + aliases { + datasource bug_tracker::search::bug::datasource + url bug_tracker::search::bug::url + } + contract_name FtsContentProvider + owner bug-tracker + } + + acs_sc::impl::new_from_spec -spec $spec +} + +ad_proc -private bug_tracker::search::register_patch_fts_impl {} { + set spec { + name "bt_patch" + aliases { + datasource bug_tracker::search::patch::datasource + url bug_tracker::search::patch::url + } + contract_name FtsContentProvider + owner bug-tracker + } + + acs_sc::impl::new_from_spec -spec $spec +} + + 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.28 -r1.29 --- openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl 20 Apr 2004 14:19:35 -0000 1.28 +++ openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl 27 Apr 2004 12:33:21 -0000 1.29 @@ -825,7 +825,7 @@ return $name } } - error [_ bug-tracker.Version_id] + error [_ bug-tracker.Version_id [list version_id $version_id]] } Index: openacs-4/packages/bug-tracker/tcl/install-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/install-procs.tcl,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/bug-tracker/tcl/install-procs.tcl 28 Aug 2003 09:45:29 -0000 1.2 +++ openacs-4/packages/bug-tracker/tcl/install-procs.tcl 27 Apr 2004 12:33:21 -0000 1.3 @@ -17,6 +17,7 @@ } { db_transaction { bug_tracker::install::register_implementations + bug_tracker::search::register_implementations bug_tracker::bug::workflow_create } } @@ -27,6 +28,7 @@ db_transaction { bug_tracker::bug::workflow_delete bug_tracker::install::unregister_implementations + bug_tracker::search::unregister_implementations } } @@ -52,6 +54,9 @@ bug_tracker::bug::instance_workflow_create -package_id $project_id } } + 1.4d2 1.4d3 { + bug_tracker::search::register_implementations + } } } 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.31 -r1.32 --- openacs-4/packages/bug-tracker/www/bug.tcl 20 Apr 2004 15:53:42 -0000 1.31 +++ openacs-4/packages/bug-tracker/www/bug.tcl 27 Apr 2004 12:33:21 -0000 1.32 @@ -84,7 +84,7 @@ # TODO: avoid the enabled_action_get query by caching it, or caching only the enabled_action_id -> action_id lookup? workflow::case::enabled_action_get -enabled_action_id $available_enabled_action_id -array enabled_action workflow::action::get -action_id $enabled_action(action_id) -array available_action - lappend actions [list " $available_action(pretty_name) " $available_enabled_action_id] + lappend actions [list " [lang::util::localize $available_action(pretty_name)] " $available_enabled_action_id] } } @@ -362,7 +362,7 @@ set context [list \ [list \ [export_vars -base . [bug_tracker::get_export_variables]] \ - "[_ bug-tracker.Filtered]"] \ + [_ bug-tracker.Filtered]] \ [ad_quotehtml $page_title]] } else { set context [list [ad_quotehtml $page_title]] Index: openacs-4/packages/bug-tracker/www/patch-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/patch-add.tcl,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/bug-tracker/www/patch-add.tcl 29 Mar 2004 15:07:34 -0000 1.11 +++ openacs-4/packages/bug-tracker/www/patch-add.tcl 27 Apr 2004 12:33:21 -0000 1.12 @@ -66,7 +66,7 @@ -datatype text \ -widget select \ -label "[_ bug-tracker.Description_1]" \ - -options { { "[_ bug-tracker.Plain]" plain } { "[_ bug-tracker.HTML]" html } { "[_ bug-tracker.Preformatted]" pre } } + -options [list [list [_ bug-tracker.Plain] plain] [list [_ bug-tracker.HTML] html] [list [_ bug-tracker.Preformatted] pre ]] element create patch version_id \ -datatype text \ Index: openacs-4/packages/bug-tracker/www/admin/initial-setup.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/admin/initial-setup.tcl,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/bug-tracker/www/admin/initial-setup.tcl 29 Mar 2004 15:07:35 -0000 1.2 +++ openacs-4/packages/bug-tracker/www/admin/initial-setup.tcl 27 Apr 2004 12:33:22 -0000 1.3 @@ -20,7 +20,7 @@ } -on_submit { if { [info exists default_configs($setup)] } { array set config $default_configs($setup) - + bug_tracker::delete_all_project_keywords bug_tracker::install_keywords_setup -spec $config(categories) bug_tracker::install_parameters_setup -spec $config(parameters)