o k`F@sDddlmZmZddlmZddlmZmZmZGdddeZ dS)) Component implements)IRequestFilter)ITemplateProvider add_scriptadd_script_datac@s:eZdZdZeeeddZddZddZ dd Z d S) TicketCloneButtonzAdd 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. cCs|SN)selfreqhandlerr r 6/usr/lib/python3/dist-packages/tracopt/ticket/clone.pypre_process_requestz%TicketCloneButton.pre_process_requestcCsP|dkr#|d}|r#|jr#t|dt||dd|jdid|||fS)Nz ticket.htmlticketzticketopt/ticketclone.js newticket use_symbolszui.use_symbols)newticket_hrefui)getexistsrrhrefsession)r r templatedatametadatarr r rpost_process_request"s     z&TicketCloneButton.post_process_requestccs"ddlm}d|tdfVdS)Nr)resource_filename ticketopthtdocs) pkg_resourcesr__name__)r rr r rget_htdocs_dirs/s z!TicketCloneButton.get_htdocs_dirscCsgSr r )r r r rget_templates_dirs3rz$TicketCloneButton.get_templates_dirsN) r" __module__ __qualname____doc__rrrrrr#r$r r r rrs  rN) trac.corerr trac.web.apirtrac.web.chromerrrrr r r rs