Index: openacs-4/packages/file-storage/file-storage.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/file-storage.info,v
diff -u -N -r1.38.2.14 -r1.38.2.15
--- openacs-4/packages/file-storage/file-storage.info 12 Apr 2006 13:57:30 -0000 1.38.2.14
+++ openacs-4/packages/file-storage/file-storage.info 2 May 2006 12:04:17 -0000 1.38.2.15
@@ -7,15 +7,15 @@
f
f
-
+
OpenACS
Collaborative document storage
2005-09-30
OpenACS
Provides a versioned document store with storage in the filesystem or database (depending on configuration). Documents and folders can be permissioned and folders downloaded.
0
-
+
@@ -40,6 +40,7 @@
+
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.2.3 -r1.5.2.4
--- openacs-4/packages/file-storage/www/copy.tcl 13 Apr 2006 00:55:12 -0000 1.5.2.3
+++ openacs-4/packages/file-storage/www/copy.tcl 2 May 2006 12:04:17 -0000 1.5.2.4
@@ -58,7 +58,8 @@
db_transaction {
if {![string equal $type "folder"] } {
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
+ set file_id [content::revision::item_id -revision_id $file_rev_id]
+ callback fs::file_revision_new -package_id $package_id -file_id $file_id -parent_id $folder_id
} else {
db_exec_plsql copy_folder {}
}
Index: openacs-4/packages/file-storage/www/move-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/move-postgresql.xql,v
diff -u -N -r1.4.2.1 -r1.4.2.2
--- openacs-4/packages/file-storage/www/move-postgresql.xql 2 Apr 2006 22:11:50 -0000 1.4.2.1
+++ openacs-4/packages/file-storage/www/move-postgresql.xql 2 May 2006 12:04:17 -0000 1.4.2.2
@@ -15,14 +15,36 @@
- select fs.object_id, fs.name,
+ select fs.object_id, fs.name, fs.type, fs.parent_id,
acs_permission__permission_p(fs.object_id, :user_id, 'write') as move_p
from fs_objects fs
where fs.object_id in ([template::util::tcl_to_sql_list $object_id])
order by move_p
+
+
+ select file_storage__copy_file(
+ :object_id,
+ :folder_id,
+ :user_id,
+ :peer_addr
+ )
+
+
+
+
+
+ select content_folder__copy (
+ :object_id,
+ :folder_id,
+ :user_id,
+ :peer_addr
+ )
+
+
+
select content_item__move(
Index: openacs-4/packages/file-storage/www/move.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/move.tcl,v
diff -u -N -r1.5.2.2 -r1.5.2.3
--- openacs-4/packages/file-storage/www/move.tcl 6 Apr 2006 01:21:58 -0000 1.5.2.2
+++ openacs-4/packages/file-storage/www/move.tcl 2 May 2006 12:04:17 -0000 1.5.2.3
@@ -20,6 +20,9 @@
set object_id_list [join $object_id ","]
set user_id [ad_conn user_id]
+set peer_addr [ad_conn peeraddr]
+set package_id [ad_conn package_id]
+set copy_and_delete_p [parameter::get -parameter MoveByCopyDeleteP -package_id $package_id -default 0]
set allowed_count 0
set not_allowed_count 0
@@ -54,10 +57,29 @@
# but the existing file-move page checks for WRITE
set error_items [list]
template::multirow foreach move_objects {
- db_transaction {
- db_exec_plsql move_item {}
- } on_error {
- lappend error_items $name
+ if {$copy_and_delete_p} {
+ # copy and delete file to move it
+ db_transaction {
+ if {![string equal $type "folder"] } {
+ set file_rev_id [db_exec_plsql copy_item {}]
+ set file_id [content::revision::item_id -revision_id $file_rev_id]
+ callback fs::file_revision_new -package_id $package_id -file_id $file_id -parent_id $folder_id
+ fs::delete_file -item_id $object_id -parent_id $parent_id
+ } else {
+ db_exec_plsql copy_folder {}
+ fs::delete_folder -folder_id $object_id -parent_id $parent_id
+ }
+ db_exec_plsql move_item {}
+ } on_error {
+ lappend error_items $name
+ }
+ } else {
+ # execute move command
+ db_transaction {
+ db_exec_plsql move_item {}
+ } on_error {
+ lappend error_items $name
+ }
}
}
if {[llength $error_items]} {