1 <tal:block metal:use-macro="templates/page/macros/frame">
2 <title metal:fill-slot="head_title">
3 <tal:block condition="context/id" i18n:translate=""
4 >Bug <span tal:replace="context/id" i18n:name="id"
5 />: <span tal:replace="context/title" i18n:name="title"
6 /> - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker"
7 /></tal:block>
8 <tal:block condition="not:context/id" i18n:translate=""
9 >New Bug report - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker"
10 /></tal:block>
11 </title>
12 <tal:block metal:fill-slot="body_title">
13 <span tal:condition="python: not (context.id or context.is_edit_ok())"
14 tal:omit-tag="python:1" i18n:translate="">New Bug</span>
15 <span tal:condition="python: not context.id and context.is_edit_ok()"
16 tal:omit-tag="python:1" i18n:translate="">New Bug Editing</span>
17 <span tal:condition="python: context.id and not context.is_edit_ok()"
18 tal:omit-tag="python:1" i18n:translate="">Bug <tal:x
19 replace="context/id" i18n:name="id" /></span>
20 <span tal:condition="python: context.id and context.is_edit_ok()"
21 tal:omit-tag="python:1" i18n:translate="">Bug <tal:x
22 replace="context/id" i18n:name="id" /> Editing</span>
23 </tal:block>
25 <td class="content" metal:fill-slot="content">
27 <p tal:condition="python:not (context.is_view_ok()
28 or request.user.hasRole('Anonymous'))" i18n:translate="">
29 You are not allowed to view this page.</p>
31 <p tal:condition="python:not context.is_view_ok()
32 and request.user.hasRole('Anonymous')" i18n:translate="">
33 Please login with your username and password.</p>
35 <div tal:condition="context/is_view_ok">
37 <form method="POST" name="itemSynopsis"
38 onSubmit="return submit_once()" enctype="multipart/form-data"
39 tal:attributes="action context/designator">
41 <fieldset><legend>classification</legend>
42 <table class="form">
43 <tr>
44 <th class="required" i18n:translate="">Title:</th>
45 <td colspan="3" tal:condition="context/title/is_edit_ok"
46 tal:content="structure python:context.title.field(size=40)">title</td>
47 <td colspan="3" tal:condition="not:context/title/is_edit_ok">
48 <span tal:content="structure context/title/plain"/>
49 <input type="hidden" name="title" tal:attributes="value context/title">
50 </td>
51 </tr>
53 <tr>
54 <th class="required" i18n:translate="">
55 <span tal:condition="context/type/is_edit_ok"
56 tal:replace="structure python:db.bug_type.classhelp('id,name,description',property='type',label='Type')" />
57 <span tal:condition="not:context/type/is_edit_ok">Type</span>:
58 </th>
59 <td tal:content="structure context/type/menu">type</td>
60 <th i18n:translate="">
61 <span tal:condition="context/severity/is_edit_ok"
62 tal:replace="structure python:db.severity.classhelp('id,name,description',property='severity',label='Severity')" />
63 <span tal:condition="not:context/severity/is_edit_ok">Severity</span>:
64 </th>
65 <td tal:content="structure context/severity/menu">severity</td>
66 </tr>
68 <tr>
69 <th i18n:translate="">
70 <span tal:condition="context/components/is_edit_ok"
71 tal:replace="structure python:db.component.classhelp('id,name,description',property='components',label='Components')" />
72 <span tal:condition="not:context/components/is_edit_ok">Components</span>:
73 </th>
74 <td tal:content="structure context/components/menu">components</td>
75 <th i18n:translate="">
76 <span tal:condition="context/versions/is_edit_ok"
77 tal:replace="structure python:db.version.classhelp('id,name,description',property='versions',label='Versions')" />
78 <span tal:condition="not:context/versions/is_edit_ok">Versions</span>:
79 </th>
80 <td tal:content="structure context/versions/menu">versions</td>
81 </tr>
82 </table>
83 </fieldset>
85 <fieldset><legend>process</legend>
86 <table class="form">
87 <tr tal:condition="context/id">
88 <th i18n:translate="">
89 <span tal:condition="context/status/is_edit_ok"
90 tal:replace="structure python:db.status.classhelp('id,name,description',property='status', label='Status')" />
91 <span tal:condition="not:context/status/is_edit_ok">Status</span>:
92 </th>
93 <td tal:content="structure context/status/menu">status</td>
94 <th i18n:translate="">
95 <span tal:condition="context/resolution/is_edit_ok"
96 tal:replace="structure python:db.resolution.classhelp('id,name,description',property='resolution', label='Resolution')" />
97 <span tal:condition="not:context/resolution/is_edit_ok">Resolution</span>:
98 </th>
99 <td tal:content="structure context/resolution/menu">resolution</td>
100 </tr>
102 <tr tal:condition="context/id">
103 <th>
104 <tal:block i18n:translate="">Dependencies</tal:block>:
105 <span tal:condition="context/dependencies/is_edit_ok"
106 tal:replace="structure python:db.bug.classhelp('id,title', filter='status=0,1', property='dependencies')" />
107 </th>
108 <td>
109 <span tal:replace="structure python:context.dependencies.field(showid=1,size=20)" />
110 <span tal:condition="context/dependencies" tal:repeat="d python:context.dependencies.sorted('creation')">
111 <br/>View: <a tal:attributes="href string:bug${d/id}" tal:content="d/id"></a>
112 </span>
113 </td>
114 <th i18n:translate="">
115 <tal:block i18n:translate="">Superseder</tal:block>:
116 <span tal:condition="context/superseder/is_edit_ok"
117 tal:replace="structure python:db.bug.classhelp('id,title', filter='status=0,1', property='superseder')" />
118 </th>
119 <td>
120 <span tal:replace="structure python:context.superseder.field(showid=1, size=20)" />
121 <span tal:condition="context/superseder">
122 <!-- <br><span i18n:translate="">View</span>:
123 <a tal:repeat="sup context/superseder"
124 tal:content="python:sup['id'] + ', '*(not repeat['sup'].end)"
125 tal:attributes="href string:bug${sup/id}; title sup/title;"></a> -->
126 <br><span i18n:translate="">View</span>:
127 <a tal:content="context/superseder/id"
128 tal:attributes="href string:bug${context/superseder/id}; title context/superseder/title;"></a>
129 </span>
130 </td>
131 </tr>
132 <tr>
133 <th><tal:block i18n:translate="">Assigned To</tal:block>:</th>
134 <td tal:content="structure context/assignee/menu">assignedto menu</td>
135 <th><tal:block i18n:translate="">Nosy List</tal:block>:
136 <span tal:condition="context/nosy/is_edit_ok"
137 tal:replace="structure python:db.user.classhelp('username,realname,address', property='nosy')" />
138 </th>
139 <td>
140 <span tal:replace="structure context/nosy/field" />
141 </td>
142 </tr>
143 <tr>
144 <th>
145 <span tal:condition="context/priority/is_edit_ok"
146 tal:replace="structure python:db.priority.classhelp('id,name,description',property='priority',label='Priority')" />
147 <span tal:condition="not:context/priority/is_edit_ok">Priority</span>:
148 </th>
149 <td tal:content="structure context/priority/menu">priority</td>
150 <th i18n:translate="">Keywords:</th>
151 <td tal:content="structure python:context['keywords'].menu(height=5)">keywords</td>
154 </tr>
155 <tr tal:condition="context/is_edit_ok">
156 <th><tal:block i18n:translate="">Comment</tal:block>:</th>
157 <td colspan="3">
158 <textarea tal:content="request/form/@note/value | default"
159 name="@note" wrap="hard" rows="10" cols="60"></textarea>
160 </td>
161 </tr>
163 <tr tal:condition="context/is_edit_ok">
164 <th><tal:block i18n:translate="">File</tal:block>:</th>
165 <td colspan="3">
166 <input type="hidden" name="@link@files" value="file-1">
167 <input type="file" name="file-1@content" size="35">
168 </td>
169 </tr>
170 <tr tal:condition="context/is_edit_ok">
171 <th><tal:block i18n:translate="">File Description</tal:block>:</th>
172 <td colspan=3><input type="edit" name="file-1@description" size="40"></td>
173 </tr>
175 <!--
176 <tr tal:condition="context/is_edit_ok">
177 <th><tal:block i18n:translate="">Patch</tal:block>:</th>
178 <td colspan="3">
179 <input type="hidden" name="@link@patches" value="patch-1"/>
180 <input type="file" name="patch-1@content" size="35"/>
181 </td>
182 </tr>
183 <tr tal:condition="context/is_edit_ok">
184 <th><tal:block i18n:translate="">Patch Description</tal:block>:</th>
185 <td colspan=3><input type="edit" name="patch-1@description" size="40"></td>
186 </tr>
187 <tr tal:condition="context/is_edit_ok">
188 <th><tal:block i18n:translate="">Repository</tal:block>:</th>
189 <td colspan=3><input type="edit" name="patch-1@repository" size="40"></td>
190 </tr>
191 <tr tal:condition="context/is_edit_ok">
192 <th><tal:block i18n:translate="">Repo. Revision</tal:block>:</th>
193 <td colspan=3><input type="edit" name="patch-1@revision" size="40"></td>
194 </tr>
195 -->
196 </table>
197 </fieldset>
198 <table class="form">
199 <tr tal:condition="context/is_edit_ok">
200 <td>
201
202 <input type="hidden" name="@template" value="item">
203 <input type="hidden" name="@required" value="title">
204 </td>
205 <td colspan="3">
206 <span tal:replace="structure context/submit">submit button</span>
207 <a tal:condition="context/id" tal:attributes="href context/copy_url"
208 i18n:translate="">Make a copy</a>
209 </td>
210 </tr>
211 </table>
212 </form>
214 <p tal:condition="context/id" i18n:translate="">
215 Created on <b><tal:x replace="python:context.creation.pretty('%Y-%m-%d %H:%M')" i18n:name="creation" /></b>
216 by <b><tal:x replace="context/creator" i18n:name="creator" /></b>,
217 last changed <b><tal:x replace="python:context.activity.pretty('%Y-%m-%d %H:%M')" i18n:name="activity" /></b>
218 by <b><tal:x replace="context/actor" i18n:name="actor" /></b>.
219 </p>
221 <table class="files" tal:condition="context/files">
222 <tr><th colspan="5" class="header" i18n:translate="">Files</th></tr>
223 <tr>
224 <th i18n:translate="">File name</th>
225 <th i18n:translate="">Uploaded</th>
226 <th i18n:translate="">Description</th>
227 <th i18n:translate="">Edit</th>
228 <th i18n:translate="">Remove</th>
229 </tr>
230 <tr tal:repeat="file python:context.files.sorted('creation')">
231 <td>
232 <a tal:attributes="href file/download_url"
233 tal:content="file/name">dld link</a>
234 </td>
235 <td>
236 <span tal:content="file/creator">creator's name</span>,
237 <span tal:content="python:file.creation.pretty('%Y-%m-%d %H:%M')">creation date</span>
238 </td>
239 <td tal:content="file/description" />
240 <td><a tal:condition="file/is_edit_ok"
241 tal:attributes="href string:file${file/id}">edit</a>
242 </td>
243 <td>
244 <form style="padding:0" tal:condition="file/is_edit_ok"
245 tal:attributes="action string:bug${context/id}">
246 <input type="hidden" name="@remove@files" tal:attributes="value file/id">
247 <input type="hidden" name="@action" value="edit">
248 <input type="submit" value="remove" i18n:attributes="value">
249 </form>
250 </td>
251 </tr>
252 </table>
253 <!--
254 <table class="files" tal:condition="context/patches">
255 <tr><th colspan="5" class="header" i18n:translate="">Patches</th></tr>
256 <tr>
257 <th i18n:translate="">Patch name</th>
258 <th i18n:translate="">Uploaded</th>
259 <th i18n:translate="">Description</th>
260 <th i18n:translate="">View</th>
261 <th i18n:translate="">Edit</th>
262 <th i18n:translate="">Remove</th>
263 </tr>
264 <tr tal:repeat="patch python:context.patches.sorted('creation')">
265 <td>
266 <a tal:attributes="href patch/download_url"
267 tal:content="patch/name">dld link</a>
268 </td>
269 <td>
270 <span tal:content="patch/creator">creator's name</span>,
271 <span tal:content="python:patch.creation.pretty('%Y-%m-%d %H:%M')">creation date</span>
272 </td>
273 <td tal:content="patch/description" />
274 <td><a tal:attributes="href string:patch_view${patch/id}">Show patch</a>
275 </td>
276 <td><a tal:condition="patch/is_edit_ok"
277 tal:attributes="href string:patch${patch/id}">Edit</a>
278 </td>
279 <td>
280 <form style="padding:0" tal:condition="patch/is_edit_ok"
281 tal:attributes="action string:bug${context/id}">
282 <input type="hidden" name="@remove@patches" tal:attributes="value patch/id"/>
283 <input type="hidden" name="@action" value="edit"/>
284 <input type="submit" value="remove" i18n:attributes="value"/>
285 </form>
286 </td>
287 </tr>
288 </table>
289 -->
290 <table class="messages" tal:condition="context/messages">
291 <tr><th colspan="4" class="header" i18n:translate="">Messages</th></tr>
292 <tal:block tal:repeat="msg context/messages">
293 <tr>
294 <th><a tal:attributes="href string:msg${msg/id}"
295 i18n:translate="">msg<tal:x replace="msg/id" i18n:name="id" /></a></th>
296 <th i18n:translate="">Author: <tal:x replace="python:msg.author.realname.plain()"
297 i18n:name="author" /> (<tal:x replace="msg/author"/>)</th>
298 <th i18n:translate="">Date: <tal:x replace="python:msg.date.pretty('%Y-%m-%d %H:%M')"
299 i18n:name="date" /></th>
300 <th>
301 <form style="padding:0" tal:condition="msg/is_edit_ok"
302 tal:attributes="action string:bug${context/id}">
303 <input type="hidden" name="@remove@messages" tal:attributes="value msg/id">
304 <input type="hidden" name="@action" value="edit">
305 <input type="submit" value="remove" i18n:attributes="value">
306 </form>
307 </th>
308 </tr>
309 <tr>
310 <td colspan="4" class="content">
311 <pre tal:condition="python:msg.content.is_view_ok()"
312 tal:content="structure python:utils.localReplace(msg.content.hyperlinked())">content</pre>
313 </td>
314 </tr>
315 </tal:block>
316 </table>
318 <tal:block tal:condition="context/id" tal:replace="structure context/history" />
320 </div>
322 </td>
324 </tal:block>