Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plone/Zope Using two workflows on a content type, can I show the current state/states relevant to the user's role in the status bar?

Tags:

zope

plone

I have two workflows I made in the Zope Manager: A_Workflow, B_Workflow and I assigned it to a content type 'contract'.

A_Workflow has two states: Pending A Approval (Initial) A Approved

There is a transition for approving (approve_a) that transitions to A Approved and a transition for retracting (retract_a) that transitions to Pending A Approval through a required permission only the A_Manager can do.

B_Workflow has two states: Pending B Approval (Initial) B Approved

There is a transition for approving (approve_b) that transitions to B Approved and a transition for retracting (retract_b) that transitions to Pending B Approval that through a required permission only the B_Manager can do.

The contributor creates a contract and the first state is Pending A Approval. I can see the appropriate transitions are available when I logged in as an A_Manager and when I logged in as a B_Manager. However, a B_Manager can only see the state of the A_Workflow, despite the state of the B_Workflow changing (Approve B shows up when the state is Pending B Approval, Retract B shows up when the state is B Approved)

I apologize if this is an awkward question, but is it possible to show to the correct state in the status bar? If so, how can I?

like image 661
Patrick Downey Avatar asked Feb 06 '23 03:02

Patrick Downey


1 Answers

For what I understand it seems you used a workflow chain (two or more workflows assigned to a content type).

This feature is more or less hidden and unused (although it works) but Plone UI doesn't support it in any way: you can rely on it for security, but only the "main" (first in the chain) workflow is used by Plone UI.

For seeing both states you need to customize the Plone workflow menu. Just guessing: provide a new menu that override the ones in plone.app.contentmenu.

Note: customize a menu is not a complex task but you need some boilerplate like using z3c.unconfigure or overrides.zcml

See an example (this for "add new item" menu) here: https://github.com/keul/collective.factorymenu/tree/master/src/collective/factorymenu

like image 86
keul Avatar answered May 16 '23 08:05

keul