【问题标题】:Customize TinyMCE for an Dexterity RichWidget为 Dexterity RichWidget 自定义 TinyMCE
【发布时间】:2014-12-05 01:01:56
【问题描述】:

我正在使用灵活性创建一些自定义内容类型。我想“自定义”富文本字段的方面,只允许在该字段上使用 TinyMce 的基本按钮。

在我可以使用的原型中

TextField('text',
allowable_content_types=('text/html',),
default_output_type='text/x-html-safe',
required=1,
widget=RichWidget
(label='Content',
    allow_buttons=(
    'bold',
    'italic',
    'justifyleft',
    'justifyright',
    ),
),),

我将如何使用基于 Dexerity 的内容类型来做到这一点?

【问题讨论】:

  • 我想可以使用一些 javascript 简单地隐藏/禁用客户端不需要的按钮,因为按钮标有包含字段名的 id。但我不太确定什么是实现这一目标的好方法,在哪里做等等 - 有人对这种方法有任何想法吗?

标签: plone dexterity


【解决方案1】:

目前似乎没有一种“好”的方式来做到这一点。即使是 Plone 文档目前也不知所措。 http://docs.plone.org/develop/plone/forms/wysiwyg.html#id9

问题在于 Products.TinyMCE 试图从 Field 的小部件属性中获取 WYSIWYG 配置。

https://github.com/plone/Products.TinyMCE/blob/1.3.6/Products/TinyMCE/utility.py#L711-L713

# Get widget attributes
widget = getattr(field, 'widget', None)
filter_buttons = getattr(widget, 'filter_buttons', None)
allow_buttons = getattr(widget, 'allow_buttons', None)

但是,据我了解,使用 Dexterity,我们将字段映射到表单对象上的小部件。

from plone.autoform import directives as form
from plone.app.z3cform.wysiwyg import WysiwygFieldWidget

class IExample(model.schema):
    form.widget('body', WysiwygFieldWidget)
    body = schema.Text(title=u"Body")

因此,我们的 body 字段不包含 Products.TinyMCE 可以从中提取配置的小部件属性。

无论如何,如果你现在需要它工作,我可以通过以下操作破解它:

在您的 ZMI 中,自定义 portal_skins/tinymce/tinymce_wysiwyg_support 以将行 field field|nothing 更改为 field field|view/field|nothing

以模式驱动的方式定义您的内容类型,并为您的所见即所得字段执行以下操作:

class mywidg(object):
    allow_buttons = ('bold',
                     'italic',
                     'justifyright',
                     'justifyleft',)

class IExample(model.schema):
    form.widget('body', WysiwygFieldWidget)
    body = schema.Text(title=u"Body")
    body.widget = mywidg()

【讨论】:

  • 这看起来很有希望。好奇维托的反馈。如果它有效,您肯定会获得支持。
  • 这是个好主意。我明天或下周一测试它。非常感谢
  • 我今天注意到我对 wysiwyg_support 的更改破坏了 Archetypes 上的 TinyMCE。我将更改移至 tinymce_wysiwyg_support 宏,一切似乎都按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多