doc/book/en/B0011-schema-stdlib.en.txt
author Sandrine Ribeau <sandrine.ribeau@logilab.fr>
Tue, 05 May 2009 02:55:08 -0700
changeset 1678 67162cb05b4b
parent 1205 79d33f7db590
child 1398 5fe84a5f7035
permissions -rw-r--r--
[doc] Add FAQ entries based on answers from forum.

.. -*- coding: utf-8 -*-

Pre-defined schemas in the library
----------------------------------

The library defines a set of entity schemas that are required by the system
or commonly used in `CubicWeb` applications.
Of course, you can extend those schemas if necessary.


System schemas
``````````````
The available system entities are:

* `EUser`, system users
* `EGroup`, users groups
* `EEType`, entity type
* `ERType`, relation type

* `State`, workflow state
* `Transition`, workflow transition
* `TrInfo`, record of a transition trafic for an entity 

* `EmailAddress`, email address, used by the system to send notifications
  to the users and also used by others optionnals schemas

* `EProperty`, used to configure the application
* `EPermission`, used to configure the security of the application

* `Card`, generic documenting card
* `Bookmark`, an entity type used to allow a user to customize his links within
  the application

(The first 'E' in some of the names is the first letter of 'Erudi', 
`CubicWeb`'s old name; it might be changed/removed some day.)

Available cubes
```````````````

An application is based on several basic cubes. In the set of available
basic cubes we can find for example :

* addressbook_: PhoneNumber and PostalAddress

* basket_: Basket (like a shopping cart)

* blog_: Blog (a *very* basic blog)

* comment_: Comment (to attach comment threads to entities)

* email_: archiving management for emails (`Email`, `Emailpart`,
  `Emailthread`)

* event_: Event (define events, display them in calendars)

* file_: File (to allow users to upload and store binary or text files)

* folder_: Folder (to organize things but grouping them in folders)

* keyword_: Keyword (to define classification schemes)

* link_: Link (to collect links to web resources)

* mailinglist_: MailingList (to reference a mailing-list and the URLs
  for its archives and its admin interface)

* person_: Person (easily mixed with addressbook)

* tag_: Tag (to tag anything)

* task_: Task (something to be done between start and stop date)

* zone_: Zone (to define places within larger places, for example a
  city in a state in a country)

.. _addressbook: http://www.cubicweb.org/project/cubicweb-addressbook
.. _basket: http://www.cubicweb.org/project/cubicweb-basket
.. _blog: http://www.cubicweb.org/project/cubicweb-blog
.. _comment: http://www.cubicweb.org/project/cubicweb-comment
.. _email: http://www.cubicweb.org/project/cubicweb-email
.. _event: http://www.cubicweb.org/project/cubicweb-event
.. _file: http://www.cubicweb.org/project/cubicweb-file
.. _folder: http://www.cubicweb.org/project/cubicweb-folder
.. _keyword: http://www.cubicweb.org/project/cubicweb-keyword
.. _link: http://www.cubicweb.org/project/cubicweb-link
.. _mailinglist: http://www.cubicweb.org/project/cubicweb-mailinglist
.. _person: http://www.cubicweb.org/project/cubicweb-person
.. _tag: http://www.cubicweb.org/project/cubicweb-tag
.. _task: http://www.cubicweb.org/project/cubicweb-task
.. _zone: http://www.cubicweb.org/project/cubicweb-zone

To declare the use of a component, once installed, add the name of the component
to the variable `__use__` in the file `__pkginfo__.py` of your own component.

.. note::
  The listed cubes above are available as debian-packages on `CubicWeb's forge`_.

.. _`CubicWeb's forge`: http://www.cubicweb.org/project?vtitle=All%20cubicweb%20projects