source: administrativa/trac_local_changes/ticket.cs.backup

Last change on this file was 1746, checked in by Александър Шопов, 17 years ago

Локални промени по trac

File size: 13.1 KB
Line 
1<?cs include "header.cs" ?>
2<?cs include "macros.cs" ?>
3
4<div id="ctxtnav" class="nav">
5 <h2>Ticket Navigation</h2><?cs
6 with:links = chrome.links ?><?cs
7 if:len(links.prev) || len(links.up) || len(links.next) ?><ul><?cs
8 if:len(links.prev) ?>
9 <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>">
10 &larr; <a href="<?cs var:links.prev.0.href ?>" title="<?cs
11 var:links.prev.0.title ?>">Previous Ticket</a>
12 </li><?cs
13 /if ?><?cs
14 if:len(links.up) ?>
15 <li class="<?cs if:!len(links.prev) ?>first<?cs /if ?><?cs
16 if:!len(links.next) ?> last<?cs /if ?>">
17 <a href="<?cs var:links.up.0.href ?>" title="<?cs
18 var:links.up.0.title ?>">Back to Query</a>
19 </li><?cs
20 /if ?><?cs
21 if:len(links.next) ?>
22 <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last">
23 <a href="<?cs var:links.next.0.href ?>" title="<?cs
24 var:links.next.0.title ?>">Next Ticket</a> &rarr;
25 </li><?cs
26 /if ?></ul><?cs
27 /if ?><?cs
28 /with ?>
29</div>
30
31<div id="content" class="ticket">
32
33 <h1>Ticket #<?cs var:ticket.id ?> <span class="status">(<?cs
34 var:ticket.status ?><?cs
35 if:ticket.type ?> <?cs var:ticket.type ?><?cs
36 /if ?><?cs
37 if:ticket.resolution ?>: <?cs var:ticket.resolution ?><?cs
38 /if ?>)</span></h1>
39
40<div id="searchable">
41<div id="ticket">
42 <div class="date">
43 <p title="<?cs var:ticket.opened ?>">Opened <?cs var:ticket.opened_delta ?> ago</p><?cs
44 if:ticket.lastmod ?>
45 <p title="<?cs var:ticket.lastmod ?>">Last modified <?cs var:ticket.lastmod_delta ?> ago</p>
46 <?cs /if ?>
47 </div>
48 <h2 class="summary"><?cs var:ticket.summary ?></h2>
49 <table class="properties">
50 <tr>
51 <th id="h_reporter">Reported by:</th>
52 <td headers="h_reporter"><?cs var:ticket.reporter ?></td>
53 <th id="h_owner">Assigned to:</th>
54 <td headers="h_owner"><?cs var:ticket.owner ?><?cs
55 if:ticket.status == 'assigned' ?> (accepted)<?cs /if ?></td>
56 </tr><tr><?cs
57 each:field = ticket.fields ?><?cs
58 if:!field.skip ?><?cs
59 set:num_fields = num_fields + 1 ?><?cs
60 /if ?><?cs
61 /each ?><?cs
62 set:idx = 0 ?><?cs
63 each:field = ticket.fields ?><?cs
64 if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs
65 if:fullrow && idx % 2 ?><th></th><td></td></tr><tr><?cs /if ?>
66 <th id="h_<?cs var:name(field) ?>"><?cs var:field.label ?>:</th>
67 <td<?cs if:fullrow ?> colspan="3"<?cs /if ?> headers="h_<?cs
68 var:name(field) ?>"><?cs var:ticket[name(field)] ?></td><?cs
69 if:idx % 2 || fullrow ?></tr><tr><?cs
70 elif:idx == num_fields - 1 ?><th></th><td></td><?cs
71 /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs
72 /if ?><?cs
73 /each ?></tr>
74 </table><?cs
75 if:ticket.description ?>
76 <form method="get" action="<?cs var:ticket.href ?>#comment" class="printableform">
77 <div class="description">
78 <h3 id="comment:description"><?cs
79 if:trac.acl.TICKET_APPEND ?>
80 <span class="inlinebuttons">
81 <input type="hidden" name="replyto" value="description" />
82 <input type="submit" value="Reply" title="Reply, quoting this description" />
83 </span><?cs
84 /if ?>
85 Description <?cs
86 if:ticket.description.lastmod ?><span class="lastmod" title="<?cs var:ticket.description.lastmod ?>">(Last modified by <?cs var:ticket.description.author ?>)</span><?cs
87 /if ?>
88 </h3>
89 <?cs var:ticket.description.formatted ?>
90 </div>
91 </form><?cs
92 /if ?>
93</div>
94
95<?cs if:ticket.attach_href || len(ticket.attachments) ?>
96<?cs call:list_of_attachments(ticket.attachments, ticket.attach_href) ?>
97<?cs /if ?>
98
99<?cs def:commentref(prefix, cnum) ?>
100<a href="#comment:<?cs var:cnum ?>"><small><?cs var:prefix ?><?cs var:cnum ?></small></a>
101<?cs /def ?>
102
103<?cs if:len(ticket.changes) ?><h2>Change History</h2>
104<div id="changelog"><?cs
105 each:change = ticket.changes ?>
106 <form method="get" action="<?cs var:ticket.href ?>#comment" class="printableform">
107 <div class="change">
108 <h3 <?cs if:change.cnum ?>id="comment:<?cs var:change.cnum ?>"<?cs /if ?>><?cs
109 if:change.cnum ?><?cs
110 if:trac.acl.TICKET_APPEND ?>
111 <span class="inlinebuttons">
112 <input type="hidden" name="replyto" value="<?cs var:change.cnum ?>" />
113 <input type="submit" value="Reply" title="Reply to comment <?cs var:change.cnum ?>" />
114 </span><?cs
115 /if ?>
116 <span class="threading"><?cs
117 set:nreplies = len(ticket.replies[change.cnum]) ?><?cs
118 if:nreplies || change.replyto ?>(<?cs
119 if:change.replyto ?>in reply to: <?cs
120 call:commentref('&uarr;&nbsp;', change.replyto) ?><?cs if nreplies ?>; <?cs /if ?><?cs
121 /if ?><?cs
122 if nreplies ?><?cs
123 call:plural('follow-up', nreplies) ?>: <?cs
124 each:reply = ticket.replies[change.cnum] ?><?cs
125 call:commentref('&darr;&nbsp;', reply) ?><?cs
126 /each ?><?cs
127 /if ?>)<?cs
128 /if ?>
129 </span><?cs
130 /if ?><?cs
131 var:change.date ?> changed by <?cs var:change.author ?>
132 </h3><?cs
133 if:len(change.fields) ?>
134 <ul class="changes"><?cs
135 each:field = change.fields ?>
136 <li><strong><?cs var:name(field) ?></strong> <?cs
137 if:name(field) == 'attachment' ?><em><?cs var:field.new ?></em> added<?cs
138 elif:field.old && field.new ?>changed from <em><?cs
139 var:field.old ?></em> to <em><?cs var:field.new ?></em><?cs
140 elif:!field.old && field.new ?>set to <em><?cs var:field.new ?></em><?cs
141 elif:field.old && !field.new ?>deleted<?cs
142 else ?>changed<?cs
143 /if ?>.</li>
144 <?cs
145 /each ?>
146 </ul><?cs
147 /if ?>
148 <div class="comment"><?cs var:change.comment ?></div>
149 </div>
150 </form><?cs
151 /each ?>
152</div><?cs
153/if ?>
154
155<?cs if:trac.acl.TICKET_CHGPROP || trac.acl.TICKET_APPEND ?>
156<form action="<?cs var:ticket.href ?>#preview" method="post">
157 <hr />
158 <h3><a name="edit" onfocus="document.getElementById('comment').focus()">Add/Change #<?cs
159 var:ticket.id ?> (<?cs var:ticket.summary ?>)</a></h3>
160 <?cs if:trac.authname == "anonymous" ?>
161 <div class="field">
162 <label for="author">Your email or username:</label><br />
163 <input type="text" id="author" name="author" size="40"
164 value="<?cs var:ticket.reporter_id ?>" /><br />
165 </div>
166 <?cs /if ?>
167 <div class="field">
168 <fieldset class="iefix">
169 <label for="comment">Comment (you may use <a tabindex="42" href="<?cs
170 var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label><br />
171 <p><textarea id="comment" name="comment" class="wikitext" rows="10" cols="78">
172<?cs var:ticket.comment ?></textarea></p>
173 </fieldset><?cs
174 if ticket.comment_preview ?>
175 <fieldset id="preview">
176 <legend>Comment Preview</legend>
177 <?cs var:ticket.comment_preview ?>
178 </fieldset><?cs
179 /if ?>
180 </div>
181
182 <?cs if:trac.acl.TICKET_CHGPROP ?><fieldset id="properties">
183 <legend>Change Properties</legend>
184 <table><tr>
185 <th><label for="summary">Summary:</label></th>
186 <td class="fullrow" colspan="3"><input type="text" id="summary" name="summary" value="<?cs
187 var:ticket.summary ?>" size="70" /></td>
188 </tr><?cs
189 if:len(ticket.fields.type.options) ?>
190 <tr>
191 <th><label for="type">Type:</label></th>
192 <td><?cs
193 call:hdf_select(ticket.fields.type.options, 'type', ticket.type, 0) ?>
194 </td>
195 </tr><?cs
196 /if ?><?cs
197 if:trac.acl.TICKET_ADMIN ?><tr>
198 <th><label for="description">Description:</label></th>
199 <td class="fullrow" colspan="3">
200 <textarea id="description" name="description" class="wikitext" rows="10" cols="68">
201<?cs var:ticket.description ?></textarea>
202 </td>
203 </tr><tr>
204 <th><label for="reporter">Reporter:</label></th>
205 <td class="fullrow" colspan="3"><input type="text" value="<?cs
206 var:ticket.reporter ?>" id="reporter" name="reporter" size="70" /></td>
207 </tr><?cs
208 /if ?>
209 <tr><?cs set:num_fields = 0 ?><?cs
210 each:field = ticket.fields ?><?cs
211 if:!field.skip ?><?cs
212 set:num_fields = num_fields + 1 ?><?cs
213 /if ?><?cs
214 /each ?><?cs set:idx = 0 ?><?cs
215 each:field = ticket.fields ?><?cs
216 if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs
217 if:fullrow && idx % 2 ?><?cs set:idx = idx + 1 ?><th class="col2"></th><td></td></tr><tr><?cs /if ?>
218 <th class="col<?cs var:idx % 2 + 1 ?>"><?cs
219 if:field.type != 'radio' ?><label for="<?cs var:name(field) ?>"><?cs
220 /if ?><?cs alt:field.label ?><?cs var:field.name ?><?cs /alt ?>:<?cs
221 if:field.type != 'radio' ?></label><?cs /if ?></th>
222 <td<?cs if:fullrow ?> colspan="3"<?cs /if ?>><?cs
223 if:field.type == 'text' ?><input type="text" id="<?cs
224 var:name(field) ?>" name="<?cs
225 var:name(field) ?>" value="<?cs var:ticket[name(field)] ?>" /><?cs
226 elif:field.type == 'select' ?><select id="<?cs
227 var:name(field) ?>" name="<?cs
228 var:name(field) ?>"><?cs
229 if:field.optional ?><option></option><?cs /if ?><?cs
230 each:option = field.options ?><option<?cs
231 if:option == ticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs
232 var:option ?></option><?cs
233 /each ?></select><?cs
234 elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs
235 var:name(field) ?>" /><input type="checkbox" id="<?cs
236 var:name(field) ?>" name="<?cs
237 var:name(field) ?>" value="1"<?cs
238 if:ticket[name(field)] ?> checked="checked"<?cs /if ?> /><?cs
239 elif:field.type == 'textarea' ?><textarea id="<?cs
240 var:name(field) ?>" name="<?cs
241 var:name(field) ?>"<?cs
242 if:field.height ?> rows="<?cs var:field.height ?>"<?cs /if ?><?cs
243 if:field.width ?> cols="<?cs var:field.width ?>"<?cs /if ?>>
244<?cs var:ticket[name(field)] ?></textarea><?cs
245 elif:field.type == 'radio' ?><?cs set:optidx = 0 ?><?cs
246 each:option = field.options ?><label><input type="radio" id="<?cs
247 var:name(field) ?>" name="<?cs
248 var:name(field) ?>" value="<?cs var:option ?>"<?cs
249 if:ticket[name(field)] == option ?> checked="checked"<?cs /if ?> /> <?cs
250 var:option ?></label> <?cs set:optidx = optidx + 1 ?><?cs
251 /each ?><?cs
252 /if ?></td><?cs
253 if:idx % 2 || fullrow ?><?cs
254 if:idx < num_fields - 1 ?></tr><tr><?cs
255 /if ?><?cs
256 elif:idx == num_fields - 1 ?><th class="col2"></th><td></td><?cs
257 /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs
258 /if ?><?cs
259 /each ?></tr>
260 </table>
261 </fieldset><?cs /if ?>
262
263 <?cs if:ticket.actions.accept || ticket.actions.reopen ||
264 ticket.actions.resolve || ticket.actions.reassign ?>
265 <fieldset id="action">
266 <legend>Action</legend><?cs
267 if:!ticket.action ?><?cs set:ticket.action = 'leave' ?><?cs
268 /if ?><?cs
269 def:action_radio(id) ?>
270 <input type="radio" id="<?cs var:id ?>" name="action" value="<?cs
271 var:id ?>"<?cs if:ticket.action == id ?> checked="checked"<?cs
272 /if ?> /><?cs
273 /def ?>
274 <?cs call:action_radio('leave') ?>
275 <label for="leave">leave as <?cs var:ticket.status ?></label><br /><?cs
276 if:ticket.actions.accept ?><?cs
277 call:action_radio('accept') ?>
278 <label for="accept">accept ticket</label><br /><?cs
279 /if ?><?cs
280 if:ticket.actions.reopen ?><?cs
281 call:action_radio('reopen') ?>
282 <label for="reopen">reopen ticket</label><br /><?cs
283 /if ?><?cs
284 if:ticket.actions.resolve ?><?cs
285 call:action_radio('resolve') ?>
286 <label for="resolve">resolve</label><?cs
287 if:len(ticket.fields.resolution.options) ?>
288 <label for="resolve_resolution">as:</label>
289 <?cs call:hdf_select(ticket.fields.resolution.options, "resolve_resolution",
290 ticket.resolve_resolution, 0) ?><br /><?cs
291 /if ?><?cs
292 /if ?><?cs
293 if:ticket.actions.reassign ?><?cs
294 call:action_radio('reassign') ?>
295 <label for="reassign">reassign</label>
296 <label>to:<?cs
297 if:len(ticket.fields.owner.options) ?><?cs
298 call:hdf_select(ticket.fields.owner.options, "reassign_owner",
299 ticket.reassign_owner, 1) ?><?cs
300 else ?>
301 <input type="text" id="reassign_owner" name="reassign_owner" size="40" value="<?cs
302 var:ticket.reassign_owner ?>" /><?cs
303 /if ?></label><?cs
304 /if ?><?cs
305 if ticket.actions.resolve || ticket.actions.reassign ?>
306 <script type="text/javascript"><?cs
307 each:action = ticket.actions ?>
308 var <?cs var:name(action) ?> = document.getElementById("<?cs var:name(action) ?>");<?cs
309 /each ?>
310 var updateActionFields = function() {
311 <?cs if:ticket.actions.resolve ?> enableControl('resolve_resolution', resolve.checked);<?cs /if ?>
312 <?cs if:ticket.actions.reassign ?> enableControl('reassign_owner', reassign.checked);<?cs /if ?>
313 };
314 addEvent(window, 'load', updateActionFields);<?cs
315 each:action = ticket.actions ?>
316 addEvent(<?cs var:name(action) ?>, 'click', updateActionFields);<?cs
317 /each ?>
318 </script><?cs
319 /if ?>
320 </fieldset><?cs
321 else ?>
322 <input type="hidden" name="action" value="leave" /><?cs
323 /if ?>
324
325 <script type="text/javascript" src="<?cs
326 var:htdocs_location ?>js/wikitoolbar.js"></script>
327
328 <div class="buttons">
329 <input type="hidden" name="ts" value="<?cs var:ticket.ts ?>" />
330 <input type="hidden" name="replyto" value="<?cs var:ticket.replyto ?>" />
331 <input type="hidden" name="cnum" value="<?cs var:ticket.cnum ?>" />
332 <input type="submit" name="preview" value="Preview" accesskey="r" />&nbsp;
333 <input type="submit" value="Submit changes" />
334 </div>
335</form>
336<?cs /if ?>
337
338 </div>
339 <script type="text/javascript">
340 addHeadingLinks(document.getElementById("searchable"), "Permalink to $id");
341 </script>
342</div>
343<?cs include "footer.cs"?>
Note: See TracBrowser for help on using the repository browser.