Index: openacs-4/packages/categories/www/cadmin/category-usage.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/categories/www/cadmin/category-usage.tcl,v diff -u -r1.10.2.4 -r1.10.2.5 --- openacs-4/packages/categories/www/cadmin/category-usage.tcl 20 Dec 2019 21:18:10 -0000 1.10.2.4 +++ openacs-4/packages/categories/www/cadmin/category-usage.tcl 9 Mar 2021 13:53:19 -0000 1.10.2.5 @@ -2,13 +2,6 @@ Show all objects mapped to a category. - apisano 2019-03-15: note that objects will be correctly displayed - here only if one takes care of maintaining the corresponding - records in acs_named_objects, as explained in - /doc/tutorial-categories and /categories/doc/o. To my knowledge, - the only package where this actually happened is the FAQ... Why - was acs_objects.title not enough of a name? - @author Timo Hentschel (timo@timohentschel.de) @cvs-id $Id$ } { @@ -22,7 +15,6 @@ page_title:onevalue context_bar:onevalue locale:onevalue - url_vars:onevalue object_count:onevalue page_count:onevalue page:onevalue @@ -41,26 +33,37 @@ set tree_name [category_tree::get_name $tree_id $locale] set category_name [category::get_name $category_id $locale] set page_title "Objects using category \"$category_name\" of tree \"$tree_name\"" -set url_vars [export_vars -no_empty {category_id tree_id locale object_id}] -set context_bar [category::context_bar $tree_id $locale [expr {[info exists object_id] ? $object_id : ""}]] +set context_bar [category::context_bar $tree_id $locale \ + [expr {[info exists object_id] ? $object_id : ""}]] lappend context_bar "\"$category_name\" Usage" -template::list::create -name items_list -multirow items \ - -html {align center} \ +set rows_per_page 20 + +template::list::create \ + -name items_list \ + -multirow items \ + -key object_id \ + -page_size $rows_per_page \ + -page_groupsize 10 \ + -page_flush_p true \ + -page_query { + select m.object_id + from category_object_map m, acs_objects o + where acs_permission.permission_p(m.object_id, :user_id, 'read') = 't' + and m.category_id = :category_id + and o.object_id = m.object_id + [template::list::orderby_clause -orderby -name items_list] + } \ -elements { object_name { label "Object Name" - display_template { - @items.object_name@ - } - orderby {n.object_name} + link_url_col object_url + orderby {o.title} } instance_name { label "Package" - display_template { - @items.instance_name@ - } + link_url_col package_url html {align right} } package_type { @@ -74,37 +77,32 @@ } \ -filters {tree_id {} category_id {}} -set order_by_clause [template::list::orderby_clause -orderby -name items_list] - -set p_name "category-usage" -request create -request set_param page -datatype integer -value 1 - -# execute query to count objects and pages -paginator create get_category_usages $p_name { - select n.object_id - from category_object_map m, acs_named_objects n - where acs_permission.permission_p(m.object_id, :user_id, 'read') = 't' - and m.category_id = :category_id - and n.object_id = m.object_id -} -pagesize 20 -groupsize 10 -contextual -timeout 0 - -set first_row [paginator get_row $p_name $page] -set last_row [paginator get_row_last $p_name $page] - # execute query to get the objects on current page -db_multirow items get_objects_using_category {} {} +db_multirow -extend { + object_url + package_url +} items get_objects_using_category [subst { + select o.object_id, + o.title as object_name, + o.creation_date, + (select pretty_name + from apm_package_types + where package_key = p.package_key) as package_type, + o.package_id, + p.instance_name + from acs_objects o, + apm_packages p + where p.package_id = o.package_id + [template::list::page_where_clause -name items_list -and] + [template::list::orderby_clause -orderby -name items_list] +}] { + set object_url /o/${object_id} + set package_url /o/${package_id} +} -paginator get_display_info $p_name info $page -set group [paginator get_group $p_name $page] -paginator get_context $p_name pages [paginator get_pages $p_name $group] -paginator get_context $p_name groups [paginator get_groups $p_name $group 10] +set object_count [template::list::get_rowcount -name items_list] +set page_count [expr {int($object_count / $rows_per_page) + 1}] -set object_count [paginator get_row_count $p_name] -set page_count [paginator get_page_count $p_name] - -ad_return_template - # Local variables: # mode: tcl # tcl-indent-level: 4