Index: openacs-4/packages/file-storage/www/copy.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/copy.tcl,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/file-storage/www/copy.tcl 20 Mar 2005 15:44:29 -0000 1.5 +++ openacs-4/packages/file-storage/www/copy.tcl 8 Aug 2006 21:26:49 -0000 1.6 @@ -10,8 +10,10 @@ object_id:notnull,integer,multiple folder_id:integer,optional {return_url ""} + {root_folder_id ""} {redirect_to_folder:boolean 0} {show_items:boolean 0} +} -errors {object_id:,notnull,integer,multiple {Please select at least one item to copy.} } set objects_to_copy $object_id @@ -21,6 +23,7 @@ set peer_addr [ad_conn peeraddr] set allowed_count 0 set not_allowed_count 0 +set package_id [ad_conn package_id] db_multirow -extend {copy_message} copy_objects get_copy_objects "" { if {$copy_p} { @@ -49,18 +52,25 @@ # check for WRTIE permission on each object to be copyd # DaveB: I think it should be DELETE instead of WRITE # but the existing file-copy page checks for WRITE - + set error_items [list] template::multirow foreach copy_objects { db_transaction { if {![string equal $type "folder"] } { - db_exec_plsql copy_item {} + set file_rev_id [db_exec_plsql copy_item {}] + callback fs::file_revision_new -package_id $package_id -file_id $object_id -parent_id $folder_id } else { db_exec_plsql copy_folder {} } - } + } on_error { + lappend error_items $name + } } - - ad_returnredirect $return_url + if {[llength $error_items]} { + set message "There was a problem copying the following items: [join $error_items ", "]" + } else { + set message "Selected items copied." + } + ad_returnredirect -message $message $return_url ad_script_abort } else { @@ -87,11 +97,15 @@ display_template {
@folder_tree.label@
} } } - set root_folder_id [fs::get_root_folder] + + if {[empty_string_p $root_folder_id]} { + set root_folder_id [fs::get_root_folder] + } set object_id $objects_to_copy + set cancel_url "[ad_conn url]?[ad_conn query]" db_multirow -extend {copy_url} folder_tree get_folder_tree "" { - set copy_url [export_vars -base "copy" { object_id:multiple folder_id return_url }] - + set target_url [export_vars -base "[ad_conn package_url]copy" { object_id:multiple folder_id return_url }] + set copy_url [export_vars -base "file-upload-confirm" {folder_id cancel_url {return_url $target_url}}] } }