Forum OpenACS Q&A: Extending File-Storage
1. Publish States
Several request deal with the usage of file-storage in the context of university courses. Often communities are reused with all the contet but the professors want to hide content that is dealt with later in the class. So they would prefer to simply hide files/folders and make them visible once they are needed.
A feature like the publish states in xowiki (production, ready ...) could save users a considerable amount of work and improve notifications since often a professors don't want the users to receive notifications until everything is set up. Files are uploaded several times because something was forgotten or folders are moved until the professor has found the best folder structure. Thus the professor could configure notifications for file-storage to only consider elements that have 'ready' as their publish state.
2. Reuse of content
Reuse of content using references. Content is often reused in different communities because the subject is part of the curriculum of several bachelor or master degrees. Right now the content has to be uploaded several times. In LMS like Ilias the content belongs to the owner but nodes can be referenced in as many courses as you want. Any changes are available at once. Any idea if this would be possible with file-storage?
Reuse is already supported via cr_symlinks. You just need to provide a user interface.
File storage supports resolving a symlink to the original object. I think building a centralized content library is out of scope for file storage. It seems like you really want a new package. Note that file storage is, or at least should be, a VERY thin layer over the tcl apis of the content repository. So to replicate the basic ability to upload files and organize them into folders should be very little work. Creating a coherent user interface for a reusable content library will be the challange.
Publish state is a feature of the content repository so you would only need to add a user interface to manage the publish state.But, please, let's not add this to our standard file-storage package. The package is already bloated beyond belief, and to continue bloating it for specialized stuff like "publication state" of a *file* in a *folder* is just too, too, much.
Nima - on HEAD (which will be 5.5/.LRN 2.5) there is the ability to EXTEND a package, which exists precisely to allow people to make their own custom extensions to base packages life file-storage without either 1) forking or 2) adding more and more custom changes to what are supposed to be generic, useful, maintainable packages.
This is probably the best way for you to think about doing what you want to do, unless you'd prefer to fork.