Changeset 3339
- Timestamp:
- 03/11/08 03:45:39 (9 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
ticketdeleteplugin/0.11/ticketdelete/templates/ticketdelete_admin.html
r1422 r3339 1 <div xmlns="http://www.w3.org/1999/xhtml" 2 xmlns:py="http://genshi.edgewall.org/" 3 id="page"> 4 <h2>Delete Ticket<py:if ticketdelete.page="comments"> Changes</py:if></h2> 1 <!DOCTYPE html 2 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml" 5 xmlns:xi="http://www.w3.org/2001/XInclude" 6 xmlns:py="http://genshi.edgewall.org/"> 7 8 <xi:include href="admin.html" /> 9 10 <head> 11 <title>Delete Ticket${ticketdelete.page=='comments' and ' Changes' or None}</title> 12 </head> 13 14 <body> 15 16 <h2>Delete Ticket${ticketdelete.page=='comments' and ' Changes' or None}</h2> 5 17 6 18 <py:choose> … … 23 35 </py:when> 24 36 <py:when test="ticketdelete.page == 'comments'"> 25 <py:choose has_tickets="len(ticketdelete.changes)">26 <py:when has_tickets="True">27 <p y:if test="ticketdelete.message">28 < p><b>${ticketdelete.message}</b></p>29 </p y:if>37 <py:choose> 38 <py:when test="len(ticketdelete.changes)"> 39 <p py:if="ticketdelete.message"> 40 <b>${ticketdelete.message}</b> 41 </p> 30 42 <p>Please selet a change to delete</p> 31 43 … … 105 117 </py:when> 106 118 </py:choose> 107 </div> 119 </body> 120 </html> ticketdeleteplugin/0.11/ticketdelete/web_ui.py
r3327 r3339 5 5 from trac.admin.api import IAdminPanelProvider 6 6 from trac.core import * 7 from trac.ticket.model import Ticket 7 8 from trac.web.api import IRequestFilter 8 9 from trac.web.chrome import ITemplateProvider, add_script, add_stylesheet … … 26 27 27 28 def post_process_request(self, req, template, content_type): 28 if template == 'ticket.cs' and req.perm.has_permission('TICKET_ADMIN'): 29 add_script(req, 'ticketdelete/jquery.js') 29 if template == 'ticket.html' and 'TICKET_ADMIN' in req.perm: 30 30 add_script(req, 'ticketdelete/ticketdelete.js') 31 31 add_stylesheet(req, 'ticketdelete/ticketdelete.css') … … 38 38 yield ('ticket', 'Ticket System', 'comments', 'Delete Changes') 39 39 40 def process_admin_request(self, req, cat, page, path_info):41 req.perm. assert_permission('TICKET_ADMIN')40 def render_admin_panel(self, req, cat, page, path_info): 41 req.perm.require('TICKET_ADMIN') 42 42 43 43 data = {} 44 44 45 data['ticketdelete.href'] = req.href('admin', cat, page) 46 data['ticketdelete.page'] = page 47 data['ticketdelete.redir'] = 1 45 data['href'] = req.href('admin', cat, page) 46 data['page'] = page 47 data['redir'] = 1 48 data['changes'] = {} 49 data['id'] = 0 48 50 49 51 if req.method == 'POST': … … 54 56 if t: 55 57 self._delete_ticket(t.id) 56 data[' ticketdelete.message'] = "Ticket #%s has been deleted." % t.id58 data['message'] = "Ticket #%s has been deleted." % t.id 57 59 58 60 else: 59 data[' ticketdelete.message'] = "The two IDs did not match. Please try again."61 data['message'] = "The two IDs did not match. Please try again." 60 62 elif page == 'comments': 61 63 if 'ticketid' in req.args: … … 64 66 t = self._validate(req, path_info) 65 67 if t: 66 data[' ticketdelete.href'] = req.href('admin', cat, page, path_info)68 data['href'] = req.href('admin', cat, page, path_info) 67 69 try: 68 70 deletions = None … … 79 81 self.log.debug('TicketDelete: Deleting change to ticket %s at %s (%s)'%(t.id,ts,field)) 80 82 self._delete_change(t.id, ts, field) 81 data[' ticketdelete.message'] = "Change to ticket #%s at %s has been modified" % (t.id, strftime('%a, %d %b %Y %H:%M:%S',localtime(ts)))82 data[' ticketdelete.redir'] = 083 data['message'] = "Change to ticket #%s at %s has been modified" % (t.id, strftime('%a, %d %b %Y %H:%M:%S',localtime(ts))) 84 data['redir'] = 0 83 85 except ValueError, e: 84 86 self.log.debug("TicketDelete: Error is %s"%e) 85 87 self.log.debug("TicketDelete: args = '%s'"%req.args.items()) 86 data[' ticketdelete.message'] = "Timestamp '%s' not valid" % req.args.get('ts')88 data['message'] = "Timestamp '%s' not valid" % req.args.get('ts') 87 89 88 90 … … 98 100 ticket_data = {} 99 101 for time, author, field, oldvalue, newvalue, perm in t.get_changelog(): 100 data = ticket_data.setdefault(str(time), {}) 101 data.setdefault('fields', {})[field] = {'old': oldvalue, 'new': newvalue} 102 data['author'] = author 103 data['prettytime'] = strftime('%a, %d %b %Y %H:%M:%S',localtime(time)) 102 c_data = ticket_data.setdefault(str(time), {}) 103 c_data.setdefault('fields', {})[field] = {'old': oldvalue, 'new': newvalue} 104 c_data['author'] = author 105 # FIXME: The datetime handling is not working - enable 106 # for traceback 107 c_data['prettytime'] = strftime('%a, %d %b %Y %H:%M:%S',localtime(time)) 104 108 105 109 # Remove all attachment changes … … 112 116 if selected is not None and selected < len(time_list): 113 117 ticket_data[time_list[selected]]['checked'] = True 114 data[' ticketdelete.changes'] = ticket_data118 data['changes'] = ticket_data 115 119 elif page == 'delete': 116 data[' ticketdelete.id'] = t.id120 data['id'] = t.id 117 121 118 return 'ticketdelete_admin.html', data, None122 return 'ticketdelete_admin.html', {'ticketdelete': data} 119 123 120 124 # ITemplateProvider methods … … 157 161 return t 158 162 except TracError: 159 data[' ticketdelete.message'] = "Ticket #%s not found. Please try again." % id163 data['message'] = "Ticket #%s not found. Please try again." % id 160 164 except ValueError: 161 data[' ticketdelete.message'] = "Ticket ID '%s' is not valid. Please try again." % arg165 data['message'] = "Ticket ID '%s' is not valid. Please try again." % arg 162 166 return False 163 167
