## This file is subject to the terms and conditions defined in ## file 'LICENSE', which is part of this source code package. ## Copyright (c) 2009 SKR Farms (P) LTD. <%inherit file="/base/basic1.html"/> <%namespace name="elements" file="/component/elements.html"/> <%namespace name="forms" file="/component/forms.html"/> <%! page_tooltips = [ [ 'Ticket-list', """List of all tickets tracked under this project, organised in grid-style, enabling users to edit ticket attributes in-line. To know how, just double click on any of the grid's cell (that are not highlighted gray) and edit it. It is also possible to navigate from one cell to another using 'up', 'down', 'left', 'right' arrows, to edit just press enter and edit. To save the edited content, just press 'enter' or click outside the cell.
The header row in the grid can be used for two purpose. One, to sort the list by desired column (by left clicking), two, to add/remove columns (by right clicking). """ ], [ 'Standard-filters', """Standard ticket filters are named filter rules, based on complex regular expressions defined at the backend. First among the list of standard filters will be interpreted as default filter. These filters are available for all registered users. Contact site-administrator to define a new type of standard filter. """ ], [ 'Custom-filters', """Listed tickets can further be filtered using its attribute values, like, type, severity, status, owner, component, milestone and version. When multiple values are selected, filter rules will be ANDed. """ ], [ 'Saved-filters', """Custom filters can be saved under the user who is defining the filter. """ ], [ 'Ticket', """Track issues, bugs, features, tasks etc ... using tickets. The three main attributes of a ticket are type, status, severity. Type should give an idea about why? and what? of a ticket. Status tracks ticket workflow. Severity tells how severe the ticket is to the project (synonymous to priority).
Users can move tickets from one status to another, also setting its due-date. User who is changing the ticket status will become the new owner of the ticket.
If, in case a ticket expects a response from a user other than the ticket's owner, it can be indicated so using 'promptuser' attribute.
Use ticket id, where ever the ticket needs to be referenced. """ ], [ 'Attachments', """Add summary and tags to ticket attachments.""" ], [ 'Timeline', """Timeline of ticket(s) activity""" ], ] %> <%def name="hd_links()"> ${parent.hd_links()} <%def name="hd_script()"> ${parent.hd_script()} <%def name="ticketindex( typenames, severitynames, statusnames, users, components, milestones, versions )">
Tickets : ${len(c.projtckids)}
Standard Filters
% for filtername, _l in c.tckfilters :
${filtername}
<% href = h.url_fortcklist( c.projectname, stdfilter=filtername ) %> ${elements.iconlink( href, 'servergo', title='Filter from server' )}
% endfor
Custom Filters
<% filt = h.json.loads( c.savfilterval[1] or '{}' ) %>
${forms.select( name='tck_statusname', options=['by-status']+statusnames, opt_selected=filt.get( 'tck_statusname', 'by-status' ) )}
${forms.select( name='tck_typename', options=['by-type']+typenames, opt_selected=filt.get( 'tck_typename', 'by-type' ) )}
${forms.select( name='tck_severityname', options=['by-severity']+severitynames, opt_selected=filt.get( 'tck_severityname', 'by-severity' ) )}
${forms.select( name='owner', options=['by-owner']+users, opt_selected=filt.get( 'owner', 'by-owner' ) )}
${forms.select( name='componentname', options=['by-component']+components, opt_selected=filt.get( 'componentname', 'by-component' ) )}
${forms.select( name='milestone_name', options=['by-milestone']+milestones, opt_selected=filt.get( 'milestone_name', 'by-milestone' ) )}
${forms.select( name='version_name', options=['by-version']+versions, opt_selected=filt.get( 'version_name', 'by-version' ) )}
${forms.form_addtckfilter( c.authuser, h.suburl_addtckfilter)}
Saved Filters
${forms.form_selectsavfilter( c.authuser, c.savfilterlist, c.savfiltername and c.savfiltername or '' )} % if c.savfilter : ${forms.form_deltckfilter( c.authuser, c.savfilter, h.suburl_deltckfilter )} % endif
${forms.form_tcksummary( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tcktype( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tckseverity( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tckpromptuser( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tckcomponent( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tckmilestone( c.authuser, c.project, h.suburl_configtck )} ${forms.form_tckversion( c.authuser, c.project, h.suburl_configtck )}
<%def name="bd_body()"> <% searchbox = capture( forms.form_searchbox, c.authuser, 'searchticket', 'Search-ticket', h.suburl_search, c.searchfaces ) sel_tck = capture( forms.form_selectticket, c.authuser, c.seltickets, c.ticket and str(c.ticket.id) or '' ) if c.tckeditable : newtck = ' \ \ Create' % h.url_ticketcreate else : newtck = '' attachs= '' + \ ( ' \ Attachments' % h.url_tckattachs ) charts = capture( elements.iconlink, h.url_ticketcharts, 'barchart', title="Ticket analytics" ) tline = capture( elements.iconlink, h.url_tcktimeline, 'timeline', title="Timeline of tickets" ) %> ${elements.mainnav()} ${elements.contextnav( [ searchbox, sel_tck, newtck, attachs, ], rspans=[ charts, tline ], tooltips=page_tooltips )}
% if c.authusername == 'anonymous' or not c.userpanes :
% else :
% endif
${ticketindex( c.tck_typenames, c.tck_severitynames, c.tck_statusnames, c.projusers, c.pcompnames, c.mstnnames, c.vernames )}
% if c.authusername != 'anonymous' and c.userpanes :
${elements.user_panes( c.userpanes )}
% endif
<%def name="bd_script()"> ${parent.bd_script()}