跳转到主要内容

支持MIME类型的文本字段

项目描述

简介

此包提供了一个名为 RichTextzope.schema 风格字段类型,可以用于存储带有相关MIME类型的值。可以将值转换为输出MIME类型,例如从结构化文本转换为HTML。

基本用法

要使用字段,将其放置在如下所示的架构中

from plone.app.textfield import RichText
from zope.interface import Interface

class ITest(Interface):

    bodyText = RichText(
        title=u"Body text",
        default_mime_type='text/structured',
        output_mime_type='text/html',
        allowed_mime_types=('text/structured', 'text/plain',),
        default=u"Default value"
    )

这指定了文本内容的默认MIME类型以及默认输出类型,以及允许的类型元组。所有这些值都是可选的。默认MIME类型为‘text/html’,默认输出类型为‘text/x-html-safe’。默认情况下,allowed_mime_types 为 None,这意味着将允许站点范围内的默认允许输入MIME类型集。

请注意,此处默认值设置为Unicode字符串,将视为默认MIME类型。此值在字段初始化时转换为 RichTextValue 对象(见下文),因此 default 属性将为该类型的对象。

字段实际上存储了一个类型为 plone.app.textfield.value.RichTextValue 的不可变对象。此对象具有以下属性

raw

原始值作为Unicode字符串。

mimeType

原始文本的MIME类型。

output

表示值转换为默认输出MIME类型的Unicode字符串。如果转换无法成功完成,则可能为 None,但在成功转换后将被缓存。

outputMimeType

输出字符串的MIME类型。这通常从字段的 output_mime_type 属性复制。

存储

outputmimeTypeoutputMimeType 属性将与父内容对象相同的位置上的 _p_jar 存储在一起,而 raw 值则在单独的持久化对象中存储。这是为了优化在对象查看时(因此应避免加载单独的持久化对象)频繁访问 output 的情况,而 raw 值则很少访问(因此除非特别请求,否则不应占用内存)。

转换

转换使用 ITransformer 适配器进行。默认实现使用Plone的 portal_transforms 工具将一个MIME类型转换为另一个MIME类型。请注意,必须安装 Products.PortalTransforms 才能使其工作,否则,将不会注册任何默认的 ITransformer 适配器。您可以使用 [portaltransforms] 额外功能将 Products.PortralTransforms 添加为依赖项。

要从页面模板调用替代转换,可以使用以下便捷语法

<div tal:content="structure context/@@text-transform/fieldName/text/plain" />

在这里 fieldName 是字段的名称(必须在 context 中找到并包含一个 RichTextValue)。 text/plain 是期望的输出MIME类型。

可选功能

该包还包含一个 plone.supermodel 导出/导入处理程序,如果安装了 plone.supermodel,它将被配置。您可以使用 [supermodel] 扩展来添加 plone.supermodel 依赖。

如果安装了 z3c.form,则将安装一个 z3c.form 小部件。如果没有其他操作,则 [widget] 扩展会拉取这个依赖。

如果安装了 plone.rfc822,则将安装一个 plone.rfc822 字段打包器。如果没有其他操作,则 [marshaler] 扩展会拉取这个依赖。

如果安装了 plone.schemaeditor,则将安装一个 plone.schemaeditor 字段工厂。如果没有其他操作,则 editor 扩展会拉取这个依赖。

与 Simple TextArea 一起使用

或者,可以使用 RichText 字段而不带 WYSIWYG 编辑器,输入时显示简单的 TextArea,显示时以 HTML 格式输出。在这个例子中,预期 plone.intelligenttext 转换可用。还预期安装 plone.autoform 和 plone.app.z3cform。

from z3c.form.browser.textarea import TextAreaFieldWidget
from plone.autoform.directives import widget

class ITest(Interface):

    bodyText = RichText(
            title=u"Intelligent text",
            default_mime_type='text/x-web-intelligent',
            allowed_mime_types=('text/x-web-intelligent', ),
            output_mime_type='text/x-html-safe',
            default=u"Default value"
        )
    widget(
        'bodyText',
        TextAreaFieldWidget,
    )

输入是简单的文本。在显示时,通过转换渲染 HTML 并显示。要显示未转义的 HTML,输出必须是 'text/x-html-safe'。

进一步阅读

有关字段行为的更多详细信息,请参阅 field.txt,有关 plone.supermodel 处理程序的更多详细信息,请参阅 handler.txt。

问题跟踪器

请通过 Plone 问题跟踪器 报告问题。

支持

可以通过 Plone 的支持渠道 回答问题。

贡献

源代码位于 GitHub 上托管的 Plone 代码存储库

贡献者请阅读文档 Plone 核心的开发流程

变更日志

3.0.0 (2024-06-26)

破坏性更改

  • getAllowedContentTypes 中删除对 portal_properties 的使用。此代码仍在检查 portal_properties.site_properties.forbidden_contenttypes。[maurits] (#125)

内部

  • 更新配置文件。[plone 开发者] (6e36bcc4)

2.0.1 (2024-01-19)

内部

  • 更新配置文件。[plone 开发者] (55bda5c9)

2.0.0 (2023-03-21)

破坏性更改

  • 放弃 Python 2 支持。[jensens] (#48)

错误修复

  • 依赖于 plone.base 并删除对 Products.CMFPlone 的隐式循环依赖。[jensens] (#48)

内部

  • 更新配置文件。[plone 开发者] (80cf330f)

1.3.7 (2023-02-08)

错误修复

  • 删除对 ZODB3 的依赖,使用 ZODB。为 Plone 6 和更新版本的 Python 添加 troove 类别。[jensens] (#47)

1.3.6 (2021-11-25)

错误修复

  • 修复从 portal_properties 到注册表的 wysiwyg 编辑器设置的使用。[duchenean, gotcha] (#45)

1.3.5 (2020-09-26)

错误修复

  • 修复了对 zope.component.interfaces.ComponentLookupError 的弃用警告。[maurits] (#43)

1.3.4 (2020-04-20)

错误修复

  • 次要打包更新。[#1]

1.3.3 (2020-03-09)

错误修复

  • Black-en & isort 代码。[thet] (#39)

1.3.2 (2019-09-13)

错误修复

  • 在 Python 2 上检查转换输出是否为实际字符串。[agitator] (#37)

1.3.1 (2019-03-21)

错误修复

  • 修复在转换中检查引用图像时的 Python 3 问题。[petschki] (#34)

  • 初始化 towncrier。[gforcada] (#2548)

1.3.0 (2018-10-31)

新功能

  • Python 3 修复,需要 plone.rfc822>=2.0b1。[jensens]

  • 添加 getSize 方法以获取 RichTextValue 的大小(以字节为单位)[davisagli]

错误修复

  • 修复 py3 中的 doctests 测试[pbauer]

1.2.12(未发布)

错误修复

1.2.11 (2018-04-08)

错误修复

  • Python 3 修复[pbauer]

1.2.10 (2018-01-30)

错误修复

  • 导入是 Python3 兼容的[b4oshany]

1.2.9 (2017-07-18)

错误修复

  • 确保新的简单 textarea 模板不会用于 rich text 小部件,而只会用于简单 textarea 小部件。否则在显示时您会看到:RichTextValue 对象。(您是指 .raw 还是 .output?)。修复 问题 22。[maurits]

1.2.8 (2017-02-05)

新功能

  • 启用 RichText 字段与简单的 ITextAreaWidget 一起工作。[jensens]

错误修复

  • 清理:使用更多的 zope.interface 装饰器,添加 utf8 头部,isort 导入,zcml 条件已足够。[jensens]

1.2.7 (2016-08-10)

修复

  • 使用 zope.interface 装饰器。[gforcada]

1.2.6 (2015-05-31)

  • 修复 1.2.5 版本中引入的 RawValueHolder 和 RichTextValue 的负数相等性错误。[jone]

1.2.5 (2015-03-26)

  • 为 RawValueHolder 和 RichTextValue 添加相等性检查 (__eq__);[davisagli]

  • 修复 marshall 解码,始终将原始值解码为 unicode。[datakurre]

  • 删除已弃用的 utils.getSiteEncoding,因为它已被弃用且未在任何地方使用。[thet]

  • 对于 Plone 5,支持从注册表中获取标记控制面板设置,同时仍然支持 Plone < 5 的正常 portal_properties 访问。[thet]

  • 解决了一个有趣的循环导入问题,但由于导入顺序的原因,它并不有效。[thet]

1.2.4 (2014-10-20)

  • 强制启用 WYSIWYG,因此当我们以 'text/plain'(或另一个 MIME 类型)开始时,选择 'text/html' 将导致 TinyMCE 重新启动。[lentinj]

  • 告诉 Products.TinyMCE MIME 类型是什么,这样它就不必自己计算了。[lentinj]

  • 使用 closest_content 在子表单的海洋中导航,以找到我们可以使用 portal_url 的东西。[lentinj]

  • 当原始值不是 unicode 且不是 ascii 时,不要报错。在这种情况下,将其编码为 unicode,然后解码为正确的字符串,头痛欲裂。[eleddy]

  • 国际化。[thomasdesvenain]

1.2.3 (2014-01-27)

  • 当原始值是 None 时,不要报错。在这种情况下,输出一个空的 unicode 字符串。[maurits]

1.2.2 (2013-01-01)

  • 添加对 collective.ckeditor 的支持。[tschorr]

1.2.1 (2012-08-14)

  • 修复与 Zope 2.12 的兼容性。[davisagli]

1.2 (2012-08-14)

  • 如果字段有 max_length,将其传递给 wysiwyg 宏。[davisagli]

  • 在 widget_input.pt 中从内联脚本中确定要使用哪个编辑器的 wysiwyg_support 模板。修复了 collective.ckeditor 的支持。[tschorr, davisagli]

  • 更新 getSite 导入位置。[hannosch]

  • 确保如果指定了字段约束,则对其进行验证。这关闭了 http://code.google.com/p/dexterity/issues/detail?id=200 [davisagli]

  • 修复了对 plone.schemaeditor 的支持问题。[davisagli]

  • 为 RichText 字段支持 max_length 参数。超过 max_length 的输入不通过验证。[davisagli]

  • 向 wysiwyg_support 宏传递一些额外的上下文,以帮助确定字段的 MIME 类型。[davisagli]

  • 将弃用的 getSiteEncoding 更改为硬编码的 utf-8 [tom_gross]

1.1 - 2012-02-20

  • 提供用于与 plone.schemaeditor 一起使用的 RichText 字段模式。仅通过网页编辑暴露 default_mime_type 字段,其词汇表来自 plone.app.vocabularies 中的 AllowedContentTypes 词汇表(可以通过 Plone 的标记控制面板进行调整)。[davisagli]

  • 当引发 TransformError 时记录原始异常。[rochecompaan]

1.0.2 - 2011-11-26

  • 如果没有找到转换路径:现在返回一个空字符串并记录错误消息,而不是向用户显示异常页面。[kleist]

  • 修复当源和目标 MIME 类型相同时发生的无限递归错误。[rochecompaan]

1.0.1 - 2011-09-24

  • 确保如果指定了字段约束,则对其进行验证。这关闭了 http://code.google.com/p/dexterity/issues/detail?id=200 [davisagli]

  • 确保如果没有输入文本,则强制字段验证失败。这关闭了 http://code.google.com/p/dexterity/issues/detail?id=199 [davisagli]

  • 将上下文包装在表单上下文中,而不是站点中,以便正确生成相对链接。[davisagli]

  • 如果表单没有前缀,避免重复 textarea 的 id。[davisagli]

  • 修复了编辑器没有加载的情况,因为正在编辑的上下文是字典。[davisagli]

  • 将z3c.form小部件的rowscols设置传递给wysiwyg编辑器宏。[davisagli]

1.0 - 2011-04-30

  • 修复失败的测试。[davisagli]

1.0b7 - 2011-02-11

1.0b6 - 2010-04-18

  • 修复字段模式,以便在添加字段时使用plone.schemaeditor作为表单模式。[rossp]

  • 删除当前成员编辑偏好的未使用查找。这由wysiwyg_support宏处理。[davisagli]

1.0b5 - 2009-11-17

  • 修复了用户未设置编辑偏好时可能发生的错误。[optilude]

  • 修复Plone 4上的测试。[optilude]

  • 添加用于与plone.schemaeditor一起使用的字段工厂(仅在安装了该包时配置)。[davisagli]

1.0b4 - 2009-10-12

  • 更新README.txt以符合现实。[optilude]

  • 修复了@@text-transform视图,使其能够与路径遍历一起工作。[optilude]

1.0b3 - 2009-10-08

  • 添加plone.rfc822字段marshaller。仅在安装了该包时进行配置。[optilude]

1.0b2 - 2009-09-21

  • 在ZODB中存储原始值,而不是在BLOB中。这避免了有成千上万的小BLOB文件可能带来的潜在问题,这在许多文件系统上不会非常节省空间。[optilude]

  • 使RichTextValue不可变。这大大简化了代码,避免了需要跟踪父对象的需求。[optilude]

1.0b1 - 2009-09-17

  • 初始发布

项目详情


下载文件

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

源分发

plone_app_textfield-3.0.0.tar.gz (36.8 kB 查看哈希值)

上传时间

构建分发

plone.app.textfield-3.0.0-py3-none-any.whl (31.7 kB 查看哈希值)

上传时间 Python 3

支持