| Server IP : 173.236.223.38 / Your IP : 216.73.216.33 Web Server : Apache System : Linux vps62975 6.8.0-83-generic #83~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Sep 9 18:19:47 UTC 2 x86_64 User : invmicvps ( 6727287) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3/dist-packages/tracopt/ticket/ |
Upload File : |
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2021 Edgewall Software
# All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://trac.edgewall.org/wiki/TracLicense.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at https://trac.edgewall.org/log/.
from trac.core import Component, implements
from trac.web.api import IRequestFilter
from trac.web.chrome import ITemplateProvider, add_script, add_script_data
class TicketCloneButton(Component):
"""Add a ''Clone'' button in the ticket box and in ticket comments.
This button is located next to the 'Reply' to description button,
and pressing it will send a request for creating a new ticket
which will be based on the cloned one.
"""
implements(IRequestFilter, ITemplateProvider)
# IRequestFilter methods
def pre_process_request(self, req, handler):
return handler
def post_process_request(self, req, template, data, metadata):
if template == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists:
add_script(req, 'ticketopt/ticketclone.js')
add_script_data(req,
newticket_href=req.href('newticket'),
ui={'use_symbols':
req.session.get('ui.use_symbols')})
return template, data, metadata
# ITemplateProvider methods
def get_htdocs_dirs(self):
from pkg_resources import resource_filename
yield 'ticketopt', resource_filename(__name__, 'htdocs')
def get_templates_dirs(self):
return []