Commit 43023a8b authored by Frank Bergmann's avatar Frank Bergmann

- Now creating folders with registered contents

- Now creating folders below the file-storage root
  folder
parent 9f6378d9
......@@ -37,7 +37,12 @@ function launchFileTree(debug){
renderTo: renderDiv,
store: fileTreeStore,
tbar: [
{ icon: gifPath+'add.png', tooltip: 'Add a new task', id: 'buttonAddFile'},
{ icon: gifPath+'add.png', tooltip: 'Add a new task', id: 'buttonAddFile',
handler: function() {
var folderId = @folder_id@+0; // ToDo: Replace with selection model
var url = '/file-storage/file-add?folder_id='+folderId;
window.open(url); // Open project in new browser tab
}},
{ icon: gifPath+'folder_add.png', tooltip: 'Reduce Indent', id: 'buttonAddFolder'},
{ icon: gifPath+'delete.png', tooltip: 'Delete a task', id: 'buttonDelete'},
{ xtype: 'tbseparator' }
......
......@@ -13,10 +13,85 @@ ad_library {
# ----------------------------------------------------------------------
# Constants
#
# ---------------------------------------------------------------------
ad_proc -public im_rest_fs_folder_for_object {
-object_id
} {
Returns the ID of the cr_folder related to the object
or creates a new folder.
} {
set current_user_id [auth::get_user_id]
set package_id [db_string pid "select package_id from apm_packages where package_key = 'file-storage'" -default ""]
set package_root_folder_id [fs_get_root_folder -package_id $package_id]
# ad_return_complaint 1 $root_folder_id
# Check for first folder related to the object
set folder_id [db_string fs_folder "
select min(ci.item_id)
from acs_rels r,
cr_items ci,
cr_folders cf
where r.object_id_one = :object_id and
r.object_id_two = ci.item_id and
r.object_id_two = cf.folder_id
" -default ""]
if {"" ne $folder_id} { return $folder_id }
# No folder found:
# Create a new folder and associate with project
set object_name [acs_object_name $object_id]
set object_type [db_string otype "select min(pretty_name) from acs_object_types where object_type in (select object_type from acs_objects where object_id = :object_id)" -default "Object"]
set description "Default folder for $object_type: $object_name"
# Check if the folder exists with object type and object name
# in order to avoid errors with duplicate folder names
set folder_id [db_string fs_folder "
select min(ci.item_id)
from cr_items ci,
cr_folders cf
where ci.item_id = cf.folder_id and
ci.name = :object_type||': '||:object_name
" -default ""]
# Create folder if it doesn't exist
if {"" eq $folder_id} {
set folder_id [fs::new_folder \
-name "$object_type: $object_name" \
-pretty_name $object_name \
-parent_id $package_root_folder_id \
-creation_user $current_user_id \
-creation_ip [ad_conn peeraddr] \
-description $description \
]
db_string reg "select content_folder__register_content_type(:folder_id, 'content_folder', true)"
db_string reg "select content_folder__register_content_type(:folder_id, 'file_storage_object', true)"
db_string reg "select content_folder__register_content_type(:folder_id, 'content_extlink', true)"
}
# Associate the folder with the object
set rel_id [db_string create_rel "
select acs_rel__new (
null,
'im_biz_object_member',
:object_id,
:folder_id,
null,
:current_user_id,
'[ad_conn peeraddr]'
)
"]
return $folder_id
}
# ----------------------------------------------------------------------
# Components
# ---------------------------------------------------------------------
......
......@@ -39,55 +39,7 @@ set ttt {
# --------------------------------------------
# Determine folder for object and create if necessary
#
set folder_id [db_string fs_folder "
select min(ci.item_id)
from acs_rels r,
cr_items ci,
cr_folders cf
where r.object_id_one = :object_id and
r.object_id_two = ci.item_id and
r.object_id_two = cf.folder_id
" -default ""]
if {"" eq $folder_id} {
# Create folder and associate with project
set object_name [acs_object_name $object_id]
set parent_id ""
set description "Default folder for $object_name"
set folder_id [db_string fs_folder "
select min(ci.item_id)
from cr_items ci,
cr_folders cf
where ci.item_id = cf.folder_id and
ci.name = :object_name
" -default ""]
if {"" eq $folder_id} {
set folder_id [fs::new_folder \
-name $object_name \
-pretty_name $object_name \
-parent_id $parent_id \
-creation_user $current_user_id \
-creation_ip [ad_conn peeraddr] \
-description $description \
]
}
set rel_id [db_string create_rel "
select acs_rel__new (
null,
'im_biz_object_member',
:object_id,
:folder_id,
null,
:current_user_id,
'[ad_conn peeraddr]'
)
"]
}
set folder_id [im_rest_fs_folder_for_object -object_id $object_id]
......
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