Commit 18a03f9e authored by Frank Bergmann's avatar Frank Bergmann

- OpenACS 5.9

parent b37a3360
......@@ -7,22 +7,22 @@
<initial-install-p>f</initial-install-p>
<singleton-p>f</singleton-p>
<version name="5.9.0d2" url="http://openacs.org/repository/download/apm/file-storage-5.9.0d2.apm">
<version name="5.9.0" url="http://openacs.org/repository/download/apm/file-storage-5.9.0.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Collaborative document storage</summary>
<release-date>2013-09-08</release-date>
<release-date>2015-10-04</release-date>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/plain">Provides a versioned document store with storage in the filesystem or database (depending on configuration). Documents and folders can be permissioned and folders downloaded.</description>
<license>GPL version 2</license>
<maturity>2</maturity>
<package_instance_name>#file-storage.file-storage#</package_instance_name>
<provides url="file-storage" version="5.9.0d2"/>
<requires url="acs-kernel" version="5.8.1"/>
<requires url="acs-content-repository" version="5.8.1"/>
<provides url="file-storage" version="5.9.0"/>
<requires url="acs-kernel" version="5.9.0"/>
<requires url="acs-content-repository" version="5.9.0"/>
<requires url="categories" version="1.1.2d3"/>
<requires url="notifications" version="5.8.1"/>
<requires url="notifications" version="5.9.0"/>
<requires url="oacs-dav" version="1.1b1"/>
<requires url="rss-support" version="0.3"/>
......
......@@ -2,4 +2,9 @@ set admin_p [permission::permission_p -object_id $folder_id -party_id [ad_conn u
set return_url [ad_return_url]
lassign [fs::get_folder_package_and_root $folder_id] package_id root_folder_id
set fs_url [site_node::get_url_from_object_id -object_id $package_id]
set folder_url [export_vars -base $fs_url {folder_id return_url}]
\ No newline at end of file
set folder_url [export_vars -base $fs_url {folder_id return_url}]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -119,3 +119,9 @@ lassign [fs::get_folder_package_and_root $folder_id] package_id root_folder_id
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -2,3 +2,9 @@ set fs_package [site_node::get_element -url $url -element package_id]
set fs_root [fs::get_root_folder -package_id $fs_package]
set fs_folder [fs::get_folder -parent_id $fs_root -name $folder]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -222,3 +222,9 @@ ad_proc -callback application-track::getApplicationName -impl file_storage {} {
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -169,3 +169,9 @@ ad_proc fs::impl::dav_mkcol_type::get_type {} {
return "file_storage_object"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -32,3 +32,9 @@ ad_library {
# return [fs::new_root_folder -package_id $package_id]
# }
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -208,3 +208,9 @@ ad_proc -public -callback fs::file_delete {
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -1628,3 +1628,9 @@ ad_proc -private fs::category_links {
}
return [join $categories $joinwith]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -183,3 +183,9 @@ ad_proc -private fs::rss::build_feeds {
rss_gen_report $subscr_id
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -60,3 +60,9 @@ ad_proc fs__url {
return "${url_stub}download/index?version_id=$revision_id"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -19,4 +19,9 @@ ad_proc -public fs::torrent::get_hashsum {
set file_contents [read $file_stream]
close $file_stream
return [ns_sha1 $file_contents]
}
\ No newline at end of file
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -240,3 +240,9 @@ aa_register_case -cats {web smoke} -libraries tclwebtest fs_upload_file {
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -445,3 +445,9 @@ ad_proc file_storage::twt::delete_url { url_title } {
return $response
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -83,3 +83,9 @@ if { ![ad_form_new_p -key subscr_id] } {
set root_folder_id [fs_get_root_folder -package_id [ad_conn package_id]]
set context [fs_context_bar_list -root_folder_id $root_folder_id $folder_id]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -22,4 +22,9 @@ ad_form -name del -form {
} -after_submit {
ad_returnredirect rss-subscrs?folder_id=$folder_id
ad_script_abort
} -cancel_url rss-subscrs?folder_id=$folder_id
\ No newline at end of file
} -cancel_url rss-subscrs?folder_id=$folder_id
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -41,4 +41,9 @@ template::list::create \
db_multirow subscrs select_subscrs {}
set root_folder_id [fs_get_root_folder]
set context [fs_context_bar_list -root_folder_id $root_folder_id $folder_id]
\ No newline at end of file
set context [fs_context_bar_list -root_folder_id $root_folder_id $folder_id]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -46,3 +46,9 @@ ad_form -name upload_limit_size -export folder_id -form {
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -131,3 +131,9 @@ if {[info exists folder_id]} {
set context [list "\#file-storage.Copy\#"]
set title "\#file-storage.Copy\#"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -82,3 +82,9 @@ ad_form -extend -name delete_confirm -on_submit {
set title "\#file-storage.Delete\#"
set context [list "\#file-storage.Delete\#"]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
This diff is collapsed.
<property name="context">{/doc/file-storage {File Storage}} {File-Storage Documentation}</property>
<property name="doc(title)">File-Storage Documentation</property>
<master>
<h1>File-Storage Documentation</h1>
<ul>
<li><a href="requirements">Requirements</a></li><li><a href="design">Design</a></li>
</ul>
<h2>Release Notes</h2>
<p>Please file bugs in the <a href="http://openacs.org/bugtracker/openacs/">Bug Tracker</a>.</p>
<hr>
<a href="mailto:kevin\@arsdigita.com"></a>
<address>kevin\@arsdigita.com</address>
......@@ -5,13 +5,16 @@
<body bgcolor=white text=black>
<h2>File-Storage Documentation</h2>
<h1>File-Storage Documentation</h1>
<ul>
<li><a href="requirements.html">Requirements</a>
<li><a href="design.html">Design</a>
</ul>
<h2>Release Notes</h2>
<p>Please file bugs in the <a href="http://openacs.org/bugtracker/openacs/">Bug Tracker</a>.</p>
<hr>
<a href="mailto:kevin@arsdigita.com"><address>kevin@arsdigita.com</address></a>
......
<property name="context">{/doc/file-storage {File Storage}} {File-Storage Application Requirements}</property>
<property name="doc(title)">File-Storage Application Requirements</property>
<master>
<h2>File-Storage Application Requirements</h2>
by <a href="mailto:kevin\@arsdigita.com">Kevin Scaldeferri</a>
<h3>I. Introduction</h3>
<p>This document describes the requirements for ACS File-Storage
application. The file-storage application allows individuals to
place their files on a publicly accessible web site and share them
with other members of that web community or with the public at
large.</p>
<h3>II. Vision Statement</h3>
<p>The goal of a Web community is to facilitate the sharing of
information. This information can come in a variety of forms: text,
images, executable files, and web pages. The file storage
application should provide a convenient way for users to share
information in any of these formats. Users should be able to
determine which individuals or groups should be allowed to read
particular items and who should be allowed to upload new
versions.</p>
<p>Since information is only useful if you can find what you're
looking for, files in the file storage system should be searchable,
both from within the application and through any site-wide search
facilities.</p>
<h3>III. System/Application Overview</h3>
<p>The File-Storage application will consist primarily of a user
interface that allows individuals to manage their file-storage
folder(s) and to see other people's publicly accessible files.</p>
<h3>IV. Use Case and User Scenarios</h3>
<h4>Using File-Storage to Run a Project</h4>
<p>In the course of her job at Acme Publishing Company, <b>Ursula
User</b> is working with people from several different offices with
whom she needs to exchange pictures and Excel spreadsheets
detailing cost estimates, and collaboratively write contracts using
Word. At any time, she and the other people she works with need to
be able to find the current copy of each of these documents - and
be able to look at older versions if need be to track the evolution
of the project. If the project is large, Ursula will also need to
be able to find all the documents pertaining to a particular issue
- so she will need a full-text search feature.</p>
<p>For each project, Ursula makes a folder on the file-storage
system and gives read, write, and edit permission to the group of
people she is working with for that project. Then she makes
subfolders for each of the tasks for that project and asks
appropriate team members to start uploading versions of the
documents as soon as they have completed drafts. She downloads the
documents, edits them, adds comments to them, etc. Then she uploads
her new version to the same folder. She and the other members of
her team go back and forth with this until they have a version with
which they are satisfied. Occasionally, Ursula wants to ask someone
outside the group their opinion so she gives them read access to
just one version of a file so that they can download it and take a
look. Sometimes production tasks change; if so, Ursula can
rearrange the project's sub-folder hierarchy to make it more
closely reflect the new organizational scheme. When a project is
completed, if Ursula is considerate of the maintainers of the site
and of other users, she will clean-up after herself, downloading
the canonical version of all the documents to her local machine and
deleting the files from the server.</p>
<h4>Administer File-Storage</h4>
<p>
<b>Annie Admin</b> primarily has the job of periodically
cleaning up after users. If disk space is tight on the server, she
may want to look for files that haven't been accessed in a long
time and either encourage the owners of those files to delete
anything they don't need on the server anymore or delete files
herself if the user can't be contacted or is unresponsive.
Depending on the precise permissions implementation, Annie may
occasionally need to intercede when the owner of a file
accidentally revokes their own permission to access the file.</p>
<h3>V. Related Links</h3>
<ul>
<li><a href="design">Design Document</a></li><li><a href="index">System Overview Document</a></li>
</ul>
<h3>VI.A. Requirements: Data Model</h3>
<p><b>10 The Data Model</b></p>
<p>
<b>10.1</b> each file should have a unique identifier</p>
<p>
<b>10.2</b> each version of a file should have a unique
identifier</p>
<p>
<b>10.3</b> each file should have an associated owner</p>
<p>
<b>10.4</b> each version should have an associated owner</p>
<p>
<b>10.5</b> files will be organized in a hierarchical set of
folders</p>
<p>
<b>10.6</b> each version of each file will have individual read,
write, delete, comment, and administer permissions associated with
it</p>
<h3>VI.B. Requirements: Administrator Interface</h3>
<p><b>20 Administrator Interface</b></p>
<p>
<b>20.1</b> the administrator should be able to view all files
in the file-storage system</p>
<p>
<b>20.2</b> the administrator should be able to edit, delete, or
alter permissions for any file belonging to any user</p>
<h3>VI.C. Requirements: User Interface</h3>
<p><b>30 User Interface</b></p>
<p>
<b>30.1</b> a user should be able to create folders and
subfolders in which he can place his files</p>
<p>
<b>30.2</b> a user should be able to add new files and new
versions of files</p>
<p>
<b>30.3</b> a user should be able to move files to different
folders or sub-folders</p>
<p>
<b>30.4</b> a user should be able to delete folders and
individual files</p>
<p>
<b>30.5</b> a user should be able to specify permissions for any
user or group on any folder, file, or version.</p>
<p>
<b>30.6</b> a user should be able to download any version which
is accessible to him</p>
<p>
<b>30.7</b> a user should be able to view and/or edit other
user's files if the user has been granted individual or group
permission with access to the files</p>
<p>
<b>30.8</b> a user should be able to search the text of the
documents stored in the file-storage system (requires full-text
search capability from the database - in the case of Oracle,
requires InterMedia)</p>
<h3>VII. Revision History</h3>
<table cellpadding="2" cellspacing="2" width="90%" bgcolor="#EFEFEF">
<tr bgcolor="#E0E0E0">
<th width="10%">Document Revision #</th><th width="50%">Action Taken, Notes</th><th>When?</th><th>By Whom?</th>
</tr><tr>
<td>0.1</td><td>Creation</td><td>1 October 2000</td><td>Cynthia Kiser</td>
</tr><tr>
<td>0.2</td><td>Revision for ACS 4</td><td>3 November 2000</td><td>Kevin Scaldeferri</td>
</tr><tr>
<td>0.3</td><td>Revised based on review by Josh Finkler</td><td>6 November 2000</td><td>Kevin Scaldeferri, Josh Finkler</td>
</tr>
</table>
<hr>
<address><a href="mailto:kevin\@arsdigita.com">kevin\@arsdigita.com</a></address>
Last Modified: $&zwnj;Id: requirements.html,v 1.3 2005/05/26 08:28:46
maltes Exp $
......@@ -59,3 +59,9 @@ ns_returnfile 200 application/octet-stream $out_file
# clean everything up
file delete -force $in_path
file delete -force $out_path
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -301,3 +301,9 @@ if { [parameter::get -parameter "BehaveLikeFilesystemP" -package_id [ad_conn pac
set unpack_available_p [expr {[string trim [parameter::get -parameter UnzipBinary]] ne ""}]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -79,3 +79,9 @@ ad_form -extend -form {
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -14,3 +14,9 @@ callback fs::before_file_new -package_id $package_id -folder_id $folder_id -canc
ad_returnredirect $return_url
ad_script_abort
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -140,3 +140,9 @@ if { [apm_package_installed_p "general-comments"] && [parameter::get -parameter
if { $categories_p } {
set category_links [fs::category_links -object_id $file_id -folder_id $folder_id]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -148,4 +148,9 @@ ad_form -extend -name file_add -form {} -on_submit {
set unpack_available_p [expr {[string trim [parameter::get -parameter UnzipBinary]] ne ""}]
ad_return_template
\ No newline at end of file
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -400,3 +400,9 @@ if {$content_size_total > 0} {
set compressed_url [export_vars -base ${fs_url}download-zip -url {{object_id $folder_id}}]
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -131,3 +131,9 @@ ad_form -extend -name "folder-ae" -edit_request {
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -94,4 +94,9 @@ if { $confirmed_p == "t" && $blocked_p == "f" } {
}
# Message lookup uses variable folder_name
set page_title [_ file-storage.folder_delete_page_title]
\ No newline at end of file
set page_title [_ file-storage.folder_delete_page_title]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -60,3 +60,9 @@ ad_form -extend -form {
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -231,3 +231,9 @@ ad_form -extend -name file_add -form {} -new_data {
set unpack_available_p [expr {[string trim [parameter::get -parameter UnzipBinary]] ne ""}]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -17,11 +17,13 @@
</div>
</if>
<include src="folder-chunk" folder_id="@folder_id;literal@"
n_past_days="@n_past_days;literal@" allow_bulk_actions="1" return_url="@return_url;literal@" category_id="@category_id;literal@">
<include src="folder-chunk" &="folder_id" &="n_past_days" allow_bulk_actions="1" &="return_url" &="category_id">
<p>@notification_chunk;noquote@</p>
<p>
<include src="/packages/notifications/lib/notification-widget" type="fs_fs_notif"
object_id="@folder_id;literal@"
pretty_name="@folder_name@"
url="@folder_url;literal@" >
<if @webdav_url@ not nil>
<p>#file-storage.Folder_available_via_WebDAV_at#</p>
......
......@@ -80,12 +80,7 @@ element create n_past_days_form folder_id \
-value $folder_id
set notification_chunk [notification::display::request_widget \
-type fs_fs_notif \
-object_id $folder_id \
-pretty_name $folder_name \
-url [ad_conn url]?folder_id=$folder_id \
]
set folder_url [export_vars -base [ad_conn url] {folder_id}]
if {[form is_valid n_past_days_form]} {
form get_values n_past_days_form n_past_days folder_id
......@@ -146,3 +141,9 @@ set allow_bulk_actions 1
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -152,3 +152,9 @@ if {[info exists folder_id]} {
set context [list "\#file-storage.Move\#"]
set title "\#file-storage.Move\#"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -22,4 +22,9 @@ if {[fs_file_p $object_id]} {
} {
set page_title [fs_get_folder_name $object_id]
set context [fs_context_bar_list -final [_ acs-subsite.Permissions] -root_folder_id $root_folder_id $object_id]
}
\ No newline at end of file
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -39,3 +39,9 @@ db_multirow results results {
set query $orig_query
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -38,3 +38,9 @@ fs::do_notifications -folder_id $folder_id -filename $url -item_id $item_id -act
ad_returnredirect "?folder_id=$folder_id"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -104,3 +104,9 @@ ad_form -extend -form {
ad_returnredirect "?folder_id=$folder_id"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -25,3 +25,9 @@ db_transaction {
ad_returnredirect "./?folder_id=$folder_id"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -46,3 +46,9 @@ set context [fs_context_bar_list -final "[_ file-storage.Edit_URL]" $folder_id]
set page_title [_ file-storage.file_edit_page_title_1]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -24,3 +24,9 @@ if { $categories_p } {
set category_links [fs::category_links -object_id $object_id -folder_id $folder_id]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -19,3 +19,9 @@ if {$url ne ""} {
} else {
return -code error [_ file-storage.no_such_URL]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -75,3 +75,9 @@ ad_form -export version_id -cancel_url [export_vars -base file {{file_id $item_i
# Message lookup uses variable version_name
set page_title [_ file-storage.version_delete_page_title]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
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