z3c.formwidget.ckeditor

Software Screenshot:
z3c.formwidget.ckeditor
Software Details:
Version: 2.0.0 Alpha 1
Upload Date: 11 May 15
Distribution Type: Freeware
Downloads: 3

Rating: 5.0/5 (Total Votes: 1)

z3c.formwidget.ckeditor 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 >
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 >
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 >
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


  >  >  >  widget.update()
  >  >  >  print widget.render()
< /textarea >
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 >
CKEDITOR.replace('text',
 {"uiColor": "#9AB8F3", "toolbar": "Basic"});< /script >

What is new in this release:

  • Added support for Python 3.3.
  • Replaced deprecated zope.interface.implements usage with equivalent zope.interface.implementer decorator.
  • Dropped support for Python 2.4 and 2.5.

What is new in version 1.1.0:

  • Upgraded CKEditor to 3.5.2.
  • Removed deprecation warnings.

Requirements:

  • Python

Other Software of Developer Stephan Richter and the Zope Community

Comments to z3c.formwidget.ckeditor

Comments not found
Add Comment
Turn on images!