使用tinymce for dolmen的富文本小部件
dolmen.widget.tinymce的Python项目详细描述
dolmen.widget.tinymce是一个提供 可插入的方式将文本字段呈现为 zeam.form表格。
示例
我们将在这里开发一个小示例来演示 dolmen.widget.tinymce的。首先,我们需要创建一个模型内容 文本字段:
>>> import grokcore.component as grok >>> from zope.interface import Interface >>> from zope.schema import Text >>> from zope.schema.fieldproperty import FieldProperty >>> class ICave(Interface): ... paintings = Text(title=u'Description of the cave paintings') >>> class Grotto(grok.Context): ... paintings = FieldProperty(ICave['paintings'])
我们现在有了一个定义文本字段的模型。我们要编辑/查看 此内容使用富编辑器,允许输入富文本和 显示为有效的HTML。为此,我们定义一个表单:
>>> from zeam.form.ztk import Form, Fields>>> class EditCave(Form): ... grok.name('edit') ... grok.context(ICave) ... ignoreContent = False ... fields = Fields(ICave)>>> grok.testing.grok_component('edit', EditCave) True
在这一点上,如果我们引用表单,我们有一个 渲染:
>>> from zope.publisher.browser import TestRequest >>> homecave = Grotto() >>> request = TestRequest() >>> form = EditCave(homecave, request) >>> form.updateWidgets() >>> print form.fieldWidgets.get('form.field.paintings').render() <textarea id="form-field-paintings" name="form.field.paintings" class="field field-text field-required" cols="80" rows="5"></textarea>
要获得tinymce小部件,只需使用 字段,指示要渲染的内容:
>>> from dolmen.widget.tinymce import TINYMCE_INPUT >>> form = EditCave(homecave, request) >>> form.fields['paintings'].mode = TINYMCE_INPUT >>> form.updateWidgets() >>> print form.fieldWidgets.get('form.field.paintings').render() <script type="text/javascript"> $(document).ready(function(){ $('textarea[name="form.field.paintings"]').tinymce(); }); </script> <textarea id="form-field-paintings" name="form.field.paintings" class="field field-text field-required" cols="80" rows="5"></textarea>
输入小部件的模式可以是“tinymce.input”,并且 “tinymce.display”将值显示为有效的HTML:
>>> from dolmen.widget.tinymce import TINYMCE_DISPLAY >>> homecave.paintings = u"<h1>Very nice paintings</h1><p>Mammoth</p>" >>> form = EditCave(homecave, request) >>> form.fields['paintings'].mode = TINYMCE_DISPLAY >>> form.updateWidgets() >>> print form.fieldWidgets.get('form.field.paintings').render() <div id="form-field-paintings" name="form.field.paintings" class="field"><h1>Very nice paintings</h1><p>Mammoth</p></div>
更改日志
1.0b3(2011-01-18)
- 更正了入口点和包含路径。
1.0b2(2011-01-13)
- 现在我们使用fanstatic。
1.0b1(2010-07-06)
- 调整了tinymce小部件的菜单,以便删除无用的 选项。
- 包现在正在使用^{tt2}中的最新更改$ 核心,例如modemarker,以便获得正常的模式定义。
1.0a1(2010-06-06)
- 初始版本