[ticket-workflow]
; opensource-workflow.ini

; accept action
; When you accept a ticket, you get ownership of it.  (You can't accept a
; ticket on someone else's behalf.)
accept = new,assigned,accepted,started -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY

; assign, reassign, unassign actions
assign = new -> assigned
assign.operations = set_owner
assign.permissions = TICKET_MODIFY

reassign = assigned,accepted,started -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY

; Allow correcting the ownership of a closed ticket.
change_owner = closed -> closed
change_owner.name = change ownership
change_owner.operations = set_owner
change_owner.permissions = TICKET_MODIFY

unassign = assigned,accepted,started -> new
unassign.operations = del_owner
unassign.permissions = TICKET_MODIFY

; leave actions
leave = * -> *
leave.operations = leave_status
leave.default = 1

; resolve actions
resolve = new,assigned,accepted,started -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

; start/stop actions
start = accepted,assigned -> started
start.operations = set_owner_to_self
start.permissions = TICKET_MODIFY

stop = started -> assigned
stop.permissions = TICKET_MODIFY

; reopen actions
reopen = closed -> new
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

; request info actions
; For tickets with an owner, they go back to assigned
requestinfo = assigned,accepted,started -> infoneeded
requestinfo.name = request info
requestinfo.permissions = TICKET_MODIFY

provideinfo = infoneeded -> assigned
provideinfo.name = provide info
provideinfo.permissions = TICKET_MODIFY
provideinfo.default = 2

; But tickets without an owner go back to new.
requestinfo_new = new -> infoneeded_new
requestinfo_new.name = request info
requestinfo_new.permissions = TICKET_MODIFY

provideinfo_new = infoneeded_new -> new
provideinfo_new.name = provide info
provideinfo_new.permissions = TICKET_MODIFY
provideinfo_new.default = 2
