Installation
------------

To enable this product in a buildout-based installation:

1. Edit your buildout.cfg and add ``collective.z3cform.widgets`` to the list
   of eggs to install::

    [buildout]
    ...
    eggs =
        collective.z3cform.widgets

2. You may need to extend a Dexterity known good set (KGS) to make sure that
   you get the right versions of the packages that make up Dexterity::

    [buildout]
    ...
    extends =
        http://good-py.appspot.com/release/dexterity/1.2.1

After updating the configuration you need to run ''bin/buildout'', which will
take care of updating your system.

Don't panic
-----------

New fields
^^^^^^^^^^

**TasksWidget**
    To use this widget we must use a List field or a Tuple field with the
    value_type as an schema.TextLine() like this::

        form.widget(subjects = KeywordsFieldWidget)
        options = schema.Tuple(
            title=_(u"Options"),
            value_type=schema.TextLine(),
            missing_value=(,),
            )

**TokenInputWidget**
    To use this Widget we must use a List field or a Tuple field with the
    value_type as a schema.TextLine() like this::

        form.widget(options=TokenInputWidget)
        subjects = schema.List(
            title=_(u"Categories"),
            value_type=schema.TextLine(),
            default=[],
            )

**RelatedContentWidget**

    The parameters passed to the ObjPathSourceBinder class are used to filter
    the search of elements to relate to.. if none parameter are passed, a tree
    structure is shown in the widget::

        form.widget(relatedItems=RelatedContentFieldWidget)
        relatedItems = RelationList(
            title=_(u"Related Items"),
            default=[],
            value_type=RelationChoice(title=u"Related",
                source=ObjPathSourceBinder(portal_type='Document')),
            )

Override existing fields
^^^^^^^^^^^^^^^^^^^^^^^^

To override an existing field put the following code in the __init__.py of
your package.

**TasksWidget**
    TBA

**TokenInputWidget**

        from plone.autoform.interfaces import WIDGETS_KEY
        from plone.directives.form.schema import TEMP_KEY
        from plone.app.dexterity.behaviors.metadata import ICategorization
        from zope import schema as _schema

        _directives_values = ICategorization.queryTaggedValue(TEMP_KEY)
        _directives_values.setdefault(WIDGETS_KEY, {})
        widget = 'collective.z3cform.widgets.token_input_widget.TokenInputWidget'
        _directives_values[WIDGETS_KEY]['subjects'] = widget
        _schema.getFields(ICategorization)['subjects'].index_name = 'Categories'

**RelatedContentWidget**
    TBA

