Index: openacs-4/packages/dotlrn-catalog/lib/course-chunk.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/lib/course-chunk.xql,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/dotlrn-catalog/lib/course-chunk.xql	19 Feb 2005 02:32:07 -0000	1.3
+++ openacs-4/packages/dotlrn-catalog/lib/course-chunk.xql	21 Feb 2005 19:22:12 -0000	1.4
@@ -3,7 +3,7 @@
 
     <fullquery name="get_category">
         <querytext>
-	     select 1 from category_object_map where object_id = :course_id
+	     select count(object_id) from category_object_map where object_id = :course_id
         </querytext>
     </fullquery>
 
Index: openacs-4/packages/dotlrn-catalog/lib/tree-chunk.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/lib/tree-chunk.adp,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/dotlrn-catalog/lib/tree-chunk.adp	19 Feb 2005 02:32:07 -0000	1.2
+++ openacs-4/packages/dotlrn-catalog/lib/tree-chunk.adp	21 Feb 2005 19:22:12 -0000	1.3
@@ -1,12 +1,11 @@
 <br>
 <table cellpadding="3" cellspacing="3">
   <tr>
-    <td class="list-filter-pane" valign="top">
+    <td class="list-filter-pane-big" valign="top">
         <listfilters name="course_list"></listfilters>
     </td>
     <td valign="top">
 	<listtemplate name=course_list></listtemplate>
     </td>
   </tr>
 </table>
-
Index: openacs-4/packages/dotlrn-catalog/lib/tree-chunk.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/lib/tree-chunk.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/dotlrn-catalog/lib/tree-chunk.tcl	19 Feb 2005 03:43:11 -0000	1.3
+++ openacs-4/packages/dotlrn-catalog/lib/tree-chunk.tcl	21 Feb 2005 19:22:12 -0000	1.4
@@ -7,25 +7,68 @@
 } {
     category_f:optional
     uncat_f:optional
+    { level "" }
 }
 
+if { [info exist category_f] } {
+    set var_list [split $category_f "&"]
+    set category_v [lindex $var_list 0]
+    set level [lindex [split [lindex $var_list 1] "="] 1]
+} else {
+    set category_v ""
+}
+
+
 # Get all tree categories
 set tree_list [category_tree::get_tree -all $tree_id]
+set tree_length [llength $tree_list]
 
 # Create a list of values for the list filter
 set tree [list]
+
 foreach element $tree_list {
     set ident [lindex $element 3]
     set spacer ""
     for { set i 1 } { $i < $ident } { incr i } {
 	append spacer ". . "
     }
-    lappend tree [list "${spacer}[lindex "$element" 1]" [lindex $element 0]]
+    lappend tree [list "${spacer}[lindex "$element" 1]" "[lindex $element 0]&level=[lindex $element 3]" ]
 }
 
-# Get all objects_ids and category_id
-set cat_obj_list [dotlrn_catalog::get_categories_from_tree -tree_id $tree_id]
+# Get all sub categories
+set map_tree "("
+if { ![string equal $level ""] } {
+    set j 0
+    set i 0
+    while { $i < $tree_length } {
+	set element [lindex $tree_list $i]
+	if {[string equal $category_v [lindex $element 0]] } {
+	    append map_tree "[lindex $element 0],"
+	    set pos $i
+	    set i $tree_length
+	}
+	incr i
+    }
+    set j 0
+    set i [expr $pos + 1]
+    while { $i < $tree_length } {
+	set element [lindex $tree_list $i]
+	if { $level < [lindex $element 3] } {
+	    append map_tree "[lindex $element 0],"
+	    incr i
+	} else {
+	    set i $tree_length
+	}
+    }
+    append map_tree "0)"
+}
 
+if { [string equal $category_v ""] } {
+    set where_query "dc.course_id in ( select object_id from category_object_map_tree where tree_id = :tree_id )" 
+} else {
+    set where_query "dc.course_id in ( select object_id from category_object_map_tree where tree_id = :tree_id and category_id in $map_tree )"
+}
+
 template::list::create \
     -name course_list \
     -multirow course_list \
@@ -34,7 +77,7 @@
 	category_f {
 	    label "[_ dotlrn-catalog.categories]"
 	    values { $tree }
-	    where_clause { dc.course_id in ( select object_id from category_object_map where category_id = :category_f )}
+	    where_clause { $where_query }
 	}
 	uncat_f {
 	    label "[_ dotlrn-catalog.uncat]"
Index: openacs-4/packages/dotlrn-catalog/tcl/apm-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/tcl/apm-callback-procs.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/dotlrn-catalog/tcl/apm-callback-procs.tcl	14 Feb 2005 22:46:11 -0000	1.1
+++ openacs-4/packages/dotlrn-catalog/tcl/apm-callback-procs.tcl	21 Feb 2005 19:22:13 -0000	1.2
@@ -84,7 +84,7 @@
 } {
     # To categorize courses
     set tree_id [category_tree::add -name "dotlrn-course-catalog"]
-    category_tree::map -tree_id $tree_id -object_id $package_id -assign_single_p "t"
+    category_tree::map -tree_id $tree_id -object_id $package_id
 }
 
 ad_proc -private dotlrn-catalog::package_uninstall {
Index: openacs-4/packages/dotlrn-catalog/www/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/www/index.adp,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/dotlrn-catalog/www/index.adp	14 Feb 2005 22:55:39 -0000	1.2
+++ openacs-4/packages/dotlrn-catalog/www/index.adp	21 Feb 2005 19:22:13 -0000	1.3
@@ -1,6 +1,15 @@
 <master>
 <property name=title>@page_title@</property>
 <property name="context">@context;noquote@</property>
+
+<STYLE TYPE="text/css">
+td.list-filter-pane-big {
+  background-color: #ddddff;
+  vertical-align: top;
+  font-size: 13px;
+}
+</STYLE>
+
 <if @create_p@ eq 1>
     <div align="right"><a href="dt-admin/course-list"><img border=0 src=images/admin.gif></a></div>
 </if>
Index: openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.adp,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.adp	16 Feb 2005 22:21:30 -0000	1.3
+++ openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.adp	21 Feb 2005 19:22:13 -0000	1.4
@@ -19,4 +19,5 @@
 <br>
 <listtemplate name=course_list></listtemplate>
 
-</center>
\ No newline at end of file
+</center>
+
Index: openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.tcl	16 Feb 2005 22:21:30 -0000	1.4
+++ openacs-4/packages/dotlrn-catalog/www/dt-admin/course-list.tcl	21 Feb 2005 19:22:13 -0000	1.5
@@ -131,5 +131,11 @@
     set item_id [dotlrn_catalog::get_item_id -revision_id $course_id]
     set creation_user [dotlrn_catalog::get_creation_user -object_id $item_id]
     set rel [dotlrn_catalog::has_relation -course_id $course_id]
-    set category_name "[category::get_name [category::get_mapped_categories $course_id]]"
-}
\ No newline at end of file
+    set category_name ""
+    set mapped [category::get_mapped_categories $course_id]
+    foreach element $mapped {
+	append category_name "[category::get_name $element], "
+    }
+    set category_name [string range $category_name 0 [expr [string length $category_name] - 3]]
+}
+
Index: openacs-4/packages/dotlrn-catalog/www/dt-admin/revision-list.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-catalog/www/dt-admin/revision-list.adp,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/dotlrn-catalog/www/dt-admin/revision-list.adp	16 Feb 2005 00:22:12 -0000	1.2
+++ openacs-4/packages/dotlrn-catalog/www/dt-admin/revision-list.adp	21 Feb 2005 19:22:13 -0000	1.3
@@ -5,5 +5,7 @@
 
 <multiple name="course_list">
     <include src="/packages/dotlrn-catalog/lib/course-chunk" course_id=@course_list.course_id@ course_key=@course_list.course_key@ name=@course_list.course_name@ info=@course_list.course_info@ asm=@course_list.asm_name@ rel=@course_list.rel@ return_url=@return_url@ edit=no live_revision=@course_list.live_revision@ revision=yes>
+<br>
+<hr>
 </multiple>