用于使用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)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素