| 1 | == Enhancing VirtualTicketPermissionsPlugin == |
| 2 | |
| 3 | I did some work on the VirtualTicketPermissionsPlugin. |
| 4 | |
| 5 | See ticket #xxx for patch and progress. |
| 6 | |
| 7 | === Overview of the new features === |
| 8 | |
| 9 | * in addition to the ''group_blacklist'', in section {{{[virtualticketpermissions]}}}, |
| 10 | you can also write a '''group_whitelist''' setting. |
| 11 | * only groups on the whitelist will be considered for the TICKET_IS_..._GROUP |
| 12 | permissions |
| 13 | * the blacklist, if also configured, still works |
| 14 | * both whitelist and blacklist entries '''can be regular expressions''' |
| 15 | (each list will be regex-compiled once on component init for performance) |
| 16 | * group names can be mixed-case in addition to the already supported all-lower-case; |
| 17 | only complete-upper-case stuff, i.e. PERMISSIONS_PROPER, are excluded |
| 18 | * for '''all''' of the ''TICKET_IS_XXX'' permissions provided by the module, |
| 19 | there is now a corresponding '''TICKET_IS_NOT_XXX''' negating the test. |
| 20 | This permits writing mutually exclusive workflow steps, like this: |
| 21 | {{{ |
| 22 | reassign = assigned,accepted,started -> assigned |
| 23 | reassign.operations = set_owner |
| 24 | reassign.permissions = TICKET_IS_OWNER_GROUP |
| 25 | |
| 26 | takeover = assigned,accepted,started -> assigned |
| 27 | takeover.operations = set_owner_to_self |
| 28 | takeover.permissions = TICKET_IS_NOT_OWNER_GROUP |
| 29 | OUP |
| 30 | }}} |
| 31 | A single user will either see reassign (when they share a group with the current owner), |
| 32 | or ''takeover'', but never both (unless they are TRAC_ADMIN, which seems to not call down |
| 33 | to the plugin at all, unfortunately) |