Metadata-Version: 1.0
Name: dolmen.content
Version: 0.2.2
Summary: Dolmen content-type framework
Home-page: http://gitweb.dolmen-project.org/
Author: Souheil Chelfouh
Author-email: souheil@chelfouh.com
License: GPL
Description: ==============
        dolmen.content
        ==============
        
        The package `dolmen.content` is a convenient way to define content
        types. Content types usually have several attributes : a type, a
        schema, an icon. In addition, they need security to control the
        creation, pages to edit them, easy ways to control the display, and
        the widgets. This is what provides `dolmen.content`, with an
        easy-to-use set of grok directives.
        
        Example
        =======
        
        A `dolmen.content` content is declared as a simple class. Some
        directives are available to define your content: `name`, `icon`,
        `schema` and `factory`. To have detailed information about these
        directives, please have a look at the package tests.
        
        Defining the content
        --------------------
        
        Let's demonstrate the package's features with a simple and
        non-exhaustive test::
        
        >>> import dolmen.content
        >>> from zope import schema
        
        >>> class IContentSchema(dolmen.content.IBaseContent):
        ...    text = schema.Text(title=u"A body text", default=u"N/A")
        
        >>> class MyContent(dolmen.content.Content):
        ...  """A very simple content
        ...  """
        ...  dolmen.content.schema(IContentSchema)
        ...  dolmen.content.name("a simple content type")
        
        
        Grokking
        --------
        
        We now let Grok register our component::
        
        >>> import grok
        >>> grok.testing.grok_component('mycontent', MyContent)
        True
        
        
        Factory
        -------
        
        When the content is registered, a factory is registered, using the
        full module and class dotted names. It allows us to query and
        instanciate the content easily::
        
        >>> from zope.component import getUtility
        >>> factory = getUtility(dolmen.content.IFactory,
        ...                      name="dolmen.content.MyContent")
        >>> factory
        <dolmen.content.factoring.Factory object at ...>
        
        
        Schema
        ------
        
        The content can now be instanciated. As we can see here, the object is
        effectively providing the schema::
        
        >>> my_content = factory()
        
        >>> my_content.__content_type__
        'a simple content type'
        
        >>> IContentSchema.providedBy(my_content)
        True
        >>> my_content.text
        u'N/A'
        
        
        Changelog
        =========
        
        0.2.2 (2009-09-25)
        ------------------
        
        * Using the last `dolmen.field` version with a bug fix.
        
        
        0.2.1 (2009-09-20)
        ------------------
        
        * Added tests and cleaned the testing module.
        
        
        0.2 (2009-09-04)
        ----------------
        
        * Added an OrderedContainer base class.
        
        
        0.1 (2009-09-01)
        ----------------
        
        * Initial release
        
Keywords: Grok Zope3 CMS Dolmen Content
Platform: Any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Zope3
Classifier: Intended Audience :: Other Audience
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
