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 -N -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 "
" - set importer [Importer new -package_id [my id] -folder_id $folder_id -user_id $user_id] - $importer import_all -replace $replace -objects $objects -create_user_ids $create_user_ids - append msg [$importer report] - } - - # # RSS 2.0 support # Package ad_instproc rss { @@ -1106,6 +1098,10 @@ [self class] [self proc] } + # + # Create new pages + # + Package instproc edit-new {} { my instvar folder_id id set object_type [my query_parameter object_type "::xowiki::Page"] @@ -1138,6 +1134,53 @@ return [$page edit -new true -autoname $autoname] } + # + # manage categories + # + + Package instproc manage-categories {} { + set object_id [my query_parameter object_id] + if {![string is integer -strict $object_id]} { return [my error_msg "No valid object_id provided!"] } + + # flush could be made more precise in the future + [my id] flush_page_fragment_cache -scope agg + + my returnredirect [site_node::get_package_url -package_key categories]cadmin/object-map?ctx_id=$object_id&object_id=$object_id + } + + # + # edit a single category tree + # + + Package instproc edit-category-tree {} { + set object_id [my query_parameter object_id] + if {![string is integer -strict $object_id]} { return [my error_msg "No valid object_id provided!"] } + set tree_id [my query_parameter tree_id] + if {![string is integer -strict $tree_id]} { return [my error_msg "No valid tree_id provided!"] } + + # flush could be made more precise in the future + [my id] flush_page_fragment_cache -scope agg + my returnredirect [site_node::get_package_url -package_key categories]cadmin/tree-view?tree_id=$tree_id&ctx_id=$object_id&object_id=$object_id + } + + + # + # Package import + # + + Package ad_instproc import {-user_id -folder_id {-replace 0} -objects {-create_user_ids 0}} { + import the specified pages into the xowiki instance + } { + if {![info exists folder_id]} {set folder_id [my folder_id]} + if {![info exists user_id]} {set user_id [::xo::cc user_id]} + if {![info exists objects]} {set objects [::xowiki::Page allinstances]} + + set msg "processing objects: $objects
" + set importer [Importer new -package_id [my id] -folder_id $folder_id -user_id $user_id] + $importer import_all -replace $replace -objects $objects -create_user_ids $create_user_ids + append msg [$importer report] + } + Package instproc flush_references {-item_id:integer,required -name:required -parent_id} { my instvar folder_id id if {![info exists parent_id]} {set parent_id $folder_id} @@ -1277,6 +1320,8 @@ rss none google-sitemap none google-sitemapindex none + manage-categories {{id admin}} + edit-category-tree {{id admin}} delete {{id admin}} edit-new { {{has_class ::xowiki::Object} swa} @@ -1327,6 +1372,8 @@ rss none google-sitemap none google-sitemapindex none + manage-categories {{id admin}} + edit-category-tree {{id admin}} delete swa edit-new { {{has_class ::xowiki::Object} swa} @@ -1378,6 +1425,8 @@ rss none google-sitemap none google-sitemapindex none + manage-categories {{id admin}} + edit-category-tree {{id admin}} delete swa edit-new { {{has_class ::xowiki::Object} swa} @@ -1432,6 +1481,8 @@ rss none google-sitemap none google-sitemapindex none + manage-categories {{id admin}} + edit-category-tree {{id admin}} delete swa edit-new { {{has_class ::xowiki::Object} swa} Index: openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl,v diff -u -N -r1.212 -r1.213 --- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 7 Feb 2009 14:48:15 -0000 1.212 +++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 8 Feb 2009 12:58:56 -0000 1.213 @@ -1152,6 +1152,15 @@ $f help_text "" } } + if {[$f name] eq "_name"} { + # never omit _name, this would cause problems with autonames + if {[lsearch [$f info mixin] ::xowiki::formfield::omit] > -1} { + $f remove_omit + $f class ::xowiki::formfield::hidden + $f initialize + } + #my msg "$f [$f name] [$f info class] [$f info mixin]" + } } } @@ -1260,8 +1269,6 @@ #my msg "after save refs=[expr {[my exists references]?[my set references] : {NONE}}]" set redirect_method [my form_parameter __form_redirect_method "view"] -#my msg "__form_redir=$redirect_method" -#my msg "__form params= [::xo::cc array get form_parameter]" if {$redirect_method eq "__none"} { return } else { @@ -1297,9 +1304,12 @@ my load_values_into_form_fields $form_fields foreach f $form_fields {set ff([$f name]) $f } - # for named entries, just set the entry fields to empty, + # For named entries, just set the entry fields to empty, # without changing the instance variables + + #my msg "my is_new_entry [my name] = [my is_new_entry [my name]]" if {[my is_new_entry [my name]]} { + #my msg "anon_instances=$anon_instances" if {$anon_instances} { set name [autoname new -name [$page_template name] -parent_id $page_template] #my msg "generated name=$name, page_template-name=[$page_template name]" Index: openacs-4/packages/xowiki/www/admin/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/index.tcl,v diff -u -N -r1.24 -r1.25 --- openacs-4/packages/xowiki/www/admin/index.tcl 29 Jan 2009 15:05:18 -0000 1.24 +++ openacs-4/packages/xowiki/www/admin/index.tcl 8 Feb 2009 12:58:56 -0000 1.25 @@ -15,7 +15,7 @@ set object_types [$object_type object_types] set return_url [ns_conn url] -set category_url [export_vars -base manage_categories { { object_id $package_id } }] +set category_url [export_vars -base [$package_id package_url] { {manage-categories 1} {object_id $package_id}}] lang::message::lookup "" xowiki.admin " " TableWidget t1 -volatile \ Index: openacs-4/packages/xowiki/www/admin/list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/list.tcl,v diff -u -N -r1.29 -r1.30 --- openacs-4/packages/xowiki/www/admin/list.tcl 29 Jan 2009 15:05:18 -0000 1.29 +++ openacs-4/packages/xowiki/www/admin/list.tcl 8 Feb 2009 12:58:56 -0000 1.30 @@ -35,7 +35,7 @@ set return_url [expr {$per_type ? [export_vars -base [::$package_id url] object_type] : [::$package_id url]}] -set category_url [export_vars -base manage_categories { { object_id $package_id } }] +set category_url [export_vars -base [$package_id package_url] { {manage-categories 1} {object_id $package_id}}] set actions [subst { Action new -label "[lang::message::lookup {} categories.Categories Categories]" \ Index: openacs-4/packages/xowiki/www/admin/manage_categories.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/Attic/manage_categories.tcl,v diff -u -N --- openacs-4/packages/xowiki/www/admin/manage_categories.tcl 29 Jan 2009 15:27:11 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -::xowiki::Package initialize -ad_doc { - Redirector to call categories interface - - @author Gustaf Neumann (gustaf.neumann@wu-wien.ac.at) - @creation-date January 2009 - @cvs-id $Id: manage_categories.tcl,v 1.1 2009/01/29 15:27:11 gustafn Exp $ - - @param object_id -} -parameter { - {-object_id:required} -} - -# -# The primary prupose of this miniscript is the make sure to flush the -# page fragement cache of categories, when categories are edited; -# better would be some kind of callback from categories. -# -# flush could be made in the future more precise -# -$package_id flush_page_fragment_cache -scope agg - -ad_returnredirect [site_node::get_package_url -package_key categories]cadmin/object-map?ctx_id=$object_id&object_id=$object_id -