使用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客户端设置的值?
谢谢, 唐
答案 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和其他内容特定的视图中。