.. Schema
Foundation Schema
=================
The core of the site is based on these foundation classes.
* a :class:`User` is an authenticated person, with a special user named
*Guest User* that represents someone or something that is accessing the
site that has not authenticated
* :class:`Content` is an abstract class of a piece of web site content
* :class:`Transaction` a description of an activity that creates, modifies, or
deletes some content
* transactions are not generated for read activity
* transactions have a *function identifier* that describes the activity such
as *postArticle*
* each transaction has a timestamp and a reference to the user that initiated
the activity, along with a reference to their session
To help organize and manage content, there are these additional classes.
* :class:`Group` is a collection of users
* :class:`Role` is a set of transaction type identifiers that describe
behaviors, rights, and obligations of a user with respect to the users
participation in a group
* :class:`Notifications` is a collection of short messages regarding site
activity
* new question or answer
* files that are uploaded
* tasks that are created
* etc.
* :class:`Session` maintains session information such as the user, when the
session was initiated, and other tracking information like the browser
Forum
-----
A :doc:`forum` is a collection of articles like a news site, or the first email
message in a thread for Yahoo Groups, or an initial share on Google+. Forums
are used in three different ways in the site, but with very similar
presentation.
In the *News Forum* the articles are similar to a news site or blog, without a
public comment section. In the future there may be a way for comments to be
made available to the members of the News Group, provided there is a trivially
simple way to delete spam comments.
In the *Question and Answer Forum* the articles are considered questions, and
comments are considered proposed answers. In the future there may be a way to
mark an answer as "accepted".
In the *Group Forum* where the content is only visible to members of the group,
the content has no special designation.
* a :class:`Forum` is a collection of articles
* an :class:`Article` is a message in a forum
* a :class:`Comment` is a text message following up on an article
* a :class:`Tag` is a label that is used to group similar articles together,
commonly called a *hash tag* from its appearance with an octothorp prefix
Document Repository
-------------------
A :doc:`document` is a collection of documents which are shared between members
of a group. There is a special *Guest Repository* which contains documents that
are available to the *Guest User*, which is the general public.
* a :class:`Document` is an individual file such as Word, Excel, or PDF. A
document may be *current* or *obsolete*, where obsolete documents have a
reference to the next latest version and are excluded from the archive
* a :class:`Folder` is a sub-collection of documents
* an :class:`Archive` is a virtual zipped collection of current documents
* the archive is a quick and easy way to download all of the current documents
in the repository in a structure that matches the folder structure.
In the future there will be a way to map repository content to
`ownCloud `_ to make it easier to mirror and access from
desktop, Android, and iOS users.
Wiki
----
Every group gets a private :doc:`wiki` with a collection of wiki pages. Wiki
text formatting is used for all text content on the site, including forum
articles, comments, and task descriptions. The current plan is to use
`Creole `_
or a close derivative.
* a :class:`Wiki` is a collection of columns.
* a :class:`WikiPage` is a page of wiki text. It can refer to other wiki
pages, documents in a repository, or general hyperlinks.
Task Board
----------
Every group gets a private :doc:`taskboard` with a collection of tasks. Tasks
are assigned to group members and arranged in columns. Users have their own
personal board which is the combined view of all of the tasks that have been
assigned to them in their groups.
* a :class:`TaskBoard` is a collection of columns.
* a :class:`Column` is a collection of tasks that represent a task state such
as *ToDo*, *Doing*, or *Done*.
* each group cooperatively decides the number and titles of columns
* a :class:`Task` is a description of some activity.
Detailed Definitions
====================
.. toctree::
user.rst
forum.rst
document.rst
wiki.rst
taskboard.rst