Metadata-Version: 1.0
Name: dolmen.widget.file
Version: 0.1
Summary: File widget for z3c.form, using Grok
Home-page: UNKNOWN
Author: Souheil Chelfouh
Author-email: trollfot@gmail.com
License: GPL
Description: ==================
        dolmen.widget.file
        ==================
        
        `dolmen.widget.file` is a package that walks hand-in-hand with
        `dolmen.file`. It provides a useable and pluggable way to render the
        `dolmen.file.FileField` in a `z3c.form.Form`, using Grok (through
        `megrok.z3cform.base`)
        
        Example
        =======
        
        We are going to develop here a small example, to demonstrate the use
        of `dolmen.widget.file`. First, we need to create a model content with
        a file field::
        
        >>> import dolmen.file
        >>> import grokcore.component as grok
        >>> from zope.interface import Interface
        >>> from zope.schema.fieldproperty import FieldProperty
        
        
        >>> class ITravelMount(Interface):
        ...   luggage = dolmen.file.FileField(title=u'Luggages')
        
        
        >>> class Mammoth(grok.Context):
        ...   grok.implements(ITravelMount)
        ...   luggage = FieldProperty(ITravelMount['luggage'])
        
        
        We now have a travel mammoth on which we can add a luggage. Now, we
        need a form to edit the animal::
        
        >>> from megrok.z3cform.base import EditForm
        >>> class EditMammoth(EditForm):
        ...    grok.name('edit')
        ...    grok.context(ITravelMount)
        
        >>> grok.testing.grok_component('edit', EditMammoth)
        True
        
        Let's instanciate a Mammoth and try to call the form on it::
        
        >>> from zope.component import getMultiAdapter
        >>> from zope.publisher.browser import TestRequest
        
        >>> manfred = Mammoth()
        >>> request = TestRequest()
        
        >>> form = getMultiAdapter((manfred, request), name='edit')
        >>> form.updateWidgets()
        >>> print form.widgets['luggage'].render()
        <span id="form-widgets-luggage"
        class="file-widget required filefield-field">
        <BLANKLINE>
        <BLANKLINE>
        <BLANKLINE>
        <input type="file" id="form-widgets-luggage-input"
        name="form.widgets.luggage" />
        <BLANKLINE>
        <BLANKLINE>
        </span>
        <BLANKLINE>
        
        Now, let's try with a value::
        
        >>> manfred.luggage = "A nice data"
        >>> form = getMultiAdapter((manfred, request), name='edit')
        >>> form.updateWidgets()
        >>> print form.widgets['luggage'].render()
        <span id="form-widgets-luggage"
        class="file-widget required filefield-field">
        <BLANKLINE>
        <div style="padding-top: 1em;">
        <input type="radio" value="nochange" checked="checked"
        class="noborder"
        name="form.widgets.luggage.nochange"
        onclick="document.getElementById('form-widgets-luggage-input').disabled=true"
        id="form-widgets-luggage-nochange" />
        <label for="form-widgets-luggage-nochange">Keep existing file</label>
        <br />
        <BLANKLINE>
        <label for="form-widgets-luggage-delete">Delete existing file</label>
        <br />
        <input type="radio" value="" class="noborder"
        name="form.widgets.luggage.nochange"
        onclick="document.getElementById('form-widgets-luggage-input').disabled=false"
        id="form-widgets-luggage-replace" />
        <label for="form-widgets-luggage-replace">Replace with new file</label>
        </div>
        <div style="padding-left: 1.5em; padding-top: 0.5em;">
        <input type="file" id="form-widgets-luggage-input"
        name="form.widgets.luggage" />
        <script type="text/javascript">document.getElementById('form-widgets-luggage-input').disabled=true;</script>
        </div>
        </span>
        <BLANKLINE>
        
        
        Changelog
        =========
        
        0.1 (2009-10-21)
        ----------------
        
        * Initial release
        
Keywords: Grok Zope3 Dolmen Widget File
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
