Index: openacs-4/packages/xowiki/tcl/weblog-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/weblog-procs.tcl,v diff -u -r1.5 -r1.6 --- openacs-4/packages/xowiki/tcl/weblog-procs.tcl 3 Jan 2007 20:36:12 -0000 1.5 +++ openacs-4/packages/xowiki/tcl/weblog-procs.tcl 15 Jan 2007 11:41:59 -0000 1.6 @@ -42,8 +42,8 @@ #append extra_where_clause "and c.object_id = ci.item_id and c.category_id = $category_id " #append extra_from_clause ",category_object_map c " foreach cid [split $category_id ,] { - append extra_where_clause "and exists (select * from category_object_map \ - where object_id = ci.item_id and category_id = $cid)" + append extra_where_clause "and exists (select * from category_object_map \ + where object_id = ci.item_id and category_id = $cid)" lappend cnames [::category::get_name $cid] } append extra_from_clause "" Index: openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/Attic/xowiki-portlet-procs.tcl,v diff -u -r1.18 -r1.19 --- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 12 Jan 2007 14:10:44 -0000 1.18 +++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 15 Jan 2007 11:41:59 -0000 1.19 @@ -32,6 +32,30 @@ return [list $locale $locale_clause] } + ::xowiki::Portlet instproc category_clause {category_spec {item_ref p.item_id}} { + # the category_spec has the syntax "a,b,c|d,e", where the values are category_ids + # pipe symbols are or-operations, commas are and-operations; + # no parenthesis are permitted + set extra_where_clause "" + set or_names [list] + set ors [list] + foreach cid_or [split $category_spec |] { + set ands [list] + set and_names [list] + foreach cid_and [split $cid_or ,] { + lappend and_names [::category::get_name $cid_and] + lappend ands "exists (select 1 from category_object_map \ + where object_id = p.item_id and category_id = $cid_and)" + } + lappend or_names "[join $and_names { and }]" + lappend ors "([join $ands { and }])" + } + set cnames "[join $or_names { or }]" + set extra_where_clause "and ([join $ors { or }])" + my log "--cnames $category_spec -> $cnames" + return [list $cnames $extra_where_clause] + } + } namespace eval ::xowiki::portlet { @@ -42,9 +66,11 @@ my instvar package_id name title set class [namespace tail [my info class]] set id [expr {[my exists id] ? "id='[my id]'" : ""}] - set link [expr {[string match "*:*" $name] ? [$package_id pretty_link $name] : ""}] + set link [expr {[string match "*:*" $name] ? + "$title" : + $title}] return "