Index: openacs-4/packages/richtext-xinha/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/richtext-xinha/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.tcl,v diff -u -N --- openacs-4/packages/richtext-xinha/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.tcl 3 Jul 2020 07:56:59 -0000 1.4.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,330 +0,0 @@ -ad_page_contract { - @author Guenter Ernst guenter.ernst@wu-wien.ac.at - @author Gustaf Neumann neumann@wu-wien.ac.at - @creation-date 13.10.2005 - @cvs-id $Id: file-selector.tcl,v 1.4.2.1 2020/07/03 07:56:59 gustafn Exp $ -} { - {fs_package_id:naturalnum,notnull,optional} - {folder_id:naturalnum,optional} - {orderby:token,optional} - {selector_type "image"} - {file_types "*"} -} - -if {![info exists fs_package_id]} { - # we have not filestore package_id. This must be the first call. - 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 - } else { - # get package_id from package name - set key file-storage - set id [apm_version_id_from_package_key $key] - set mount_url [site_node::get_children -all -package_key $key -node_id $id] - array set site_node [site_node::get -url $mount_url] - set fs_package_id $site_node(package_id) - } -} - -if {![info exists folder_id]} { - set folder_id [fs_get_root_folder -package_id $fs_package_id] - set root_folder_id $folder_id -} - -if {![fs_folder_p $folder_id]} { - ad_complain [_ file-storage.lt_The_specified_folder__1] - return -} - -# now we have at least a valid folder_id and a valid fs_package_id -if {![info exists root_folder_id]} { - set root_folder_id [fs_get_root_folder -package_id $fs_package_id] -} - -set fs_url [site_node::get_url_from_object_id -object_id $fs_package_id] - -# # Don't allow delete if root folder -set root_folder_p [expr {$folder_id == $root_folder_id}] - -set user_id [ad_conn user_id] -permission::require_permission \ - -party_id $user_id -object_id $folder_id \ - -privilege "read" - -set up_url {} - -if { !$root_folder_p} { - 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}] -} - - -# if user has write permission, create image upload form, -if {[permission::permission_p -party_id $user_id -object_id $folder_id \ - -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]"} - } - } \ - -on_submit { - # check filename - if {$upload_file eq ""} { - template::form::set_error upload_form upload_file \ - [_ acs-templating.HTMLArea_SpecifyUploadFilename] - break - } - - if {[info exists folder_size]} { - # check quota - set maximum_folder_size [parameter::get -parameter "MaximumFolderSize"] - if { $maximum_folder_size ne "" } { - if { $folder_size + [file size ${upload_file.tmpfile}] > $maximum_folder_size } { - 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 -} - - -# display the contents - -set folder_name [lang::util::localize [fs::get_object_name -object_id $folder_id]] -set content_size_total 0 - -set folder_path [db_exec_plsql get_folder_path { - select content_item__get_path(:folder_id, :root_folder_id) -}] - - -# -pass_to_urls {c} - -template::list::create \ - -name contents \ - -multirow contents \ - -pass_properties {fs_package_id selector_type folder_id} \ - -key object_id \ - -html {width 100%}\ - -filters {folder_id {} file_types {} selector_type {} fs_package_id {}} \ - -elements { - name { - label "[_ file-storage.Name]" - display_template { - - - - - - - #file-storage.@contents.type@# - @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} - } - type { - 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 ""} - } - } - -set order_by_clause [expr {([info exists orderby] && $orderby ne "") ? - [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')" }] - -db_multirow -extend { - icon last_modified_pretty content_size_pretty - properties_link properties_url folder_p title -} contents get_fs_contents { - 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 acs_permission.permission_p(fs_objects.object_id, :user_id, 'read') - $filter_clause - $order_by_clause -} { - set last_modified_ansi [lc_time_system_to_conn $last_modified_ansi] - set last_modified_pretty [lc_time_fmt $last_modified_ansi "%x %X"] - set content_size_pretty [lc_numeric $content_size] - - if {$type eq "folder"} { - # append content_size_pretty " [_ file-storage.items]" - set content_size_pretty "" - } else { - append content_size_pretty " [_ file-storage.bytes]" - } - if {$title eq ""} { - set title $name - } - set file_upload_name [ad_sanitize_filename \ - -tolower \ - $file_upload_name] - if { $content_size ne "" } { - incr content_size_total $content_size - } - - set name [lang::util::localize $name] - - switch -- $type { - folder { - 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}] - } - url { - set folder_p 1 - set icon /resources/url-button.gif - set file_url $fs_url/$url - } - default { - set folder_p 0 - set icon /resources/file-storage/file.gif - set file_url ${fs_url}view/$file_url - } - } - - - # We need to encode the hashes in any i18n message keys (.LRN plays - # this trick on some of its folders). If we don't, the hashes will cause - # the path to be chopped off (by ns_conn url) at the leftmost hash. - regsub -all {\#} $file_url {%23} file_url - - # - # Register listeners - # - template::add_event_listener -id "oi$object_id" -script [subst { - onPreview('$file_url','$type'); - }] - if {$folder_p == 0} { - template::add_event_listener -id "link$object_id" -script [subst { - selectImage('$object_id','$file_url','$type'); - }] - } - -} - -template::add_event_listener -id "body" -event "blur" -script { - window.focus(); -} -template::add_event_listener -id "ok_button" -script { - onOK(); -} -template::add_event_listener -id "cancel_button" -script { - onCancel(); -} - - -set HTML_NothingSelected [_ acs-templating.HTMLArea_SelectImageNothingSelected] -switch $selector_type { - "image" { - set HTML_Title [_ acs-templating.HTMLArea_SelectImageTitle] - set HTML_Legend [_ acs-templating.HTMLArea_SelectImage] - set HTML_Preview [_ acs-templating.HTMLArea_SelectImagePreview] - set HTML_UploadTitle [_ acs-templating.HTMLArea_SelectImageUploadTitle] - set HTML_Context "COMMUNITY NAME" - } - "file" { - set HTML_Title [_ acs-templating.HTMLArea_SelectFileTitle] - set HTML_Legend [_ acs-templating.HTMLArea_SelectFile] - set HTML_Preview [_ acs-templating.HTMLArea_SelectImagePreview] - set HTML_UploadTitle [_ acs-templating.HTMLArea_SelectFileUploadTitle] - set HTML_Context "COMMUNITY NAME" - } -} - - -ad_return_template - -# Local variables: -# mode: tcl -# tcl-indent-level: 4 -# indent-tabs-mode: nil -# End: