创建后的 Plone Archetypes 重定向
Plone Archetypes redirection after creation
我在互联网上搜索了一段时间,但没有找到有用的东西...
我想做一些简单的事情,例如在 save/create AT 内容类型之后将页面重定向到列表页面(文件夹)。
我已经知道我必须使用 validate_integrity.cpy 并在那里编写我的重定向逻辑,但文件不是 运行...
到目前为止,这是我的示例 validate_integrity.cpy:
## Script (Python) "validate_integrity"
##title=Validate Integrity
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind state=state
##bind subpath=traverse_subpath
##parameters=
##
from Products.Archetypes import PloneMessageFactory as _
from Products.Archetypes.utils import addStatusMessage
request = context.REQUEST
errors = {}
errors = context.validate(REQUEST=request, errors=errors, data=1, metadata=0)
import pdb; pdb.set_trace()
if errors:
message = _(u'Please correct the indicated errors.')
addStatusMessage(request, message, type='error')
return state.set(status='failure', errors=errors)
else:
message = _(u'Changes saved.')
stat = 'created'
# Redirection after saving edition forms
redirects = {'Multifile': context.aq_parent.absolute_url_path() + '/multifile'}
import pdb; pdb.set_trace()
if context.portal_type in redirects:
redirect = 'redirect_to:string:${portal_url}' + redirects[context.portal_type]
state.setNextAction(redirect)
else:
stat = 'success'
addStatusMessage(request, message)
return state.set(status=stat)
分辨率
我只需要编写以下升级步骤:
from Acquisition import aq_inner, aq_parent
from Products.CMFCore.utils import getToolByName
def upgrade(tool):
portal = aq_parent(aq_inner(tool))
setup = portal.portal_setup
setup.runImportStepFromProfile('profile-my.addon:default', 'skins')
Useful info about upgrade steps here
您的 *.metadata 文件可能丢失或有一个操作路由到与您预期不同的位置:http://docs.plone.org/old-reference-manuals/forms/using_cmfformcontroller.html
content_edit 的默认元数据位于 Products/Archetypes/skins/archetypes/content_edit。cpy.metadata:
...
[actions]
action.success = traverse_to:string:validate_integrity
action.success_add_reference = redirect_to:python:object.REQUEST['last_referer']
action.failure = traverse_to_action:string:edit
action.next_schemata = traverse_to_action:string:edit
你的操作按钮值 "success" 吗?
我在互联网上搜索了一段时间,但没有找到有用的东西...
我想做一些简单的事情,例如在 save/create AT 内容类型之后将页面重定向到列表页面(文件夹)。
我已经知道我必须使用 validate_integrity.cpy 并在那里编写我的重定向逻辑,但文件不是 运行...
到目前为止,这是我的示例 validate_integrity.cpy:
## Script (Python) "validate_integrity"
##title=Validate Integrity
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind state=state
##bind subpath=traverse_subpath
##parameters=
##
from Products.Archetypes import PloneMessageFactory as _
from Products.Archetypes.utils import addStatusMessage
request = context.REQUEST
errors = {}
errors = context.validate(REQUEST=request, errors=errors, data=1, metadata=0)
import pdb; pdb.set_trace()
if errors:
message = _(u'Please correct the indicated errors.')
addStatusMessage(request, message, type='error')
return state.set(status='failure', errors=errors)
else:
message = _(u'Changes saved.')
stat = 'created'
# Redirection after saving edition forms
redirects = {'Multifile': context.aq_parent.absolute_url_path() + '/multifile'}
import pdb; pdb.set_trace()
if context.portal_type in redirects:
redirect = 'redirect_to:string:${portal_url}' + redirects[context.portal_type]
state.setNextAction(redirect)
else:
stat = 'success'
addStatusMessage(request, message)
return state.set(status=stat)
分辨率
我只需要编写以下升级步骤:
from Acquisition import aq_inner, aq_parent
from Products.CMFCore.utils import getToolByName
def upgrade(tool):
portal = aq_parent(aq_inner(tool))
setup = portal.portal_setup
setup.runImportStepFromProfile('profile-my.addon:default', 'skins')
Useful info about upgrade steps here
您的 *.metadata 文件可能丢失或有一个操作路由到与您预期不同的位置:http://docs.plone.org/old-reference-manuals/forms/using_cmfformcontroller.html
content_edit 的默认元数据位于 Products/Archetypes/skins/archetypes/content_edit。cpy.metadata:
...
[actions]
action.success = traverse_to:string:validate_integrity
action.success_add_reference = redirect_to:python:object.REQUEST['last_referer']
action.failure = traverse_to_action:string:edit
action.next_schemata = traverse_to_action:string:edit
你的操作按钮值 "success" 吗?