1. The "contents" of a SmallWiki is a combination of pages,
2. A "page" and a "resource" are components, and
a "folder" is a
composite of those two components.
yes, it is a composite-pattern, but there are not just those two
components that might be put into a folder:
- First of all it is possible to nest folders, to allow putting
together related content. Furthermore folders are a kind of a
namespace, so you might have pages with the same title in different
- There are other components available to be used with SmallWiki as
extension. As an example some time ago I have written a component
displaying a keyword-index of your wiki. A lot of other components
(have been|are|will be) written during software design courses at the
University of Bern and Brussels. Just to name a few examples: link
collection, photo gallery, forum, address-book, calendar pages, rss
3. A "resource" is some uploaded file resource, such as a
video clip, or a picture.
Exactly, usually this is for things like you mention: jpg, gif, mp3,
mpg, zip, pdf, doc, ... Actually it is also possible to upload a
html-file to serve static pages/style-sheets ...
OK, what if I don't care to allow anybody to upload file
That would leave a "page" as the only interesting component left.
For further information about the design, see the diagrams in the
Smallwiki - Collaborative Content Management
And why bother having a composite (a "folder") of only one
Wikis have always been flat (WikiWorks has one level: Book -> Page,
SWiki has two levels: Shelf -> Book -> Page) and in my opinion this has
a lot of drawbacks. Therefor I decided to implement a real composite
and this gives a lot of power to the users to organize their things. Of
course it also adds some complexity, but I think today everybody is
used to work with folders and files in their filesystem.
After all, it is possible to use SmallWiki without creating any folder:
just put everything into the root, but there will be a mess very soon
In other words, if I don't care to allow people to upload files
SmallWiki, why would I be interested in anything other than pages (eg,
children of type SWPage)?
See the examples above.
Seaside mailing list