Plone portal_transform未在通过webdav创建的新内容中运行

时间:2015-04-06 14:08:45

标签: plone plone-4.x

使用Plone 4.3.4,我创建了文件系统产品来创建一个新的Dexterity内容类型(“Article”)和一个新的Transform。文章包含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客户端设置的值?

谢谢, 唐

1 个答案:

答案 0 :(得分:0)

内容类型

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

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

必须为XML正文设置Content-Type请求标头(例如,设置为" text / xml"或" application / xml")。

第二种情况

新文章项目对象使用' text / plain'默认情况下。

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

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

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