Index: openacs-4/packages/xowiki/tcl/form-field-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/form-field-procs.tcl,v diff -u -r1.71 -r1.72 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 21 Apr 2008 10:26:44 -0000 1.71 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 22 Apr 2008 10:57:57 -0000 1.72 @@ -939,8 +939,9 @@ {as_box false} } FormField instproc config_from_form {form_name} { - set form [[my object] resolve_included_page_name $form_name] - if {$form eq ""} {error "Cannot lookup Form '$form_name'"} + my instvar form_obj prefix + set form_obj [[my object] resolve_included_page_name $form_name] + if {$form_obj eq ""} {error "Cannot lookup Form '$form_name'"} set prefix "" regexp {^(//[^/]+/)} $form_name _ prefix @@ -952,21 +953,25 @@ } set items [::xowiki::FormPage get_children \ - -base_item_id [$form item_id] \ + -base_item_id [$form_obj item_id] \ -form_fields [list] \ -publish_status ready \ -always_queried_attributes [list _name _title _last_modified _creation_user] \ -h_where $wc(h) \ - -folder_id [$form parent_id]] - foreach i [$items children] {lappend options [list [$i title] $prefix[$i name]]} + -folder_id [$form_obj parent_id]] + foreach i [$items children] {lappend options [list [$i title] [$i name]]} my options $options } FormField::form_page instproc initialize {} { if {[my exists form]} {my config_from_form [my form]} next } FormField::form_page instproc pretty_value {v} { - set package_id [[my object] package_id] + my instvar form_obj prefix + if {![info exists form_obj]} { + error "No form specified for form_field [my name]" + } + set package_id [$form_obj package_id] if {[my multiple]} { foreach o [my set options] { foreach {label value} $o break @@ -986,7 +991,7 @@ foreach {label value} $o break if {$value eq $v} { if {[my as_box]} { - return [[my object] include [list $value -decoration rightbox]] + return [[my object] include [list $prefix$value -decoration rightbox]] } set href [$package_id pretty_link $value] return "$label" 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 -r1.233 -r1.234 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 21 Apr 2008 10:44:37 -0000 1.233 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 22 Apr 2008 10:57:57 -0000 1.234 @@ -639,8 +639,16 @@ if {[regexp {^/(/.+)$} $page_name _ url]} { # # Handle cross package resolve requests + # # Note, that package::initialize might change the package id. - # + # Preserving the package-url is just necessary, if for some + # reason the same package is initialized here with a different + # url. This could be done probably with a flag to initialize, + # but we get below the object name from the package_id... + # + set last_package_id $package_id + set last_url [$package_id url] + # # TODO: We assume here that the package is an xowiki package. # The package might be as well a subclass of xowiki... # For now, we fixed the problem to perform reclassing in @@ -649,6 +657,7 @@ # ::xowiki::Package initialize -parameter {{-m view}} -url $url \ -actual_query "" + if {$package_id != 0} { # # For the resolver, we create a fresh context to avoid recursive loops, when @@ -673,6 +682,7 @@ set page [$package_id resolve_page $page_name __m] $package_id context $last_context } + $last_package_id set_url -url $last_url if {$page eq ""} { error "Cannot find page '$page_name'" }