跳转到主要内容

使用z3c.form的文本字段CKEditor小部件

项目描述

此包为z3c.form库提供了一个CKEditor小部件。它还提供了一个RichText架构字段,使得CKEditor的使用完全透明。

详细文档

富文本字段和CKEditor小部件

本包提供了一个名为 RichText 的新字段,它是默认的 Text 字段的简单扩展。该 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 Editor是使用所有默认值实例化的。这可以通过修改小部件上的 config 属性来更改。

如果 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>

所有其他值都会引发一个 ValueError

>>> 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>

您还可以使用给定的配置动态创建CKEditor字段小部件工厂

>>> 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)

  • 初始发布

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

z3c.formwidget.ckeditor-1.1.0.tar.gz (1.6 MB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面