1

使用 Plone 4.3.4,我创建了文件系统产品来创建新的 Dexterity 内容类型(“文章”)和新的转换。文章包含一个 RichTextField 和一个自定义转换(“xml_to_html”)。

xml_to_html 转换旨在使用基于 SAX 的解析器和模板系统将 RichTextField 的原始 XML 输入转换为 HTML 输出。这在通过网络创建或修改文章项目时非常有效。

mime_types_registry 设置为将 Article 映射到 *.xml 和 mimetype text/xml。

通过 WebDav 上传 XML 文件时,Plone 正确地创建了一个以 RichTextField 指定为主的文章。但是,xml_to_html 转换不会运行以创建转换后的输出。RichTextValue.raw 包含上传的文件内容,但从不生成 RichTextValue.output。

更复杂的是 WebDav 客户端设置 Content-Type: text/xml 但 RichTextValue.mimeType 总是以 text/plain 的形式出现。

我可以看到我的特定类型事件挂钩正在工作。我可以基于 zope.lifecycleevent.interfaces.IObjectAddedEvent 执行任意代码,但对象创建过程永远不会遇到 xml_to_html 转换。

问题: a) portal_transforms 是否应用于通过 WebDav 创建的内容项?如果不是,那这就是我的答案。

b) 为什么主字段的 mimetype 不尊重 webdav 客户端设置的值?

谢谢,唐

4

1 回答 1

0

内容类型

mimeType 和 encoding 属性设置在 Content-Type 标头的值上 - docs.plone.org

检查您的 webdav 客户端内容类型标头。

必须为 XML 主体适当地设置 Content-Type 请求头(例如,设置为“text/xml”或“application/xml”)。

第二种情况

New Article Item 对象默认使用“text/plain”创建。

在这种情况下,您可以致电

context.portal_transforms.convert('xml_to_html',context.richtextfield_name)

直接在 article-template-view.pt 和其他内容特定视图中。

于 2015-04-10T22:11:27.430 回答