Index: openacs-4/packages/file-storage/file-storage.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/file-storage.info,v diff -u -N -r1.8 -r1.9 --- openacs-4/packages/file-storage/file-storage.info 18 Dec 2001 20:55:50 -0000 1.8 +++ openacs-4/packages/file-storage/file-storage.info 22 Feb 2002 19:06:28 -0000 1.9 @@ -26,12 +26,10 @@ - - @@ -99,8 +97,6 @@ - - Index: openacs-4/packages/file-storage/tcl/file-storage-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/tcl/file-storage-procs-oracle.xql,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/file-storage/tcl/file-storage-procs-oracle.xql 21 Feb 2002 20:06:27 -0000 1.4 +++ openacs-4/packages/file-storage/tcl/file-storage-procs-oracle.xql 22 Feb 2002 19:06:28 -0000 1.5 @@ -39,6 +39,40 @@ + + + select cr_items.item_id as file_id, + cr_items.name as name, + cr_items.live_revision, + cr_revisions.mime_type as type, + to_char(acs_objects.last_modified,'YYYY-MM-DD HH24:MI') as last_modified, + cr_revisions.content_length as content_size, + 1 as sort_key + from cr_items, + cr_revisions, + acs_objects + where cr_items.parent_id = :folder_id + and cr_items.content_type = 'file_storage_object' + and 't' = acs_permission.permission_p(cr_items.item_id, :user_id, 'read') + and cr_items.item_id = acs_objects.object_id + and cr_items.live_revision = cr_revisions.revision_id(+) + union + select cr_items.item_id as file_id, + cr_folders.label as name, + 0 as live_revision, + 'Folder' as type, + NULL as last_modified, + 0 as content_size, + 0 as sort_key + from cr_items, + cr_folders + where cr_items.parent_id = :folder_id + and cr_items.item_id = cr_folders.folder_id + and 't' = acs_permission.permission_p(cr_folders.folder_id, :user_id, 'read') + order by sort_key, name + + + Index: openacs-4/packages/file-storage/tcl/file-storage-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/tcl/file-storage-procs-postgresql.xql,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/file-storage/tcl/file-storage-procs-postgresql.xql 21 Feb 2002 20:06:27 -0000 1.11 +++ openacs-4/packages/file-storage/tcl/file-storage-procs-postgresql.xql 22 Feb 2002 19:06:28 -0000 1.12 @@ -31,6 +31,36 @@ + + + select i.item_id as file_id, + i.name as name, + i.live_revision, + r.mime_type as type, + to_char(o.last_modified,'YYYY-MM-DD HH24:MI') as last_modified, + r.content_length as content_size, + 1 as ordering_key + from cr_items i left join cr_revisions r on (i.live_revision = r.revision_id), acs_objects o + where i.item_id = o.object_id + and i.parent_id = :folder_id + and acs_permission__permission_p(i.item_id, :user_id, 'read') = 't' + and i.content_type = 'file_storage_object' + UNION + select i.item_id as file_id, + f.label as name, + 0, + 'Folder', + NULL, + 0, + 0 + from cr_items i, cr_folders f + where i.item_id = f.folder_id + and i.parent_id = :folder_id + and acs_permission__permission_p(f.folder_id, :user_id, 'read') = 't' + order by ordering_key,name + + + Index: openacs-4/packages/file-storage/tcl/file-storage-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/tcl/file-storage-procs.tcl,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/file-storage/tcl/file-storage-procs.tcl 21 Feb 2002 20:06:27 -0000 1.7 +++ openacs-4/packages/file-storage/tcl/file-storage-procs.tcl 22 Feb 2002 19:06:28 -0000 1.8 @@ -209,14 +209,17 @@ #set pretty_mime_type ??? - if { [db_string mime_type_exists " - select count(*) from cr_mime_types - where mime_type = :mime_type"] == 0 } { - db_dml new_mime_type " - insert into cr_mime_types - (mime_type, file_extension) - values - (:mime_type, :extension)" + if { [db_string mime_type_exists { + select count(*) + from cr_mime_types + where mime_type = :mime_type + }] == 0 } { + db_dml new_mime_type { + insert into cr_mime_types + (mime_type, file_extension) + values + (:mime_type, :extension) + } } return $mime_type @@ -229,7 +232,7 @@ {-pretty_name ""} {-description ""} } { - Create a root folder for a package instance + Create a root folder for a package instance. @param package_id Package instance associated with this root folder @@ -241,7 +244,7 @@ ad_proc -public get_root_folder { {-package_id:required} } { - Get the root folder of a package instance + Get the root folder of a package instance. @param package_id Package instance of the root folder to retrieve @@ -257,7 +260,7 @@ {-creation_user ""} {-creation_ip ""} } { - Create a new folder + Create a new folder. @param name Internal name of the folder, must be unique under a given parent_id @@ -283,7 +286,7 @@ {-name:required} {-parent_id:required} } { - Retrieve the folder_id of a folder given it's name and parent folder + Retrieve the folder_id of a folder given it's name and parent folder. @param name Internal name of the folder, must be unique under a given parent_id @@ -295,4 +298,26 @@ return [db_string get_folder {} -default ""] } + ad_proc -public get_folder_contents { + {-folder_id:required} + {-user_id ""} + } { + Retrieve the contents of the specified folder in the form of a list + of ns_sets, one for each row returned. The keys for each row are as + follows: + + file_id, name, live_revision, type, + last_modified, content_size, sort_key + + @param folder_id The folder for which to retrieve contents + @param user_id The viewer of the contents (to make sure they have + permission) + } { + if {[empty_string_p $user_id]} { + set user_id [acs_magic_object "the_public"] + } + + return [db_list_of_ns_sets get_folder_contents {}] + } + } Index: openacs-4/packages/file-storage/www/index-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/Attic/index-oracle.xql,v diff -u -N --- openacs-4/packages/file-storage/www/index-oracle.xql 21 Feb 2002 20:06:27 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,40 +0,0 @@ - - - - oracle8.1.6 - - - - select cr_items.item_id as file_id, - cr_items.name as name, - cr_items.live_revision, - cr_revisions.mime_type as type, - to_char(acs_objects.last_modified,'YYYY-MM-DD HH24:MI') as last_modified, - cr_revisions.content_length as content_size, - 1 as ordering_key - from cr_items, - cr_revisions, - acs_objects - where cr_items.parent_id = :folder_id - and cr_items.content_type = 'file_storage_object' - and 't' = acs_permission.permission_p(cr_items.item_id, :user_id, 'read') - and cr_items.item_id = acs_objects.object_id - and cr_items.live_revision = cr_revisions.revision_id (+) - UNION - select cr_items.item_id as file_id, - cr_folders.label as name, - 0 as live_revision, - 'Folder' as type, - NULL as last_modified, - 0 as content_size, - 0 as ordering_key - from cr_items, - cr_folders - where cr_items.parent_id = :folder_id - and cr_items.item_id = cr_folders.folder_id - and 't' = acs_permission.permission_p(cr_folders.folder_id, :user_id, 'read') - order by ordering_key, name - - - - Index: openacs-4/packages/file-storage/www/index-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/Attic/index-postgresql.xql,v diff -u -N --- openacs-4/packages/file-storage/www/index-postgresql.xql 18 Dec 2001 21:08:21 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,37 +0,0 @@ - - - - postgresql7.1 - - - - select i.item_id as file_id, - i.name as name, - i.live_revision, - r.mime_type as type, - to_char(o.last_modified,'YYYY-MM-DD HH24:MI') as last_modified, - r.content_length as content_size, - 1 as ordering_key - from cr_items i left join cr_revisions r on (i.live_revision = r.revision_id), acs_objects o - where i.item_id = o.object_id - and i.parent_id = :folder_id - and acs_permission__permission_p(i.item_id, :user_id, 'read') = 't' - and i.content_type = 'file_storage_object' - UNION - select i.item_id as file_id, - f.label as name, - 0, - 'Folder', - NULL, - 0, - 0 - from cr_items i, cr_folders f - where i.item_id = f.folder_id - and i.parent_id = :folder_id - and acs_permission__permission_p(f.folder_id, :user_id, 'read') = 't' - order by ordering_key,name - - - - - Index: openacs-4/packages/file-storage/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/index.tcl,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/file-storage/www/index.tcl 21 Feb 2002 20:06:27 -0000 1.7 +++ openacs-4/packages/file-storage/www/index.tcl 22 Feb 2002 19:06:28 -0000 1.8 @@ -47,6 +47,8 @@ set package_id [ad_conn package_id] -db_multirow file file_select {} +template::util::list_of_ns_sets_to_multirow \ + -rows [fs::get_folder_contents -folder_id $folder_id -user_id $user_id] \ + -var_name "file" ad_return_template