Index: openacs-4/packages/xowiki/tcl/includelet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/includelet-procs.tcl,v diff -u -r1.94 -r1.95 --- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 7 Feb 2009 14:39:28 -0000 1.94 +++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 8 Feb 2009 12:58:56 -0000 1.95 @@ -633,25 +633,40 @@ }} } - - categories instproc category_tree_missing {{-name ""} -object_id -locale {-allow_edit false}} { + categories instproc category_tree_edit_button {-object_id:integer -locale {-allow_edit false} -tree_id:integer} { + set allow_p [::xo::cc permission -object_id $object_id -privilege admin -party_id [::xo::cc set untrusted_user_id]] + if {$allow_edit && $allow_p} { + if {[info exists tree_id]} { + # + # If a tree_id is given, edit directly the category tree ... + # + set href "[[my package_id] package_url]?edit-category-tree&object_id=$object_id&tree_id=$tree_id" + return [[my set __including_page] include \ + [list edit-item-button -link $href -title "Edit Category Tree" -target _blank]] + } else { + # + # ... otherwise, manage categories (allow defining new category trees, map/unmap, etc.) + # + set href "[[my package_id] package_url]?manage-categories&object_id=$object_id" + return [[my set __including_page] include \ + [list edit-item-button -link $href -title "Manage Categories" -target _blank]]] + } + } + return "" + } + categories instproc category_tree_missing {{-name ""} -edit_html} { # todo i18n - # next steps: handle allow_edit for cases, where category tree was found if {$name eq ""} { set msg "No category tree found." } else { set msg "No category tree with name '$name' found." } [my package_id] flush_page_fragment_cache -scope agg - set allow_p [::xo::cc permission -object_id $object_id -privilege admin -party_id [::xo::cc user_id]] - if {$allow_edit && $allow_p} { - set href "admin/manage_categories?object_id=$object_id" - set html [[my set __including_page] include [list edit-item-button -link $href]] - return "
$msg
Manage Categories? $html" - } else { - my log $msg - return "
$msg
" + set html
$msg
+ if {$edit_html ne ""} { + return "$html Manage Categories? $edit_html" } + return $html } categories instproc render {} { @@ -682,14 +697,21 @@ } } + set edit_html [my category_tree_edit_button -object_id $package_id -allow_edit $allow_edit] if {[llength $trees] == 0} { - return [my category_tree_missing -name $tree_name -object_id $package_id -locale $locale -allow_edit $allow_edit] + return [my category_tree_missing -name $tree_name -edit_html $edit_html] } foreach tree $trees { foreach {tree_id my_tree_name ...} $tree {break} + + set edit_html [my category_tree_edit_button -object_id $package_id -allow_edit $allow_edit -tree_id $tree_id] + #append content "
$edit_html
\n" + if {!$no_tree_name} { - append content "

$my_tree_name

" + append content "

$my_tree_name $edit_html

" + } elseif {$edit_html ne ""} { + append content "$edit_html
" } set categories [list] set pos 0 @@ -708,9 +730,16 @@ lappend categories $cid } + if {[llength $categories] == 0} { + return $content + } + if {[info exists ordered_composite]} { set items [list] foreach c [$ordered_composite children] {lappend items [$c item_id]} + + # If we have no item, provide a dummy one to avoid sql error + # later if {[llength $items]<1} {set items -4711} if {$count} { @@ -2335,6 +2364,7 @@ -page_order -object_type -source_item_id + {-target ""} } { set html "" if {![info exists return_url] || $return_url eq ""} {set return_url [$package_id url]} @@ -2351,7 +2381,11 @@ } if {$link ne ""} { set button_class [namespace tail [my info class]] - set html " " + set props "" + if {$alt ne ""} {append props "alt=\"$alt\" "} + if {$title ne ""} {append props "title=\"$title\" "} + if {$target ne ""} {append props "target=\"$target\" "} + set html " " } return $html } @@ -2364,6 +2398,7 @@ {-alt "edit"} {-book_mode false} {-link ""} + {-target ""} }} } @@ -2373,15 +2408,15 @@ set page [expr {[info exists page_id] ? $page_id : $__including_page}] if {[$page istype ::xowiki::FormPage]} { set template [$page page_template] - set title "$title [$template title] [$page name]" + #set title "$title [$template title] [$page name]" } if {$book_mode} { append return_url #[toc anchor [$page name]] } return [my render_button \ -page $page -method edit -package_id $package_id -link $link \ - -title $title -alt $alt -return_url $return_url] + -title $title -alt $alt -return_url $return_url -target $target] } ::xowiki::IncludeletClass create delete-item-button \