Commit 0947edaa authored by Frank Bergmann's avatar Frank Bergmann

- First version downloading and uploading

parent 89a7fe42
......@@ -16,6 +16,29 @@ ad_library {
#
# ---------------------------------------------------------------------
ad_proc -public im_rest_fs_folder_for_path {
-object_id:required
-path:required
} {
Returns the ID of the cr_folder related to the given path
below object
} {
ns_log Notice "im_rest_fs_folder_for_path: object_id=$object_id, path=$path"
set folder_id [im_rest_fs_folder_for_object -object_id $object_id]
set path_pieces [split $path "/"]
foreach piece $path_pieces {
ns_log Notice "im_rest_fs_folder_for_path: folder_id=$folder_id: searching for '$piece'"
set folder_id [db_string sub_folder "
select min(item_id)
from cr_items ci
where parent_id = :folder_id and
lower(name) = lower(:piece)
"]
}
return $folder_id
}
ad_proc -public im_rest_fs_folder_for_object {
-object_id
......
......@@ -64,10 +64,11 @@ set sql "
cr.*,
CASE WHEN bts.open_p = 'o' THEN 'true' ELSE 'false' END as expanded,
CASE
WHEN ci.content_type::text = 'content_folder'::text THEN 'folder'::character varying
WHEN ci.content_type::text = 'content_extlink'::text THEN 'url'::character varying
WHEN ci.content_type::text = 'content_symlink'::text THEN 'symlink'::character varying
ELSE cr.mime_type
WHEN ci.content_type::text = 'content_folder' THEN 'folder'
WHEN ci.content_type::text = 'content_extlink' THEN 'url'
WHEN ci.content_type::text = 'content_symlink' THEN 'symlink'
WHEN ci.content_type::text = 'file_storage_object' THEN 'file'
ELSE ci.content_type
END AS type
from cr_items parent_ci,
cr_items ci
......
ad_page_contract {
page to add a new file to the system
@author Kevin Scaldeferri (kevin@arsdigita.com)
@creation-date 6 Nov 2000
@cvs-id $Id$
} {
{ project_id:integer "" }
{ path ""}
}
set user_id [ad_conn user_id]
set package_id [ad_conn package_id]
set package_id [db_string package "select min(package_id) from apm_packages where package_key = 'file-storage'" -default $package_id]
ns_log Notice "mkdir: path=$path, project_id=$project_id"
if {"" ne $project_id} {
set folder_id [im_rest_fs_folder_for_object -object_id $project_id]
}
set file_id [db_nextval "acs_object_id_seq"]
set path_pieces [split $path "/"]
set parent_pieces [lrange $path_pieces 0 end-1]
set folder_name [lindex $path_pieces end]
ns_log Notice "mkdir: path=$path, parent_pieces=$parent_pieces, folder_name=$folder_name"
set parent_id [im_rest_fs_folder_for_path -object_id $project_id -path [join $parent_pieces "/"]]
if {"" eq $parent_id} {
doc_return 500 "text/plain" "Did not find path=$path for object_id=$object_id"
ad_script_abort
}
fs::new_folder \
-name $folder_name \
-pretty_name $folder_name \
-parent_id $parent_id \
-creation_user $user_id \
-creation_ip [ad_conn peeraddr] \
-package_id $package_id
doc_return 200 "text/plain" "project_id=$project_id, path=$path"
ad_script_abort
ad_page_contract {
page to add a new file to the system
@author Kevin Scaldeferri (kevin@arsdigita.com)
@creation-date 6 Nov 2000
@cvs-id $Id$
} {
project_id:integer
{ path ""}
upload_file:trim,optional
upload_file.tmpfile:tmpfile,optional
{ title "" }
{ description "description" }
}
set user_id [ad_conn user_id]
set n_bytes [file size ${upload_file.tmpfile}]
set package_id [ad_conn package_id]
set package_id [db_string package "select min(package_id) from apm_packages where package_key = 'file-storage'" -default $package_id]
ns_log Notice "upload: project_id=$project_id, path=$path, upload_file=$upload_file, tmp_file=${upload_file.tmpfile}"
set ttt {
set max_bytes [parameter::get -parameter "MaximumFileSize"]
if {$n_bytes > $max_bytes } {
ad_return_complaint 1 "Your file is larger than the maximum file size allowed on this system ([util_commify_number $max_bytes] bytes)"
ad_script_abort
}
}
set folder_id [im_rest_fs_folder_for_path -object_id $project_id -path $path]
set mime_type [cr_filename_to_mime_type -create -- $upload_file]
set file_id [db_nextval "acs_object_id_seq"]
ns_log Notice "upload: folder_id=$folder_id, file_id=$file_id, mime_type=$mime_type"
if {1} {
fs::add_file \
-name $upload_file \
-item_id $file_id \
-parent_id $folder_id \
-tmp_filename ${upload_file.tmpfile} \
-creation_user $user_id \
-creation_ip [ad_conn peeraddr] \
-title $upload_file \
-description $description \
-package_id $package_id \
-mime_type $mime_type
}
file delete ${upload_file.tmpfile}
ns_log Notice "upload: Finished"
doc_return 200 "text/plain" "project_id=$project_id, path=$path, file_id=$file_id, folder_id=$folder_id, upload_file=$upload_file, tmp_file=${upload_file.tmpfile}, cont="
ad_script_abort
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment