Ticket #1749: trac-0.11-okamototk.patch
| File trac-0.11-okamototk.patch, 8.0 kB (added by anonymous, 4 months ago) |
|---|
-
ticketdelete/web_ui.py
old new 1 # -*- coding: utf-8 -*- 1 2 # Ticket deleting plugins 2 3 3 4 from trac import __version__ as TRAC_VERSION … … 27 28 def pre_process_request(self, req, handler): 28 29 return handler 29 30 30 def post_process_request(self, req, template, content_type):31 def post_process_request(self, req, template, data, content_type): 31 32 if template == 'ticket.html' and 'TICKET_ADMIN' in req.perm: 32 33 add_script(req, 'ticketdelete/ticketdelete.js') 33 34 add_stylesheet(req, 'ticketdelete/ticketdelete.css') 34 return template, content_type35 return template, data, content_type 35 36 36 37 # IAdminPanelProvider methods 37 38 def get_admin_panels(self, req): … … 54 55 if page == 'delete': 55 56 if 'ticketid' in req.args and 'ticketid2' in req.args: 56 57 if req.args.get('ticketid') == req.args.get('ticketid2'): 57 t = self._validate(req, req.args.get('ticketid') )58 t = self._validate(req, req.args.get('ticketid'), data) 58 59 if t: 59 60 self._delete_ticket(t.id) 60 61 data['message'] = "Ticket #%s has been deleted." % t.id … … 65 66 if 'ticketid' in req.args: 66 67 req.redirect(req.href.admin(cat, page, req.args.get('ticketid'))) 67 68 else: 68 t = self._validate(req, path_info )69 t = self._validate(req, path_info, data) 69 70 if t: 70 71 data['href'] = req.href('admin', cat, page, path_info) 71 72 … … 86 87 data['redir'] = 0 87 88 88 89 89 if path_info:90 t = self._validate(req, path_info )90 elif path_info: 91 t = self._validate(req, path_info, data) 91 92 if t: 92 93 if page == 'comments': 93 94 try: … … 102 103 c_data['author'] = author 103 104 # FIXME: The datetime handling is not working - enable 104 105 # for traceback 105 c_data['prettytime'] = strftime('% a, %d %b %Y%H:%M:%S',time.timetuple())106 c_data['prettytime'] = strftime('%Y/%b/%d %H:%M:%S',time.timetuple()) 106 107 107 108 # Check the boxes next to change number `selected` 108 109 time_list = list(sorted(ticket_data.iterkeys())) … … 146 147 else: 147 148 return (0,0) 148 149 149 def _validate(self, req, arg ):150 def _validate(self, req, arg, data): 150 151 """Validate that arg is a string containing a valid ticket ID.""" 151 152 try: 152 153 id = int(arg) -
ticketdelete/htdocs/ticketdelete.js
old new 1 1 $(document).ready(function() { 2 var ticket = /\/ticket\/(\d+)/.exec(document.location)[1]; 3 var delete_link = '<a href="../admin/ticket/delete/'+ticket+'">Delete</a>'; 2 var match_ticket = /\/ticket\/(\d+)/.exec(document.location); 3 if (match_ticket == undefined) { 4 return; 5 } 6 var ticket = match_ticket[1]; 7 var delete_link = '<a href="../admin/ticket/delete/'+ticket+'"title="Delete">Delete</a>'; 4 8 var ticket_buttons = $('#ticket .inlinebuttons')[0]; 5 9 if (ticket_buttons) { 6 10 $(ticket_buttons).append(delete_link); 7 11 } else { 8 12 $('#ticket table.properties').after('<div class="description"><h3><span class="inlinebuttons">'+delete_link+'</span> </h3></div>'); 9 13 } 10 $('#changelog h3').each(function() {11 var comment = $(' input[@name=replyto]', this)[0];14 $('#changelog .printableform').each(function() { 15 var comment = $('.inlinebuttons input[@name=replyto]', this)[0]; 12 16 if (comment) { 13 comment = comment.value; 14 $('.inlinebuttons', this).append('<a href="../admin/ticket/comments/'+ticket+'?cnum='+comment+'">Delete</a>'); 17 $('.inlinebuttons', this).append('<a href="../admin/ticket/comments/'+ticket+'?cnum='+comment.value+'" title="Delete comment '+comment.value+'">Delete</a>'); 15 18 } 16 19 }); 17 20 }); -
ticketdelete/templates/ticketdelete_admin.html
old new 46 46 <tbody> 47 47 <py:for each="change in ticketdelete.changes"> 48 48 <tr> 49 <td><input type="checkbox" name="dontcare" value="dontcare" id="checkbox_${change}" checked="${ change.checked or None}" /></td>49 <td><input type="checkbox" name="dontcare" value="dontcare" id="checkbox_${change}" checked="${ticketdelete.changes[change].checked}" /></td> 50 50 <td colspan="3"><b>Change at ${ticketdelete.changes[change].prettytime} by ${ticketdelete.changes[change].author}</b></td> 51 51 <td><input type="submit" name="delete_${change}" value="Delete change" /></td> 52 52 <tr> 53 53 <py:for each="field in ticketdelete.changes[change].fields"> 54 54 <tr> 55 <td><input type="checkbox" id="checkbox${field}_${change}" name="mdelete" value="${field}_${change}" checked="${ticketdelete.changes[change].checked or None}" /></td>55 <td><input type="checkbox" id="checkbox${field}_${change}" name="mdelete" value="${field}_${change}" checked="${ticketdelete.changes[change].checked}" /></td> 56 56 <td>${field}</td> 57 <td>${ticketdelete.changes[change].fields[field].old}</td> 58 <td>${ticketdelete.changes[change].fields[field].new}</td> 57 <td py:if="field == 'comment'" colspan="2">${ticketdelete.changes[change].fields[field].new}</td> 58 <td py:if="field != 'comment'" >${ticketdelete.changes[change].fields[field].old}</td> 59 <td py:if="field != 'comment'">${ticketdelete.changes[change].fields[field].new}</td> 59 60 <td><input type="submit" name="delete${field}_${change}" value="Delete field" /></td> 60 61 </tr> 61 62 </py:for> … … 66 67 </table><br /><input type="submit" name="multidelete" value="Delete Checked" /></form></p> 67 68 68 69 <script type="text/javascript"> 69 <!-- 70 70 71 function toggleboxen(me, boxen) 71 72 { 72 73 status = document.getElementById("checkbox_" + me).checked; … … 79 80 80 81 <py:for each="change in ticketdelete.changes"> 81 82 addEvent(document.getElementById("checkbox_${change}"), "change", function() { 82 var boxen = Array( ${py:for each="field in change.fields"${field}",</py:for>"");83 var boxen = Array(<py:for each="field in ticketdelete.changes[change].fields">"${field}",</py:for>""); 83 84 toggleboxen("${change}", boxen); //Array(<py:for each="field in change.fields">"${field}",</py:for>)); 84 85 }); 85 <py:for each="field in change.fields">86 <py:for each="field in ticketdelete.changes[change].fields"> 86 87 addEvent(document.getElementById("checkbox${field}_${change}"),"change", function() { 87 88 if(!document.getElementById("checkbox${field}_${change}").checked) { 88 document.getElementById("checkbox ${change}").checked = 0;89 document.getElementById("checkbox_${change}").checked = 0; 89 90 } 90 91 }); 91 92 </py:for> 92 93 </py:for> 93 94 94 95 95 //--> 96 96 97 </script> 97 98 98 99
