1 <tal:block metal:use-macro="templates/page/macros/frame">
2 <title metal:fill-slot="head_title" >
3 <span tal:omit-tag="true" i18n:translate="" >List of bugs</span>
4 <span tal:condition="request/dispname"
5 tal:replace="python:' - %s '%request.dispname"
6 /> - <span tal:replace="config/TRACKER_NAME" />
7 </title>
8 <span metal:fill-slot="body_title" tal:omit-tag="true">
9 <span tal:omit-tag="true" i18n:translate="" >List of bugs</span>
10 <span tal:condition="request/dispname"
11 tal:replace="python:' - %s' % request.dispname" />
12 </span>
13 <tal:block metal:fill-slot="content">
15 <p tal:condition="python:not (context.is_view_ok()
16 or request.user.hasRole('Anonymous'))" i18n:translate="">
17 You are not allowed to view this page.</p>
19 <p tal:condition="python:not context.is_view_ok()
20 and request.user.hasRole('Anonymous')" i18n:translate="">
21 Please login with your username and password.</p>
23 <tal:block tal:define="batch request/batch" tal:condition="context/is_view_ok">
24 <table class="list">
25 <tr>
26 <th tal:condition="request/show/severity" i18n:translate="">Severity</th>
27 <th tal:condition="request/show/id" i18n:translate="">ID</th>
28 <th tal:condition="request/show/creation" i18n:translate="">Creation</th>
29 <th tal:condition="request/show/activity" i18n:translate="">Activity</th>
30 <th tal:condition="request/show/actor" i18n:translate="">Actor</th>
31 <th tal:condition="request/show/title" i18n:translate="">Title</th>
32 <th tal:condition="request/show/components" i18n:translate="">Components</th>
33 <th tal:condition="request/show/versions" i18n:translate="">Versions</th>
34 <th tal:condition="request/show/status" i18n:translate="">Status</th>
35 <th tal:condition="request/show/resolution" i18n:translate="">Resolution</th>
36 <th tal:condition="request/show/creator" i18n:translate="">Creator</th>
37 <th tal:condition="request/show/assignee" i18n:translate="">Assigned To</th>
38 <th tal:condition="request/show/keywords" i18n:translate="">Keywords</th>
39 <th tal:condition="request/show/dependencies" i18n:translate="">Depends On</th>
40 <th tal:condition="request/show/type" i18n:translate="">Type</th>
41 </tr>
42 <tal:block tal:repeat="i batch" condition="true">
43 <tr tal:define="group python:[r[1] for r in request.group]"
44 tal:condition="python:group and batch.propchanged(*group)">
45 <th tal:attributes="colspan python:len(request.columns)" class="group">
46 <tal:block tal:repeat="g group">
47 <tal:block tal:content="python:str(i[g]) or '(no %s set)'%g"/>
48 </tal:block>
49 </th>
50 </tr>
52 <tr tal:attributes="class python:['even','odd'][repeat['i'].even()]">
53 <td tal:condition="request/show/severity"
54 tal:content="python:i.severity.plain() or default"> </td>
55 <td tal:condition="request/show/id" tal:content="i/id"> </td>
56 <td class="date" tal:condition="request/show/creation"
57 tal:content="i/creation/reldate"> </td>
58 <td class="date" tal:condition="request/show/activity"
59 tal:content="i/activity/reldate"> </td>
60 <td tal:condition="request/show/actor"
61 tal:content="python:i.actor.plain() or default"> </td>
62 <td tal:condition="request/show/title">
63 <a tal:attributes="href string:bug${i/id}"
64 tal:content="python:str(i.title.plain(hyperlink=0)) or '[no title]'">title</a>
65 </td>
66 <td tal:condition="request/show/components"
67 tal:content="python:i.components.plain() or default"> </td>
68 <td tal:condition="request/show/versions"
69 tal:content="python:i.versions.plain() or default"> </td>
70 <td tal:condition="request/show/status"
71 tal:content="python:i.status.plain() or default"> </td>
72 <td tal:condition="request/show/resolution"
73 tal:content="python:i.resolution.plain() or default"> </td>
74 <td tal:condition="request/show/creator"
75 tal:content="python:i.creator.plain() or default"> </td>
76 <td tal:condition="request/show/assignee"
77 tal:content="python:i.assignee.plain() or default"> </td>
78 <td tal:condition="request/show/keywords"
79 tal:content="python:i.keywords.plain() or default"> </td>
80 <td tal:condition="request/show/dependencies"
81 tal:content="python:i.dependencies.plain() or default"> </td>
82 <td tal:condition="request/show/type"
83 tal:content="python:i.type.plain() or default"> </td>
84 </tr>
86 </tal:block>
88 <metal:index define-macro="batch-footer">
89 <tr tal:condition="batch">
90 <th tal:attributes="colspan python:len(request.columns)">
91 <table width="100%">
92 <tr class="navigation">
93 <th>
94 <a tal:define="prev batch/previous" tal:condition="prev"
95 tal:attributes="href python:request.indexargs_url(request.classname,
96 {'@startwith':prev.first, '@pagesize':prev.size})"
97 i18n:translate=""><< previous</a>
98
99 </th>
100 <th i18n:translate=""><span tal:replace="batch/start" i18n:name="start"
101 />..<span tal:replace="python: batch.start + batch.length -1" i18n:name="end"
102 /> out of <span tal:replace="batch/sequence_length" i18n:name="total"
103 /></th>
104 <th>
105 <a tal:define="next batch/next" tal:condition="next"
106 tal:attributes="href python:request.indexargs_url(request.classname,
107 {'@startwith':next.first, '@pagesize':next.size})"
108 i18n:translate="">next >></a>
109
110 </th>
111 </tr>
112 </table>
113 </th>
114 </tr>
115 </metal:index>
116 </table>
117 <!--
118 <a tal:attributes="href python:request.indexargs_url('bug',
119 {'@action':'export_csv'})" i18n:translate="">Download as CSV</a>
120 -->
121 <form method="get" class="index-controls"
122 tal:attributes="action request/classname">
124 <table class="form" tal:define="n_sort python:2">
125 <!--
126 <tal:block tal:repeat="n python:range(n_sort)" tal:condition="batch">
127 <tr tal:define="key python:len(request.sort)>n and request.sort[n]">
128 <th>
129 <tal:block tal:condition="not:n" i18n:translate="">Sort on:</tal:block>
130 </th>
131 <td>
132 <select tal:attributes="name python:'@sort%d'%n">
133 <option value="" i18n:translate="">- nothing -</option>
134 <option tal:repeat="col context/properties"
135 tal:attributes="value col/_name;
136 selected python:key and col._name == key[1]"
137 tal:content="col/_name"
138 i18n:translate="">column</option>
139 </select>
140 </td>
141 <th i18n:translate="">Descending:</th>
142 <td><input type="checkbox" tal:attributes="name python:'@sortdir%d'%n;
143 checked python:key and key[0] == '-'"/>
144 </td>
145 </tr>
146 </tal:block>
147 -->
148 <tal:block tal:repeat="n python:range(n_sort)" tal:condition="batch">
149 <tr tal:define="key python:len(request.group)>n and request.group[n]">
150 <th>
151 <tal:block tal:condition="not:n" i18n:translate="">Group on:</tal:block>
152 </th>
153 <td>
154 <select tal:attributes="name python:'@group%d'%n">
155 <option value="" i18n:translate="">- nothing -</option>
156 <option tal:repeat="col context/properties"
157 tal:attributes="value col/_name;
158 selected python:key and col._name == key[1]"
159 tal:content="col/_name"
160 i18n:translate="">column</option>
161 </select>
162 </td>
163 <th i18n:translate="">Descending:</th>
164 <td><input type="checkbox" tal:attributes="name python:'@groupdir%d'%n;
165 checked python:key and key[0] == '-'"/>
166 </td>
167 </tr>
168 </tal:block>
169 <tr><td colspan="4">
170 <input type="submit" value="Redisplay" i18n:attributes="value"/>
171 <tal:block tal:replace="structure
172 python:request.indexargs_form(sort=0, group=0)" />
173 </td></tr>
174 </table>
175 </form>
177 </tal:block>
178 </tal:block>
179 </tal:block>