文件夹生成后 Plone 自动生成内容
Plone automatic content generation following folder generation
我被要求在我的 Plone 安装中执行以下操作:
After a user created a new folder, he should be forwarded to the
creation of a new page which should then be the default view of the
folder.
我尝试使用内容规则来实现这一点,但不幸的是那里不支持这种行为。
您对实现该行为有何建议?
以下应该是您问题的解决方案
在 events.py
中定义事件处理程序
def notifyFolderIsAdded(folder, event):
folder.REQUEST.RESPONSE.redirect(folder.absolute_url() + "/++add++Document")
在configure.zcml
中注册事件处理器
<subscriber
for="plone.app.contenttypes.interfaces.IFolder
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".events.notifyFolderIsAdded" />
查看 Plone 文档中的 Events and Event Handlers。
创建一个新的内容类型,作为文件夹的克隆,由富文本字段扩展。这是一个基于原型的工作示例:
https://github.com/ida/adi/tree/master/adi.subsection
它附带两个视图模板,一个只显示文本字段,另一个显示文本字段和项目子项的列表。
有相应的应用程序 ;)
第 3 方内容规则允许您设置默认视图。只需将 sc.contentrules.layout 添加到您的构建中即可。
此外,您可以添加另一个包以允许 Python 通过网络执行脚本操作(以便将用户重定向到文档创建)。有两个选项,不知道有没有更新:
我认为@Ida 的想法是您的客户可能会寻求的一个很好的解决方案。如果您知道怎么做,那么做起来非常敏捷。
我们将执行以下操作:
- 通过 RichText 行为将 Rich Text 字段添加到原始文件夹类型(或文件夹类型的克隆,如果您愿意)
- 允许该文件夹类型使用
document_view
- 通常仅由 Pages/Documents 使用的视图。
- 默认要使用的文件夹类型
document_view
在 my.addon/my/addon/profiles/default/types/Folder.xml
将以下内容添加到您的 Plone 插件中:
<?xml version="1.0"?>
<object name="Folder" meta_type="Dexterity FTI" i18n:domain="plone"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- View information -->
<property name="default_view">document_view</property>
<property name="view_methods" purge="False">
<element value="document_view" />
</property>
<property name="behaviors" purge="False">
<element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
</property>
</object>
然后将其粘贴到同一插件中的任何 configure.zcml
(我使用了浏览器文件夹中的那个,但我很确定这无关紧要):
<configure package="plone.app.contenttypes.browser">
<browser:page
name="document_view"
for="plone.app.contenttypes.interfaces.IFolder"
template="templates/document.pt"
layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
permission="zope2.View"
menu="plone_displayviews"
title="View as Document"
/>
</configure>
这样做的问题是,如果客户想要恢复正常的 Plone 行为,那么他们需要将富文本从每个文件夹复制到新页面中。
顺便说一句,您可以为 Folder.xml
中的 view_methods
属性 设置 purge="False"
,以阻止用户选择文件夹的任何其他视图。
我被要求在我的 Plone 安装中执行以下操作:
After a user created a new folder, he should be forwarded to the creation of a new page which should then be the default view of the folder.
我尝试使用内容规则来实现这一点,但不幸的是那里不支持这种行为。
您对实现该行为有何建议?
以下应该是您问题的解决方案
在 events.py
中定义事件处理程序def notifyFolderIsAdded(folder, event):
folder.REQUEST.RESPONSE.redirect(folder.absolute_url() + "/++add++Document")
在configure.zcml
中注册事件处理器<subscriber
for="plone.app.contenttypes.interfaces.IFolder
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".events.notifyFolderIsAdded" />
查看 Plone 文档中的 Events and Event Handlers。
创建一个新的内容类型,作为文件夹的克隆,由富文本字段扩展。这是一个基于原型的工作示例: https://github.com/ida/adi/tree/master/adi.subsection
它附带两个视图模板,一个只显示文本字段,另一个显示文本字段和项目子项的列表。
有相应的应用程序 ;)
第 3 方内容规则允许您设置默认视图。只需将 sc.contentrules.layout 添加到您的构建中即可。
此外,您可以添加另一个包以允许 Python 通过网络执行脚本操作(以便将用户重定向到文档创建)。有两个选项,不知道有没有更新:
我认为@Ida 的想法是您的客户可能会寻求的一个很好的解决方案。如果您知道怎么做,那么做起来非常敏捷。
我们将执行以下操作:
- 通过 RichText 行为将 Rich Text 字段添加到原始文件夹类型(或文件夹类型的克隆,如果您愿意)
- 允许该文件夹类型使用
document_view
- 通常仅由 Pages/Documents 使用的视图。 - 默认要使用的文件夹类型
document_view
在 my.addon/my/addon/profiles/default/types/Folder.xml
将以下内容添加到您的 Plone 插件中:
<?xml version="1.0"?>
<object name="Folder" meta_type="Dexterity FTI" i18n:domain="plone"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- View information -->
<property name="default_view">document_view</property>
<property name="view_methods" purge="False">
<element value="document_view" />
</property>
<property name="behaviors" purge="False">
<element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
</property>
</object>
然后将其粘贴到同一插件中的任何 configure.zcml
(我使用了浏览器文件夹中的那个,但我很确定这无关紧要):
<configure package="plone.app.contenttypes.browser">
<browser:page
name="document_view"
for="plone.app.contenttypes.interfaces.IFolder"
template="templates/document.pt"
layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
permission="zope2.View"
menu="plone_displayviews"
title="View as Document"
/>
</configure>
这样做的问题是,如果客户想要恢复正常的 Plone 行为,那么他们需要将富文本从每个文件夹复制到新页面中。
顺便说一句,您可以为 Folder.xml
中的 view_methods
属性 设置 purge="False"
,以阻止用户选择文件夹的任何其他视图。