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.67 -r1.68 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 5 Jan 2007 12:11:02 -0000 1.67 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 5 Jan 2007 21:22:20 -0000 1.68 @@ -420,19 +420,35 @@ set msg "processing objects: $objects
" set added 0 set replaced 0 + set updated 0 + array set excluded_var { + folder_id 1 package_id 1 absolute_links 1 lang_links 1 + publish_status 1 item_id 1 revision_id 1 last_modified 1 parent_id 1 + } foreach o $objects { $o set parent_id $folder_id $o set package_id $package_id $o set creation_user $user_id # page instances have references to page templates, add these first if {[$o istype ::xowiki::PageInstance]} continue - set item [CrItem lookup -name [$o set name] -parent_id $folder_id] - if {$item != 0 && $replace} { ;# we delete the original - ::Generic::CrItem delete -item_id $item - set item 0 - incr replaced + set item_id [CrItem lookup -name [$o set name] -parent_id $folder_id] + if {$item_id != 0} { + if {$replace} { ;# we delete the original + ::Generic::CrItem delete -item_id $item_id + set item_id 0 + incr replaced + } else { + ::Generic::CrItem instantiate -item_id $item_id + foreach var [$o info vars] { + if {![info exists excluded_var($var)]} { + $item_id set $var [$o set $var] + } + } + $item_id save + incr updated + } } - if {$item == 0} { + if {$item_id == 0} { $o save_new incr added } @@ -441,13 +457,24 @@ foreach o $objects { if {[$o istype ::xowiki::PageInstance]} { db_transaction { - set item [CrItem lookup -name [$o set name] -parent_id $folder_id] - if {$item != 0 && $replace} { ;# we delete the original - ::Generic::CrItem delete -item_id $item - set item 0 - incr replaced - } - if {$item == 0} { ;# the item does not exist -> update reference and save + set item_id [CrItem lookup -name [$o set name] -parent_id $folder_id] + if {$item_id != 0} { + if {$replace} { ;# we delete the original + ::Generic::CrItem delete -item_id $item_id + set item_id 0 + incr replaced + } else { + ::Generic::CrItem instantiate -item_id $item_id + foreach var [$o info vars] { + if {![info exists excluded_var($var)]} { + $item_id set $var [$o set $var] + } + } + $item_id save + incr updated + } + } + if {$item_id == 0} { ;# the item does not exist -> update reference and save set old_template_id [$o set page_template] set template [CrItem lookup \ -name [$old_template_id set name] \ @@ -460,7 +487,7 @@ } $o destroy } - append msg "$added objects inserted, $replaced objects replaced
" + append msg "$added objects newly inserted, $updated object updated, $replaced objects replaced
"
}
#
@@ -583,9 +610,9 @@
if {[catch {set page_name [lindex $arg 0]} errMsg]} {
#my log "--S arg='$arg'"
# there is something syntactically wrong
- return "$Error in '{{$arg}}' in [my set name]
\n\
+ return "
Error: includelet '$page_name' unknown
Error: includelet '$page_name' unknown
Possible values are$__template_variables__" + return "
Possible values are$__template_variables__" } return $template_value }