Index: openacs-4/packages/xowiki/tcl/folder-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/folder-procs.tcl,v diff -u -N -r1.13 -r1.14 --- openacs-4/packages/xowiki/tcl/folder-procs.tcl 20 Aug 2012 09:18:49 -0000 1.13 +++ openacs-4/packages/xowiki/tcl/folder-procs.tcl 10 Sep 2012 07:59:11 -0000 1.14 @@ -537,20 +537,21 @@ -folder_id $current_folder_id \ -object_types [my types_to_show] \ -extra_where_clause $extra_where_clause] - - + set package_id [::xo::cc package_id] set pkg ::$package_id set url [::xo::cc url] $pkg get_lang_and_name -default_lang "" -name [$current_folder name] lang name set folder [$pkg folder_path -parent_id [$current_folder parent_id]] + set folder_ids [$items set folder_ids] foreach c [$items children] { set name [$c name] set page_link [::$package_id pretty_link \ -parent_id $logical_folder_id \ - -context_url $url $name] - + -context_url $url \ + -folder_ids $folder_ids \ + $name] array set icon [$c render_icon] if {[catch {set prettyName [$c pretty_name]} errorMsg]} { Index: openacs-4/packages/xowiki/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v diff -u -N -r1.257 -r1.258 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 4 Sep 2012 09:40:22 -0000 1.257 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 10 Sep 2012 07:59:11 -0000 1.258 @@ -239,7 +239,7 @@ return "" } - Package instproc folder_path {{-parent_id ""} {-context_url ""}} { + Package instproc folder_path {{-parent_id ""} {-context_url ""} {-folder_ids ""}} { # # handle different parent_ids # @@ -253,27 +253,44 @@ # # if { $context_url ne {} } { - set parts [lreverse [split $context_url {/}]] - set index 0 + set parts [split $context_url /] + set index [expr {[llength $parts]-1}] } + if { $context_url ne {} } { + set context_id [my get_parent_and_name -path $context_url -lang "" -parent_id $parent_id parent local_name] + #my msg "context_url $context_url folder_ids $folder_ids context_id $context_id" + } + set path "" while {1} { set fo [::xo::db::CrClass get_instance_from_db -item_id $parent_id] if { $context_url ne {} } { - set context_name [lindex $parts $index] - #my msg "context_url $context_url, parts $parts, context_name $context_name" - if { [$fo name] ne $context_name } { - set context_folder [my get_page_from_name -assume_folder true -name $context_name] - if {$context_folder eq ""} { - my msg "my get_page_from_name -assume_folder true -name $context_name ==> '$context_folder'" - my msg "Cannot lookup name in package folder" - } - #my msg "context_name [$context_folder serialize]" - set context_id [$context_folder item_id] - set fo [::xo::db::CrClass get_instance_from_db -item_id $context_id] - } - incr index + set context_name [lindex $parts $index] + if {1 && $parent_id in $folder_ids} { + #my msg "---- parent $parent_id in $folder_ids" + set context_id [$context_id item_id] + set fo [::xo::db::CrClass get_instance_from_db -item_id $context_id] + } else { + #my msg "context_url $context_url, parts $parts, context_name $context_name // parts $parts // index $index / folder $fo" + + if { [$fo name] ne $context_name } { + set context_folder [my get_page_from_name -parent_id $parent_id -assume_folder true -name $context_name] + if {$context_folder eq ""} { + my msg "my get_page_from_name -parent_id $parent_id -assume_folder true -name $context_name ==> EMPTY" + my msg "Cannot lookup '$context_name' in package folder $parent_id [$parent_id name]" + + set new_path [join [lrange $parts 0 $index] /] + set p2 [my get_parent_and_name -path [join [lrange $parts 0 $index] /] -lang "" -parent_id $parent_id parent local_name] + my msg "p2=$p2 new_path=$new_path '$local_name' ex=[nsf::object::exists $p2] [$p2 name]" + + } + my msg "context_name [$context_folder serialize]" + set context_id [$context_folder item_id] + set fo [::xo::db::CrClass get_instance_from_db -item_id $context_id] + } + incr index -1 + } } #my get_lang_and_name -name [$fo name] lang stripped_name @@ -316,6 +333,7 @@ {-parent_id ""} {-download false} {-context_url ""} + {-folder_ids ""} name } { Generate a (minimal) link to a wiki page with the specified name. @@ -357,7 +375,7 @@ } #set encoded_name [string map [list %2d - %5f _ %2e .] [ns_urlencode $name]] - set folder [my folder_path -parent_id $parent_id -context_url $context_url] + set folder [my folder_path -parent_id $parent_id -context_url $context_url -folder_ids $folder_ids] #my msg "folder_path = $folder, default_lang [my default_language]" # if {$folder ne ""} { Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -N -r1.457 -r1.458 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 5 Sep 2012 07:41:43 -0000 1.457 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 10 Sep 2012 07:59:11 -0000 1.458 @@ -3192,6 +3192,7 @@ set publish_status_clause [::xowiki::Includelet publish_status_clause $publish_status] set result [::xo::OrderedComposite new -destroy_on_cleanup] + $result set folder_ids "" set list_of_folders [list $folder_id] set inherit_folders [FormPage get_super_folders $package_id $folder_id] @@ -3206,6 +3207,8 @@ } } + $result set folder_ids $list_of_folders + foreach folder_id $list_of_folders { foreach object_type $object_types { set attributes [list revision_id creation_user title parent_id page_order \