- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
Class ::xowiki::ArchiveFile
::xowiki::ArchiveFilecreate ... \
[ -file file ] \
[ -name name ] \
[ -parent_id parent_id ] \
[ -use_photo_form (default "false") ]
Class Relations
::xotcl::Class create ::xowiki::ArchiveFile \ -superclass ::xotcl::ObjectMethods (to be applied on instances)
delete (scripted)
file delete -force -- ${:tmpdir} nextfile (setter)
import (scripted)
set package_id [::$parent_id package_id] foreach tmpfile [glob -nocomplain -directory $dir *] { #:msg "work on $tmpfile [::file isdirectory $tmpfile]" set file_name [::file tail $tmpfile] if {[::file isdirectory $tmpfile]} { # ignore mac os x resource fork directories if {[string match "*__MACOSX" $tmpfile]} continue set folder_object [::$package_id get_page_from_name -assume_folder true -name $file_name -parent_id $parent_id] if {$folder_object ne ""} { # if the folder exists already, we have nothing to do } else { # we create a new folder ... set folder_form_id [::$package_id instantiate_forms -forms en:folder.form] set folder_object [FormPage new -title $file_name -name $file_name -package_id $package_id -parent_id $parent_id -nls_language en_US -instance_attributes {} -page_template $folder_form_id -destroy_on_cleanup ] $folder_object save_new # ..... and refetch it under its canonical name ::xo::db::CrClass get_instance_from_db -item_id [$folder_object item_id] } :import -dir $tmpfile -parent_id [$folder_object item_id] } else { set mime_type [::xowiki::guesstype $file_name] if {[string match "image/*" $mime_type] && [:use_photo_form]} { set photo_object [::$package_id get_page_from_name -name en:$file_name -parent_id $parent_id] if {$photo_object ne ""} { # photo entry exists already, create a new revision :log "Photo $file_name exists already" $photo_object set title $file_name set f [::xowiki::formfield::file new -object $photo_object -name "image" -destroy_on_cleanup] $f set value $file_name $f content-type $mime_type $f set tmpfile $tmpfile $f convert_to_internal $photo_object save } else { # create a new photo entry :log "new Photo $file_name" set photoFormObj [::$package_id instantiate_forms -parent_id $parent_id -forms en:photo.form] set photo_object [$photoFormObj create_form_page_instance -name en:$file_name -nls_language en_US -creation_user [::xo::cc user_id] -parent_id $parent_id -package_id $package_id -instance_attributes [list image [list name $file_name]]] $photo_object title $file_name $photo_object publish_status "ready" $photo_object save_new ;# to obtain item_id needed by the form-field set f [::xowiki::formfield::file new -object $photo_object -name "image" -destroy_on_cleanup] $f set value $file_name $f content-type $mime_type $f set tmpfile $tmpfile $f convert_to_internal #:log "after convert to internal $file_name" } } else { set file_object [::$package_id get_page_from_name -name file:$file_name -parent_id $parent_id] if {$file_object ne ""} { :msg "file $file_name exists already" # file entry exists already, create a new revision $file_object set import_file $tmpfile $file_object set mime_type $mime_type $file_object set title $file_name $file_object save } else { :msg "file $file_name created new" set file_object [::xowiki::File new -title $file_name -name file:$file_name -parent_id $parent_id -mime_type $mime_type -package_id $package_id -creation_user [::xo::cc user_id] -destroy_on_cleanup ] $file_object set import_file $tmpfile $file_object save_new } } } }init (scripted)
:destroy_on_cleanup ::xo::db::CrClass get_instance_from_db -item_id ${:parent_id} set :tmpdir [ad_mktmpdir import]name (setter)
parent_id (setter)
unpack (scripted)
set success 0 switch [::xowiki::guesstype ${:name}] { application/zip - application/x-zip - application/x-zip-compressed { set success [util::file_content_check -type zip -file ${:file}] if {!$success} { util_user_message -message "The uploaded file is apparently not a zip file." } else { ::util::unzip -source ${:file} -destination ${:tmpdir} :import -dir ${:tmpdir} -parent_id ${:parent_id} } } application/x-compressed { if {[string match "*tar.gz" ${:name}]} { set success [util::file_content_check -type gzip -file ${:file}] if {!$success} { util_user_message -message "The uploaded file is apparently not a gzip file." } else { set cmd [::util::which tar] exec $cmd -xzf ${:file} -C ${:tmpdir} :import -dir ${:tmpdir} -parent_id ${:parent_id} } } else { util_user_message -message "Unknown compressed file type ${:name}." } } default { util_user_message -message "Type '[::xowiki::guesstype ${:name}]' is not an supported archive format." } } #:msg success=$success return $successuse_photo_form (setter)
- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
![[i]](/resources/acs-subsite/ZoomIn16.gif)