Metadata-Version: 1.0
Name: z3c.formwidget.ckeditor
Version: 1.0.0
Summary: A CKEditor widget for text fields using z3c.form
Home-page: http://pypi.python.org/pypi/z3c.formwidget.ckeditor
Author: Stephan Richter and the Zope Community
Author-email: zope-dev@zope.org
License: ZPL 2.1
Description: This package provides a CKEditor widget for the `z3c.form` library. It also
        provides a `RichText` schema field, which makes the usage of CKEditor
        completely transparent.
        
        
        Detailed Documentation
        **********************
        
        ====================================
        RichText Fields and CKEditor Widgets
        ====================================
        
        This package a provides a new field called `RichText`, which is a simple
        extension to the default `Text` field. The `RichText` field declares that it
        contains HTML-markup as part of its text.
        
        >>> from z3c.formwidget.ckeditor import richtext
        
        So let's create a rich text field:
        
        >>> text = richtext.RichText(__name__='text')
        
        Let's now verify that the field provides the text and rich text schema:
        
        >>> import zope.schema
        >>> from zope.interface import verify
        >>> from z3c.formwidget.ckeditor import interfaces
        
        >>> verify.verifyObject(interfaces.IRichText, text)
        True
        >>> verify.verifyObject(zope.schema.interfaces.IText, text)
        True
        
        Next, a widget is provided to edit the rich text field. It uses the CKEditor.
        
        >>> from z3c.formwidget.ckeditor import interfaces, ckeditor
        
        The ``CKEditorWidget`` is a widget:
        
        >>> from z3c.form.interfaces import IWidget
        
        >>> verify.verifyClass(interfaces.ICKEditorWidget, ckeditor.CKEditorWidget)
        True
        >>> verify.verifyClass(IWidget, ckeditor.CKEditorWidget)
        True
        
        The widget can render an input field only by adapting a request:
        
        >>> from z3c.form.testing import TestRequest
        >>> request = TestRequest()
        >>> widget = ckeditor.CKEditorWidget(request)
        
        Such a widget provides ``IWidget``:
        
        >>> IWidget.providedBy(widget)
        True
        
        Let's add some meaningful generic data:
        
        >>> widget.id = 'id'
        >>> widget.name = 'name'
        
        If we render the widget we get the HTML:
        
        >>> widget.update()
        >>> print widget.render()
        <textarea id="id" name="name" class="CKEditorWidget"></textarea>
        <script type="text/javascript">CKEDITOR.replace('name', {});</script>
        
        As you can see, initially, CK Editor is instantiated with all its
        defaults. This can be changed by modifying the `config` attribute on the
        widget.
        
        If the `config` attribute is a string, it is interpreted as a JavaScript
        variable name. The variable must be declared beforehand.
        
        >>> widget.config = 'myCKEditorConfig'
        >>> widget.update()
        >>> print widget.render()
        <textarea id="id" name="name" class="CKEditorWidget"></textarea>
        <script type="text/javascript">CKEDITOR.replace('name', myCKEditorConfig);</script>
        
        Alternatively, the config attribute can be a dictionary of options, which are
        encoded to Javascript upon render time:
        
        >>> widget.config = {'toolbar': 'Basic', 'uiColor': '#9AB8F3'}
        >>> widget.update()
        >>> print widget.render()
        <textarea id="id" name="name" class="CKEditorWidget"></textarea>
        <script type="text/javascript">CKEDITOR.replace('name', {"uiColor": "#9AB8F3", "toolbar": "Basic"});</script>
        
        All other values cause a `ValueError` to be raised.
        
        >>> widget.config = 3
        >>> widget.update()
        Traceback (most recent call last):
        ...
        ValueError: ('Invalid config object', 3)
        
        The field widget for the rich text field is available too of course:
        
        >>> import zope.component
        >>> from z3c.form.interfaces import IFieldWidget
        
        >>> widget = zope.component.getMultiAdapter((text, request), IFieldWidget)
        >>> widget
        <CKEditorWidget 'text'>
        
        >>> widget.update()
        >>> print widget.render()
        <textarea id="text" name="text"
        class="CKEditorWidget required richtext-field"></textarea>
        <script type="text/javascript">CKEDITOR.replace('text', {});</script>
        
        You can also create CKEditor Field Widget factories on the fly using a given
        configuration:
        
        >>> MinimalCKEditorWidget = ckeditor.CKEditorFieldWidgetFactory(
        ...     {'toolbar': 'Basic', 'uiColor': '#9AB8F3'})
        
        >>> widget = MinimalCKEditorWidget(text, request)
        >>> widget.update()
        >>> print widget.render()
        <textarea id="text" name="text"
        class="CKEditorWidget required richtext-field"></textarea>
        <script type="text/javascript">CKEDITOR.replace('text',
        {"uiColor": "#9AB8F3", "toolbar": "Basic"});</script>
        
        
        =======
        CHANGES
        =======
        
        
        1.0.0 (2009-11-03)
        ------------------
        
        - Initial Release
        
Keywords: zope3 form widget ckeditor text
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: Zope3
