Index: openacs-4/packages/xowiki/www/xinha/file-selector.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/xinha/file-selector.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/xowiki/www/xinha/file-selector.tcl 1 Jul 2006 01:27:25 -0000 1.4 +++ openacs-4/packages/xowiki/www/xinha/file-selector.tcl 17 Aug 2006 01:44:27 -0000 1.5 @@ -3,7 +3,7 @@ @author Gustaf Neumann neumann@wu-wien.ac.at @creation-date 13.10.2005 @cvs-id $Id$ -} { +} { {fs_package_id:integer,notnull,optional} {folder_id:integer,optional} {orderby:optional} @@ -16,7 +16,7 @@ if {[info exists folder_id]} { # get package_id from folder_id foreach {fs_package_id root_folder_id} \ - [fs::get_folder_package_and_root $folder_id] break + [fs::get_folder_package_and_root $folder_id] break } else { # get package_id from package name set key file-storage @@ -74,78 +74,78 @@ set parent_folder_id [fs::get_parent -item_id $folder_id] set up_name [fs::get_object_name -object_id $parent_folder_id] set up_url [export_vars -base file-selector \ - {fs_package_id {folder_id $parent_folder_id} - selector_type file_types}] + {fs_package_id {folder_id $parent_folder_id} + selector_type file_types}] } # if user has write permission, create image upload form, if {[permission::permission_p -party_id $user_id -object_id $folder_id \ - -privilege "write"]} { + -privilege "write"]} { set write_p 1 ad_form \ -name upload_form \ -mode edit \ -export {fs_package_id folder_id orderby selector_type file_types} \ -html { enctype multipart/form-data } \ -form { - {upload_file:file(file) {html {size 30}} } - {ok_btn:text(submit) {label "[_ acs-templating.HTMLArea_SelectUploadBtn]"} - } + {upload_file:file(file) {html {size 30}} } + {ok_btn:text(submit) {label "[_ acs-templating.HTMLArea_SelectUploadBtn]"} + } } \ -on_submit { - # check file name - if {$upload_file eq ""} { - template::form::set_error upload_form upload_file \ - [_ acs-templating.HTMLArea_SpecifyUploadFilename] - break - } + # check file name + if {$upload_file eq ""} { + template::form::set_error upload_form upload_file \ + [_ acs-templating.HTMLArea_SpecifyUploadFilename] + break + } - # check quota - set maximum_folder_size [ad_parameter "MaximumFolderSize"] - - if { $maximum_folder_size ne "" } { - set max [ad_parameter "MaximumFolderSize"] - if { $folder_size+[file size ${upload_file.tmpfile}] > $max } { - template::form::set_error upload_form upload_file \ - [_ file-storage.out_of_space] - break - } - } - - set file_name [template::util::file::get_property filename $upload_file] - set upload_tmpfile [template::util::file::get_property tmp_filename $upload_file] - set mime_type [template::util::file::get_property mime_type $upload_file] - - if {$selector_type eq "image" && ![string match "image/*" $mime_type]} { - template::form::set_error upload_form upload_file \ - [_ acs-templating.HTMLArea_SelectImageUploadNoImage] - break - } - - set existing_file_id [fs::get_item_id -name $file_name -folder_id $folder_id] - - if {$existing_file_id ne ""} { - # write new revision - fs::add_file \ - -name $file_name \ - -item_id $existing_file_id \ - -parent_id $folder_id \ - -tmp_filename $upload_tmpfile \ - -creation_user $user_id \ - -creation_ip [ad_conn peeraddr] \ - -package_id $fs_package_id - } else { - # write file - fs::add_file \ - -name $file_name \ - -parent_id $folder_id \ - -tmp_filename $upload_tmpfile \ - -creation_user $user_id \ - -creation_ip [ad_conn peeraddr] \ - -package_id $fs_package_id - } - + # check quota + set maximum_folder_size [ad_parameter "MaximumFolderSize"] + + if { $maximum_folder_size ne "" } { + set max [ad_parameter "MaximumFolderSize"] + if { $folder_size+[file size ${upload_file.tmpfile}] > $max } { + template::form::set_error upload_form upload_file \ + [_ file-storage.out_of_space] + break + } + } + + set file_name [template::util::file::get_property filename $upload_file] + set upload_tmpfile [template::util::file::get_property tmp_filename $upload_file] + set mime_type [template::util::file::get_property mime_type $upload_file] + + if {$selector_type eq "image" && ![string match "image/*" $mime_type]} { + template::form::set_error upload_form upload_file \ + [_ acs-templating.HTMLArea_SelectImageUploadNoImage] + break + } + + set existing_file_id [fs::get_item_id -name $file_name -folder_id $folder_id] + + if {$existing_file_id ne ""} { + # write new revision + fs::add_file \ + -name $file_name \ + -item_id $existing_file_id \ + -parent_id $folder_id \ + -tmp_filename $upload_tmpfile \ + -creation_user $user_id \ + -creation_ip [ad_conn peeraddr] \ + -package_id $fs_package_id + } else { + # write file + fs::add_file \ + -name $file_name \ + -parent_id $folder_id \ + -tmp_filename $upload_tmpfile \ + -creation_user $user_id \ + -creation_ip [ad_conn peeraddr] \ + -package_id $fs_package_id + } + } } else { set write_p 0 @@ -173,78 +173,78 @@ -filters {folder_id {} file_types {} selector_type {} fs_package_id {}} \ -elements { name { - label "[_ file-storage.Name]" - display_template { - - + - - - - - #file-storage.@contents.type@# - onclick="selectImage('@contents.object_id@','@contents.file_url@','@contents.type@');return false;">@contents.name@ - } - orderby_desc {name desc} - orderby_asc {name asc} - html {nowrap ""} + + #file-storage.@contents.type@# + onclick="selectImage('@contents.object_id@','@contents.file_url@','@contents.type@');return false;">@contents.name@ + } + orderby_desc {name desc} + orderby_asc {name asc} + html {nowrap ""} } content_size_pretty { - label "[_ file-storage.Size]" - orderby_desc {content_size desc} - orderby_asc {content_size asc} + label "[_ file-storage.Size]" + orderby_desc {content_size desc} + orderby_asc {content_size asc} } type { - label "[_ file-storage.Type]" - orderby_desc {type desc} - orderby_asc {type asc} + label "[_ file-storage.Type]" + orderby_desc {type desc} + orderby_asc {type asc} } last_modified_pretty { - label "[_ file-storage.Last_Modified]" - orderby_desc {last_modified_ansi desc} - orderby_asc {last_modified_ansi asc} - html {nowrap ""} + label "[_ file-storage.Last_Modified]" + orderby_desc {last_modified_ansi desc} + orderby_asc {last_modified_ansi asc} + html {nowrap ""} } } set order_by_clause [expr {[exists_and_not_null orderby] ? - [template::list::orderby_clause -orderby -name contents] : - " order by fs_objects.sort_key, fs_objects.name asc"}] + [template::list::orderby_clause -orderby -name contents] : + " order by fs_objects.sort_key, fs_objects.name asc"}] if {$selector_type eq "image"} { set file_types "image/%" } set filter_clause [expr {$file_types eq "*" ? "" : - "and (type like '$file_types' or type = 'folder')" }] + "and (type like '$file_types' or type = 'folder')" }] set fs_sql "select object_id, name, live_revision, type, title, - to_char(last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi, - content_size, url, sort_key, file_upload_name, - case - when :folder_path is null - then fs_objects.name - else :folder_path || '/' || name - end as file_url, - case - when last_modified >= (now() - cast('99999' as interval)) - then 1 - else 0 - end as new_p - from fs_objects - where parent_id = :folder_id - and exists (select 1 - from acs_object_party_privilege_map m - where m.object_id = fs_objects.object_id - and m.party_id = :user_id - and m.privilege = 'read') - $filter_clause - $order_by_clause" + to_char(last_modified, 'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi, + content_size, url, sort_key, file_upload_name, + case + when :folder_path is null + then fs_objects.name + else :folder_path || '/' || name + end as file_url, + case + when last_modified >= (now() - cast('99999' as interval)) + then 1 + else 0 + end as new_p + from fs_objects + where parent_id = :folder_id + and exists (select 1 + from acs_object_party_privilege_map m + where m.object_id = fs_objects.object_id + and m.party_id = :user_id + and m.privilege = 'read') + $filter_clause + $order_by_clause" db_multirow -extend { icon last_modified_pretty content_size_pretty @@ -263,7 +263,7 @@ if {$title eq ""} {set title $name} set file_upload_name [fs::remove_special_file_system_characters \ - -string $file_upload_name] + -string $file_upload_name] if { $content_size ne "" } { incr content_size_total $content_size @@ -276,8 +276,8 @@ set folder_p 1 set icon /resources/file-storage/folder.gif set file_url [export_vars -base file-selector \ - {fs_package_id {folder_id $object_id} - selector_type file_types}] + {fs_package_id {folder_id $object_id} + selector_type file_types}] } url { set folder_p 1