= Workflow Discussion = The original proposal is at NewWorkFlow. The [source:/sandbox/workflow workflow sandbox] is an attempt to implement an API for making the ticket system more generic. == Tasks == * ~~Add a `disabled` attribute to fields so that workflow hooks can disable fields but still leave them visible.~~ * ~~Add a `hidden` attribute for the same reason. I've actually already done this, simply by renaming the `skip` attribute to `hidden`. Did this to be more consistent with HTML.~~ * Add a `fullrow` attribute which signifies that the form element will span both columns of the ticket property fieldset. eg. summary, type, description and reporter would all be `fullrow=1` (done, but code in the templates is not implemented). * Add a `checkbox` field type. This would store the data in the field value as `check1|check2|check4`. I'm not sure about this one, or how it would be presented in the query module, but I figured that people might find it useful. * Remove code specific to individual fields from ticket.cs/newticket.cs. The summary, type, description and reporter would be converted to use the the same generic code as the rest of the fields. * Remove large `if/elif` statement from ticket.cs/newticket.cs. Currently there is a large if/then/else style block which is used to display all fields other than the four described above. This could be removed and replaced with a call to form_control(). * In order to specify the order the generic field display code would use, the above changes would probably require the ticket.fields.* HDF branch to be changed to an array (currently it is a dict). This change would be in api.py (return fields in the correct display order) and the .cs files, possibly elsewhere. * If possible I would also like to factor out the ticket field display/edit code from both ticket.cs and newticket.cs into ticket_fields.cs, as the template code is basically functionally identical. * Add a `.onchange` option for javascript field validation. * Add a `.title` option, or maybe `.tooltip`, though I think for the sake of consisteny it should be `.title`.