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.149 -r1.150 --- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 11 Jun 2010 11:46:27 -0000 1.149 +++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 14 Jun 2010 11:29:44 -0000 1.150 @@ -1583,18 +1583,26 @@ set refs [list] # The same image might be linked both, as img or file on one page, # so we need DISTINCT. - db_foreach [my qn get_references] "SELECT DISTINCT page,ci.name,f.package_id \ - from xowiki_references,cr_items ci,cr_folders f \ - where reference=$item_id and ci.item_id = page and ci.parent_id = f.folder_id" { - ::xowiki::Package require $package_id - lappend refs "$name" + + db_foreach [my qn get_references] "SELECT DISTINCT page,ci.name,ci.parent_id,o.package_id as pid \ + from xowiki_references,cr_items ci,acs_objects o \ + where reference=$item_id and ci.item_id = page and ci.item_id = o.object_id" { + if {$pid eq ""} { + # in version less then oacs 5.2, this returns empty + set pid [db_string _ "select package_id from cr_folders where folder_id = :parent_id"] + } + if {$pid ne ""} { + ::xowiki::Package require $pid + lappend refs "$name" + } } set references [join $refs ", "] array set lang {found "" undefined ""} foreach i [$__including_page array names lang_links] { set lang($i) [join [$__including_page set lang_links($i)] ", "] } + append references " " $lang(found) set result "" if {$references ne " "} { @@ -1620,12 +1628,20 @@ set item_id [$__including_page item_id] set refs [list] - db_foreach [my qn get_references] "SELECT reference,ci.name,f.package_id,ci.parent_id \ - from xowiki_references,cr_items ci,cr_folders f \ - where page=$item_id and ci.item_id = reference and ci.parent_id = f.folder_id" { - ::xowiki::Package require $package_id - lappend refs "$name" + + db_foreach [my qn get_refers] "SELECT DISTINCT reference,ci.name,ci.parent_id,o.package_id as pid \ + from xowiki_references,cr_items ci,acs_objects o \ + where page=$item_id and ci.item_id = reference and ci.item_id = o.object_id" { + if {$pid eq ""} { + # in version less then oacs 5.2, this returns empty + set pid [db_string _ "select package_id from cr_folders where folder_id = :parent_id"] + } + if {$pid ne ""} { + ::xowiki::Package require $pid + lappend refs "$name" + } } + set references [join $refs ", "] array set lang {found "" undefined ""} @@ -3188,7 +3204,8 @@ set form_package_id [$form package_id] ::xowiki::Package require $form_package_id set obj [form-menu-button-$button new -volatile -package_id $package_id \ - -base [$form_package_id pretty_link [$form name]] -form $form -parent_id $parent_id] + -base [$form_package_id pretty_link -parent_id [$form parent_id] [$form name]] \ + -form $form -parent_id $parent_id] if {[info exists return_url]} {$obj return_url $return_url} lappend button_objs $obj } @@ -3261,6 +3278,7 @@ {-publish_status "ready"} {-field_names} {-extra_form_constraints ""} + {-inherit_from_forms ""} {-category_id} {-unless} {-where} @@ -3303,6 +3321,18 @@ } set form_constraints $extra_form_constraints\n + + if {$inherit_from_forms ne ""} { + foreach inherit_form $inherit_from_forms { + set inherit_form_id [::xowiki::Weblog instantiate_forms -parent_id [$o parent_id] \ + -forms $inherit_form -package_id $package_id] + if {$inherit_form_id ne ""} { + set p [$inherit_form_id property form_constraints] + append form_constraints $p\n + } + } + } + foreach form_item $form_item_ids { append form_constraints [$form_item get_form_constraints -trylocal true] \n }