Steven Heynderickx wrote on 10 Nov 2009 15:45
Originally suggested by pieterh on 15 Sep 2009.
This is an analysis of the navigable data model that Wikidot site builders could in theory work with. The model consists of a hierarchy of objects. For each type of object we note typical properties of the object, as well as ways to select and order objects.
- Cluster — a collection of sites
- Site
- Page
- Revision
- Comment
- Tag
- File
- User
- Page
- Site
Cluster - [[module ListClusters ...]]
- Properties: name, created_by, created_at, tags
- Selection: created_at, tags
- Ordering: any property
- Container: owned by current user
Use cases:
- User-space cluster management tools
Site - [[module ListSites ...]]
- Properties: name, title, created_by, created_at, tags, deleted, pages, edits, members, quality, karma
- Selection: created_by, created_at, tags, deleted, pages, edits, members, quality, karma
- Ordering: name, created_by, created_at, karma
- Container: owned by current user
Use cases:
- Top rated sites
- Feed of newly created sites
- Feed of probably spam sites
Page - [[module ListPages ...]]
- Properties: name, title, content, created_by, created_at, tags, category, parent, etc.
- Selection: created_by, created_at, tags, category, parent, etc.
- Ordering: name, created_by, parent, etc.
- Container: current site
Comment - [[module ListComments ...]]
- Properties: title, content, created_by, created_at, level, parent
- Selection: created_by, created_at, tags, parent, etc.
- Ordering: name, created_by, parent, etc.
- Container: current site
Use cases:
- Emulating the Comments module on a page.
- Properties: name, parent (page), pages
- Selection: parent, pages
- Ordering: name, parent, pages
- Container: current site
Use cases:
- Custom formatting of tags in ListPages
- Reporting on tag usage within a site
Revision - [[module ListRevisions ...]]
- Properties: created_by, created_at, parent (page), description
- Selection: created_by, created_at, parent (page)
- Ordering: created_at
- Container: current page
Use cases:
- Custom history pages
File - [[module ListFiles ...]]
- Properties: created_by, created_at, parent (page), description, type, downloads
- Selection: created_by, created_at, parent (page), image
- Ordering: created_at, name, size, parent (page), type, downloads
- Container: current site
- Meta data: abstract, author, date created, license, etc.
Use cases:
- File management
- Text/document database
User - [[module ListUsers ...]]
- Properties: name, userid, role, joined_at
- Selection: userid, role, joined_at
- Ordering: name, userid, role, joined_at
- Container: current site
This would cover all contributors and participants in a site: contributor, editor, member, moderator, admin, owner.
Use cases:
- User-space membership management tools
We discourage direct comments on this thread: to discuss it, please start a sub-thread.