Déplacement pour eggification.
[Plinn.git] / Products / Plinn / skins / control / content_status_modify.py
diff --git a/Products/Plinn/skins/control/content_status_modify.py b/Products/Plinn/skins/control/content_status_modify.py
new file mode 100644 (file)
index 0000000..b8818d0
--- /dev/null
@@ -0,0 +1,32 @@
+## Script (Python) "content_status_modify"
+##parameters=workflow_action, REQUEST=None, **kw
+##title=Modify the status of a content object
+
+from ZTUtils import make_query as mq
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.exceptions import zExceptions_Unauthorized
+
+wftool = getToolByName(context, 'portal_workflow')
+mtool = getToolByName(context, 'portal_membership')
+utool = getToolByName(context, 'portal_url')
+
+if REQUEST :
+       kw.update(REQUEST.form)
+       
+try :
+       target = context.getActionInfo('object/history')['url']
+except ValueError :
+       target = context.getActionInfo('object/view')['url']
+
+res = wftool.doActionFor(context, workflow_action, **kw)
+if res :
+       # by (Plinn) convention
+       # occurs when a ObjectMoved is raised
+       kw.update({'syncFragments' : ['Breadcrumbs', 'rightCell']})
+       return REQUEST.RESPONSE.redirect('%s?%s' % (res.absolute_url(), mq(**kw)))
+
+
+kw.update({'portal_status_message' : 'Status changed.'})
+try : context.id # touch something in context
+except zExceptions_Unauthorized : target = utool()
+return REQUEST.RESPONSE.redirect('%s?%s' % (target, mq(**kw)))
\ No newline at end of file