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.130 -r1.131 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 10 Feb 2009 18:58:51 -0000 1.130 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 12 Feb 2009 15:07:15 -0000 1.131 @@ -1397,7 +1397,7 @@ } abstract_page instproc pretty_value {v} { - my instvar package_prefix package_id + my instvar package_id if {[my multiple]} { foreach o [my set options] { @@ -1408,7 +1408,7 @@ set values [list] foreach i $v { if {[catch {lappend values $labels($i)}]} { - my msg "can't determine label for value '$i'" + my msg "can't determine label for value '$i' (values=$v, l=[array names labels])" lappend values $i } } @@ -1418,7 +1418,7 @@ foreach {label value} $o break if {$value eq $v} { if {[my as_box]} { - return [[my object] include [list $package_prefix$value -decoration rightbox]] + return [[my object] include [list $value -decoration rightbox]] } set href [$package_id pretty_link $value] return "$label" @@ -1437,33 +1437,51 @@ {where} } form_page instproc compute_options {} { - my instvar form_obj package_prefix where + my instvar form_obj where #my msg "[my name] compute_options [my exists form]" if {![my exists form]} { return } set form_name [my form] + set package_id [[my object] package_id] + set form_objs [::xowiki::Weblog instantiate_forms \ + -default_lang [[my object] lang] \ + -entries_of $form_name -package_id $package_id] - set form_obj [[my object] resolve_included_page_name $form_name] - if {$form_obj eq ""} {error "Cannot lookup Form '$form_name'"} + #set form_obj [[my object] resolve_included_page_name $form_name] + if {$form_objs eq ""} {error "Cannot lookup Form '$form_name'"} + + set form_object_item_ids [list] + foreach form_obj $form_objs {lappend form_object_item_ids [$form_obj item_id]} - set package_prefix "" - regexp {^(//[^/]+/)} $form_name _ package_prefix - array set wc {tcl true h "" vars "" sql ""} if {[info exists where]} { array set wc [::xowiki::FormPage filter_expression $where &&] #my msg "where '$where' => wc=[array get wc]" } set options [list] set items [::xowiki::FormPage get_form_entries \ - -base_item_id [$form_obj item_id] \ + -base_item_ids $form_object_item_ids \ -form_fields [list] \ -publish_status ready \ - -always_queried_attributes [list _name _title _last_modified _creation_user] \ + -always_queried_attributes [list _name _title _last_modified _creation_user _object_package_id] \ -h_where [array get wc] \ - -package_id [$form_obj package_id]] - foreach i [$items children] {lappend options [list [$i title] [$i name]]} + -package_id $package_id] + foreach i [$items children] { + # + # If the form_page has a different package_id, prepend the + # package_url to the name. TODO: We assume here, that the form_pages + # have not special parent_id. + # + set object_package_id [$i set object_package_id] + if {$package_id != $object_package_id} { + set package_prefix /[$object_package_id package_url] + } else { + set package_prefix "" + } + + lappend options [list [$i title] $package_prefix[$i name]] + } my options $options } @@ -1487,10 +1505,7 @@ {glob} } page instproc compute_options {} { - my instvar type with_subtypes glob package_prefix - # We could use the package_prefix like in form_page when refering to pages - # in different packages. - set package_prefix "" + my instvar type with_subtypes glob set extra_where_clause "" if {[my exists glob]} { 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.98 -r1.99 --- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 10 Feb 2009 10:58:38 -0000 1.98 +++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 12 Feb 2009 15:07:15 -0000 1.99 @@ -1820,41 +1820,24 @@ toc instproc yui_tree {pages open_page package_id expand_all remove_levels} { my instvar navigation page_name book_mode - array set navigation {parent "" position 0 current ""} set js "" set node() root set node_cnt 0 #my log "--book read [llength [$pages children]] pages" + #append js "$node().expand();\n" foreach o [$pages children] { - $o instvar page_order title page_id name + $o instvar page_order title name set label "[my page_number $page_order $remove_levels] $title" set id tmpNode[incr node_cnt] set node($page_order) $id - set jsobj [my js_name].objs\[$node_cnt\] + set jsobj [my js_name].objs\[$node_cnt\] + set href [my href $package_id $book_mode $name] + set expand [expr {[my exists open_node($page_order)]}] - set page_name($node_cnt) $name if {![regexp {^(.*)[.]([^.]+)} $page_order _ parent]} {set parent ""} - - set href [my href $package_id $book_mode $name] - - if {$expand_all} { - set expand "true" - } else { - set expand [expr {$open_page eq $name} ? "true" : "false"] - if {$expand} { - set navigation(parent) $parent - set navigation(position) $node_cnt - set navigation(current) $page_order - for {set p $parent} {$p ne ""} {} { - if {![info exists node($p)]} break - append js "$node($p).expand();\n" - if {![regexp {^(.*)[.]([^.]+)} $p _ p]} {set p ""} - } - } - } set parent_node [expr {[info exists node($parent)] ? $node($parent) : "root"}] set refvar [expr {[my set ajax] ? "ref" : "href"}] regsub -all {\"} $label {\"} label @@ -1865,8 +1848,6 @@ "" } - set navigation(count) $node_cnt - #my log "--COUNT=$node_cnt" return $js } @@ -2000,7 +1981,7 @@ " } - toc instproc tree {js_tree_cmds} { + toc instproc non_ajax_tree {js_tree_cmds} { return "