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 -r1.18.2.4 -r1.18.2.5
--- openacs-4/packages/bug-tracker/bug-tracker.info	12 Mar 2005 18:32:11 -0000	1.18.2.4
+++ openacs-4/packages/bug-tracker/bug-tracker.info	1 Aug 2005 18:33:04 -0000	1.18.2.5
@@ -7,18 +7,15 @@
     <initial-install-p>f</initial-install-p>
     <singleton-p>f</singleton-p>
     
-    <version name="1.4" url="http://openacs.org/repository/download/apm/bug-tracker-1.4.apm">
-    <database-support>
-        <database>postgresql</database>
-        <database>oracle</database>
-    </database-support>
+    <version name="1.4.1" url="http://openacs.org/repository/download/apm/bug-tracker-1.4.1.apm">
         <owner url="mailto:lars@collaboraid.biz">Lars Pind</owner>
         <summary>Tracks bugs and features, versions and maintainers, in software projects.</summary>
-        <release-date>2003-02-28</release-date>
+        <release-date>2005-07-29</release-date>
         <vendor url="http://www.museatech.net">Musea Technologies</vendor>
-        <description format="text/html">Bug tracking application with notifications, configurable state management, and patch upload.
+        <description format="text/html">Bug tracking application with notifications, configurable state management, and patch upload.
         Contains the best of SDM, Bugzilla, FogBUGZ, and bughost.com.</description>
-        <provides url="bug-tracker" version="1.4"/>
+
+        <provides url="bug-tracker" version="1.4.1"/>
         <requires url="acs-content-repository" version="5.1.4d4"/>
         <requires url="acs-kernel" version="5.0d13"/>
         <requires url="acs-tcl" version="4.6.2d"/>
@@ -28,11 +25,10 @@
         <callbacks>
             <callback type="after-install"  proc="bug_tracker::install::package_install"/>
             <callback type="after-instantiate"  proc="bug_tracker::install::package_instantiate"/>
+            <callback type="after-upgrade"  proc="bug_tracker::install::package_upgrade"/>
             <callback type="before-uninstall"  proc="bug_tracker::install::package_uninstall"/>
             <callback type="before-uninstantiate"  proc="bug_tracker::install::package_uninstantiate"/>
-            <callback type="after-upgrade"  proc="bug_tracker::install::package_upgrade"/>
         </callbacks>
-
         <parameters>
             <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="ComponentPrettyName"  default="component" description="Pretty name of a component/area/module, e.g. 'area'. Use the capitalization that you would use in the middle of a sentence."/>
             <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="ComponentPrettyPlural"  default="components" description="Plural pretty name of a component/area/module, e.g. 'area'. Use the capitalization that you would use in the middle of a sentence."/>
Index: openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-create-tables.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-create-tables.sql,v
diff -u -r1.2 -r1.2.4.1
--- openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-create-tables.sql	28 Mar 2003 10:10:44 -0000	1.2
+++ openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-create-tables.sql	1 Aug 2005 18:33:04 -0000	1.2.4.1
@@ -28,6 +28,9 @@
                                 references cr_folders(folder_id),
   root_keyword_id               integer
                                 constraint bt_projects_keyword_fk
+                                references cr_keywords(keyword_id),
+  component_keyword_id          integer
+                                constraint bt_component_keyword_fk
                                 references cr_keywords(keyword_id)
 );
 
@@ -311,3 +314,17 @@
 
 create index bt_patch_bug_map_patch_id_idx on bt_patch_bug_map(patch_id);
 create index bt_patch_bug_map_bug_id_idx on bt_patch_bug_map(bug_id);
+
+create table bt_keyword_component_map (
+	keyword_id      integer
+		        constraint bt_component_keyword_fk
+                        references cr_keywords(keyword_id),
+	component_id    integer
+                        constraint bt_patches_components_fk
+                        references bt_components(component_id),
+	constraint bt_keyword_component_map_pk
+	primary key (keyword_id, component_id)
+);
+
+create index bt_keyword_component_map_keyword_idx on bt_keyword_component_map(keyword_id);
+create index bt_keyword_component_map_component_idx on bt_keyword_component_map(component_id);
Index: openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-drop.sql,v
diff -u -r1.1 -r1.1.6.1
--- openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-drop.sql	5 Mar 2003 17:40:06 -0000	1.1
+++ openacs-4/packages/bug-tracker/sql/oracle/bug-tracker-drop.sql	1 Aug 2005 18:33:04 -0000	1.1.6.1
@@ -37,6 +37,7 @@
 drop table bt_bug_revisions;
 drop table bt_default_keywords;
 drop table bt_versions;
+drop table bt_keyword_component_map;
 drop table bt_components;
 drop table bt_projects;
 
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/sql/oracle/upgrade-1.4-1.4.1.sql'.
Fisheye: No comparison available.  Pass `N' to diff?
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 -r1.9.4.2 -r1.9.4.3
--- openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql	30 Mar 2005 18:20:44 -0000	1.9.4.2
+++ openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-create.sql	1 Aug 2005 18:33:04 -0000	1.9.4.3
@@ -20,9 +20,14 @@
                                 references cr_folders(folder_id),
   root_keyword_id               integer
                                 constraint bt_projects_keyword_fk
+                                references cr_keywords(keyword_id),
+  component_keyword_id          integer
+                                constraint bt_component_keyword_fk
                                 references cr_keywords(keyword_id)
 );
 
+
+-- this function (bt_project__new) is deprecated since the project creation in handled as a TCL API
 create or replace function bt_project__new(
     integer                      -- package_id
 ) returns integer 
@@ -35,6 +40,7 @@
     v_creation_ip               varchar;
     v_folder_id                 integer;
     v_keyword_id                integer;
+    v_component_keyword_id      integer;
 begin
     select count(*)
     into   v_count
@@ -814,3 +820,16 @@
 create index bt_patch_bug_map_patch_id_idx on bt_patch_bug_map(patch_id);
 create index bt_patch_bug_map_bug_id_idx on bt_patch_bug_map(bug_id);
 
+create table bt_keyword_component_map (
+	keyword_id      integer
+		        constraint bt_component_keyword_fk
+                        references cr_keywords(keyword_id),
+	component_id    integer
+                        constraint bt_patches_components_fk
+                        references bt_components(component_id),
+	constraint bt_keyword_component_map_pk
+	primary key (keyword_id, component_id)
+);
+
+create index bt_keyword_component_map_keyword_idx on bt_keyword_component_map(keyword_id);
+create index bt_keyword_component_map_component_idx on bt_keyword_component_map(component_id);
Index: openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-drop.sql,v
diff -u -r1.7 -r1.7.4.1
--- openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-drop.sql	29 Sep 2003 03:46:26 -0000	1.7
+++ openacs-4/packages/bug-tracker/sql/postgresql/bug-tracker-drop.sql	1 Aug 2005 18:33:04 -0000	1.7.4.1
@@ -45,6 +45,7 @@
 
 drop table bt_default_keywords;
 
+drop table bt_keyword_component_map;
 drop table bt_components;
 drop table bt_versions;
 drop table bt_projects;
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/sql/postgresql/upgrade-1.4-1.4.1.sql'.
Fisheye: No comparison available.  Pass `N' to diff?
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 -r1.14.2.8 -r1.14.2.9
--- openacs-4/packages/bug-tracker/tcl/bug-procs.tcl	19 Feb 2005 18:24:09 -0000	1.14.2.8
+++ openacs-4/packages/bug-tracker/tcl/bug-procs.tcl	1 Aug 2005 18:33:04 -0000	1.14.2.9
@@ -829,6 +829,19 @@
                  orderby_asc {heading asc, bug_number asc}]
     }
 
+
+    set component_keyword_id [bug_tracker::get_component_keyword -package_id $package_id]
+
+    set distributions [db_list_of_lists get_distributions {}]
+        
+    if {[llength distributions] > 0} {
+        lappend filters f_distribution \
+            [list \
+                 label Distributions \
+                 values $distributions \
+                 where_clause "b.component_id in (select bkcm.component_id from cr_keywords ck, bt_keyword_component_map bkcm where ck.parent_id = :f_distribution and ck.keyword_id = bkcm.keyword_id)"]
+    }
+
     if { [bug_tracker::versions_p] } {
         lappend filters f_fix_for_version {
             label "Fix for version"
Index: openacs-4/packages/bug-tracker/tcl/bug-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/bug-procs.xql,v
diff -u -r1.4.4.3 -r1.4.4.4
--- openacs-4/packages/bug-tracker/tcl/bug-procs.xql	27 Jan 2005 02:29:32 -0000	1.4.4.3
+++ openacs-4/packages/bug-tracker/tcl/bug-procs.xql	1 Aug 2005 18:33:04 -0000	1.4.4.4
@@ -104,5 +104,13 @@
       </querytext>
   </partialquery>
 
+  <fullquery name="bug_tracker::bug::get_list.get_distributions">
+    <querytext>
+        select k.heading, k.keyword_id, (select count(*) from bt_bugs b where b.component_id in (select cm.component_id from bt_keyword_component_map cm where cm.keyword_id in (select kk.keyword_id from cr_keywords kk where kk.parent_id = k.keyword_id))) as num_bugs
+        from   cr_keywords k
+        where  k.parent_id = :component_keyword_id
+    </querytext>
+  </fullquery>
+
 </queryset>
 
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 -r1.25.2.7 -r1.25.2.8
--- openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl	19 Feb 2005 18:24:09 -0000	1.25.2.7
+++ openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.tcl	1 Aug 2005 18:33:04 -0000	1.25.2.8
@@ -115,6 +115,7 @@
         page:optional
         f_state:optional
         f_fix_for_version:optional
+	f_distribution:optional
         f_component:optional
         orderby:optional
         {format "table"}
@@ -137,6 +138,7 @@
     set export_vars {
         f_state
         f_fix_for_version
+	f_distribution
         f_component
         orderby
         format
@@ -1255,6 +1257,7 @@
 	    content::folder::register_content_type -folder_id $folder_id -content_type {bt_bug_revision} -include_subtypes t
 	    
 	    set keyword_id [content::keyword::new -heading "$instance_name"]
+	    set component_keyword_id [content::keyword::new -heading "Components $instance_name"]
 	    
 	    # Inserts into bt_projects
 	    set component_id [db_nextval acs_object_id_seq]
@@ -1335,3 +1338,12 @@
                              -package_id $package_id \
                              -workflow_id $workflow_id]]
 }
+
+ad_proc bug_tracker::get_component_keyword {
+    {-package_id:required}
+} {
+    @param package_id The package (project) to select from
+} {
+    return [db_string get_component_keyword { select component_keyword_id from bt_projects where project_id = :package_id }]
+}
+
Index: openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.xql,v
diff -u -r1.3.4.4 -r1.3.4.5
--- openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.xql	19 Feb 2005 18:24:09 -0000	1.3.4.4
+++ openacs-4/packages/bug-tracker/tcl/bug-tracker-procs.xql	1 Aug 2005 18:33:04 -0000	1.3.4.5
@@ -166,9 +166,9 @@
 <fullquery name="bug_tracker::project_new.bt_projects_insert">
     <querytext>
       insert into bt_projects
-        (project_id, folder_id, root_keyword_id)
+        (project_id, folder_id, root_keyword_id, component_keyword_id)
        values
-         (:project_id, :folder_id, :keyword_id)
+         (:project_id, :folder_id, :keyword_id, :component_keyword_id)
     </querytext>
 </fullquery>
 
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-component-add.adp'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-component-add.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-component-delete.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-delete.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-edit.adp'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distro-edit.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distros-oracle.xql'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distros-postgresql.xql'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distros.adp'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/bug-tracker/www/admin/distros.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: openacs-4/packages/bug-tracker/www/admin/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/admin/index.adp,v
diff -u -r1.6 -r1.6.4.1
--- openacs-4/packages/bug-tracker/www/admin/index.adp	22 Sep 2003 15:45:11 -0000	1.6
+++ openacs-4/packages/bug-tracker/www/admin/index.adp	1 Aug 2005 18:33:04 -0000	1.6.4.1
@@ -85,6 +85,17 @@
   </tr>
   <tr bgcolor="#cccccc">
     <td colspan="3">
+      Distributions
+    </td>
+    <td align="center">
+      <a href="distros"><img src="../graphics/Edit16.gif" width="16" height="16" border="0" alt="Edit"></a>
+    </td>
+    <td align="center">
+      &nbsp;
+    </td>
+  </tr>
+  <tr bgcolor="#cccccc">
+    <td colspan="3">
       Permissions
     </td>
     <td align="center">