Index: openacs-4/packages/xowiki/www/portlets/categories-recent.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/portlets/Attic/categories-recent.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/xowiki/www/portlets/categories-recent.tcl 18 Apr 2006 00:06:14 -0000 1.4 +++ openacs-4/packages/xowiki/www/portlets/categories-recent.tcl 3 May 2006 12:03:23 -0000 1.5 @@ -6,48 +6,54 @@ # tree_name: match pattern, if specified displays only the trees with matching names # max_entries: show given number of new entries -if {![info exists max_entries]} {set max_entries 10} +::xowiki::Page proc __render_html { + -folder_id + -max_entries + -tree_name +} { + set cattree [::xowiki::CatTree new -volatile -name "categories-recent"] + set package_id [$folder_id set package_id] -# get the folder id from the including page -set folder_id [$__including_page set parent_id] -set package_id [$folder_id set package_id] -set cattree [::xowiki::CatTree new -volatile -name "categories-recent"] - -## provide also a three level display with tree names? - -foreach tree [category_tree::get_mapped_trees $package_id] { - foreach {tree_id my_tree_name ...} $tree {break} - if {[info exists tree_name] && ![string match $tree_name $my_tree_name]} continue - lappend trees $tree_id + foreach tree [category_tree::get_mapped_trees $package_id] { + foreach {tree_id my_tree_name ...} $tree {break} + if {$tree_name ne "" && ![string match $tree_name $my_tree_name]} continue + lappend trees $tree_id + } + if {[info exists trees]} { + set tree_select_clause "and c.tree_id in ([join $trees ,])" + } else { + set tree_select_clause "" + } + + db_foreach get_pages \ + "select c.category_id, i.name, r.title, \ + to_char(r.publish_date,'YYYY-MM-DD HH24:MI:SS') as publish_date \ + from category_object_map_tree c, cr_items i, cr_revisions r, xowiki_page p \ + where c.object_id = i.item_id and i.parent_id = $folder_id \ + and r.revision_id = i.live_revision \ + and p.page_id = r.revision_id $tree_select_clause \ + order by r.publish_date desc limit $max_entries + " { + if {$title eq ""} {set title $name} + set itemobj [Object new] + set prefix "$publish_date " + set suffix "" + foreach var {name title prefix suffix} {$itemobj set $var [set $var]} + if {![info exists categories($category_id)]} { + set categories($category_id) [::xowiki::Category new \ + -label [category::get_name $category_id]\ + -level 1] + $cattree add $categories($category_id) + } + $cattree add_to_category -category $categories($category_id) -itemobj $itemobj + } + return [$cattree render] } -if {[info exists trees]} { - set tree_select_clause "and c.tree_id in ([join $trees ,])" -} else { - set tree_select_clause "" -} -db_foreach get_pages \ - "select c.category_id, r.title, p.page_title, \ - to_char(r.publish_date,'YYYY-MM-DD HH24:MI:SS') as publish_date \ - from category_object_map_tree c, cr_items i, cr_revisions r, xowiki_page p \ - where c.object_id = i.item_id and i.parent_id = $folder_id \ - and r.revision_id = i.live_revision \ - and p.page_id = r.revision_id $tree_select_clause \ - order by r.publish_date desc limit $max_entries - " { - if {$page_title eq ""} {set page_title $title} - set itemobj [Object new] - set prefix "$publish_date " - set suffix "" - foreach var {title page_title prefix suffix} {$itemobj set $var [set $var]} - if {![info exists categories($category_id)]} { - set categories($category_id) [::xowiki::Category new \ - -label [category::get_name $category_id]\ - -level 1] - $cattree add $categories($category_id) - } - $cattree add_to_category -category $categories($category_id) -itemobj $itemobj - } - -set content [$cattree render] +set content [::xowiki::Page __render_html \ + -max_entries [expr {[info exists max_entries] ? $max_entries : 10}] \ + -tree_name [expr {[info exists tree_name] ? $tree_name : ""}] \ + -folder_id [$__including_page set parent_id] \ + ] +if {![info exists name]} {set name "Recently Changed Pages by Categories"} set link ""