用于使用z3c.form的文本字段的ckeditor小部件
z3c.formwidget.ckeditor的Python项目详细描述
这个包为z3c.form库提供了一个ckeditor小部件。它也 提供一个richtextschema字段,该字段使用了ckeditor 完全透明。
详细文档
richtext字段和ckeditor小部件
这个包a提供了一个名为richtext的新字段,它是一个简单的 默认文本字段的扩展名。richtext字段声明 包含HTML标记作为其文本的一部分。
>>> from z3c.formwidget.ckeditor import richtext
因此,让我们创建一个富文本字段:
>>> text = richtext.RichText(__name__='text')
现在让我们验证该字段是否提供了文本和富文本模式:
>>> 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
接下来,将提供一个小部件来编辑富文本字段。它使用了ckeditor。
>>> from z3c.formwidget.ckeditor import interfaces, ckeditor
CKEditorWidget是一个小部件:
>>> from z3c.form.interfaces import IWidget>>> verify.verifyClass(interfaces.ICKEditorWidget, ckeditor.CKEditorWidget) True >>> verify.verifyClass(IWidget, ckeditor.CKEditorWidget) True
小部件只能通过调整请求来呈现输入字段:
>>> from z3c.form.testing import TestRequest >>> request = TestRequest() >>> widget = ckeditor.CKEditorWidget(request)
这样的小部件提供IWidget:
>>> IWidget.providedBy(widget) True
让我们添加一些有意义的通用数据:
>>> widget.id = 'id' >>> widget.name = 'name'
如果我们呈现小部件,我们会得到html:
>>> widget.update() >>> print widget.render() <textarea id="id" name="name" class="CKEditorWidget"></textarea> <script type="text/javascript">CKEDITOR.replace('name', {});</script>
正如您所看到的,最初,ck编辑器被实例化为 默认值。可以通过修改 小部件
如果config属性是一个字符串,则它被解释为一个javascript 变量名。变量必须事先声明。
>>> 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>
或者,config属性可以是选项字典,这些选项是 渲染时编码为javascript:
>>> 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>
所有其他值都会导致引发值错误。
>>> widget.config = 3 >>> widget.update() Traceback (most recent call last): ... ValueError: ('Invalid config object', 3)
富文本字段的字段小部件当然也可用:
>>> 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>
您还可以使用给定的 配置:
>>> 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>
变化
1.1.0(2011-03-02)
- 将ckeditor升级到3.5.2。
- 删除了弃用警告。
1.0.0(2009-11-03)
- 初始版本