Server : Apache System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64 User : dh_edsupp ( 6597262) PHP Version : 8.2.26 Disable Function : NONE Directory : /lib/python3/dist-packages/trac/ticket/templates/ |
Upload File : |
{# Copyright (C) 2007-2021 Edgewall Software 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/. #} # extends 'layout.html' <!DOCTYPE html> <html> <head> <title> # block title # if ticket.exists: ${'#'}${ticket.id} (${ticket.summary}) # else: ${_("New Ticket")} # endif ${ super() } # endblock title </title> # block head ${ super() } # if ticket.exists: <script src="${chrome.htdocs_location}js/threaded_comments.js"></script> # endif <script> jQuery(function($) { $("div.description").find("h1,h2,h3,h4,h5,h6") .addAnchor(_("Link to this section")); $(".foldable").enableFolding(false, true); # if ticket.exists: $("#attachments").toggleClass("collapsed"); $("#trac-up-attachments").click(function () { $("#attachments").removeClass("collapsed"); return true; }); $("#modify").parent().toggleClass("collapsed"); $(".trac-topnav a").click(function() { $("#modify").parent().removeClass("collapsed"); }); function setRevertHandler() { $("button.trac-revert").click(function() { var div = $("div", this); var field_name = div[0].id.substr(7); var field_value = div.text(); var input = $("#propertyform *[name=field_" + field_name + "]"); if (input.length > 0) { if (input.filter("input[type=radio]").length > 0) { input.val([field_value]); } else if (input.filter("input[type=checkbox]").length > 0) { input.val(field_value == "1" ? [field_value] : []); } else { input.val(field_value); } } else { // Special case for CC checkbox input = $("#propertyform input[name=cc_update]").val([]); } input.change(); // Remove the revert button if ($(this).closest("tbody").children("tr").length === 1) $(this).closest(".trac-change-panel").remove(); else $(this).closest("tr").remove(); return false; }); } setRevertHandler(); var comment_focused = false; $("#comment").focus(function() { comment_focused = true; }) .blur(function() { comment_focused = false; }); $("#propertyform").autoSubmit({preview: '1'}, function(data, reply) { var items = $(reply); // Update ticket box $("#ticket").replaceWith(items.filter('#ticket')); // Replaces content of #changelog, without recreating it $("#changelog").empty().append(items.filter("#changelog").contents()); // Apply comments order and "Show" preferences applyCommentsOrder( $('#prefs input[name="trac-comments-order"]:checked').val()); // Show warnings var new_changes = $("#changelog .trac-new"); $("#trac-edit-warning").toggle(new_changes.length != 0); if (new_changes.length != 0) $("#changelog").parent().show().removeClass("collapsed"); $("#trac-preview-warning").remove(); $("#trac-edit-warning").before(items.filter('#trac-preview-warning')); // Update view time $("#propertyform input[name='view_time']") .replaceWith(items.filter("input[name='view_time']")); // Update preview var preview = $("#ticketchange") .html(items.filter('#preview').children()); var show_preview = preview.children().length != 0; $("#ticketchange").toggle(show_preview); setRevertHandler(); // Execute scripts to load stylesheets items.filter("script").appendTo("head"); }, "#ticketchange .trac-loading"); $("#trac-comment-editor") .autoSubmit({preview_comment: '1'}, function(data, reply) { var comment = $("#trac-comment-editor") .next("div.comment").html(reply); comment.toggle(comment.children().length != 0); }, "#changelog .trac-loading"); # else: $("#propertyform").autoSubmit({preview: '1'}, function(data, reply) { $('#ticket').replaceWith(reply); }, "#ticket .trac-loading"); # endif }); </script> # endblock head </head> <body> # block content <div id="content" class="ticket"> # set preview_mode = 'preview' in req.args # set can_append = 'TICKET_APPEND' in perm(ticket.resource) # set can_create = ('TICKET_CREATE' in perm(ticket.resource) and not ticket.exists) # set can_modify = 'TICKET_CHGPROP' in perm(ticket.resource) # set can_edit = 'TICKET_EDIT_DESCRIPTION' in perm(ticket.resource) # set only_for_admin = 'TICKET_ADMIN' in perm(ticket.resource) # set has_property_editor = ( not version and version != 0 and not cnum_edit and (can_append or can_modify or can_edit or can_create)) # if (ticket.exists or preview_mode) and has_property_editor: <div class="trac-topnav"> <a href="#modify" title="${_('Go to the ticket editor')}">${ _("Modify")}</a> ↓ </div> # endif # if not ticket.exists: <h1>${_("Create New Ticket")} # if preview_mode and ticket.type: <span class="status">(${ticket.type})</span> # endif </h1> # endif # if ticket.exists: # with preview_mode = change_preview.fields # include 'ticket_box.html' # endwith ## # Do not show attachments for old versions of this ticket ## # or for new tickets. # if not version and version != 0 and ticket.exists: # with alist = attachments, foldable = True # include 'list_of_attachments.html' # endwith # endif <div${{'style': 'display: none' if not changes}|htmlattr}> <div class="trac-noscript" style="position: relative"> <form id="prefs" method="get" action="${href.prefs()}" style="position: absolute; right: 0"> <div id="trac-comments-order"> <input type="radio" id="trac-comments-oldest" name="trac-comments-order" value="oldest" checked="checked" /> <label for="trac-comments-oldest">${_("Oldest first")}</label> <input type="radio" id="trac-comments-newest" name="trac-comments-order" value="newest" /> <label for="trac-comments-newest">${_("Newest first")}</label> <span id="trac-threaded-toggle" style="display: none"> <input type="radio" id="trac-comments-threaded" name="trac-comments-order" value="threaded" /> <label for="trac-comments-threaded">${_("Threaded")}</label> </span> </div> <div> <input id="trac-show-comments-toggle" type="checkbox" checked="checked" /> <label for="trac-show-comments-toggle">${ _("Show comments")}</label> <input id="trac-show-property-changes-toggle" type="checkbox" /> <label for="trac-show-property-changes-toggle"> ${_("Show property changes")}</label> </div> </form> </div> <h3 class="foldable"> ${_("Change History")} <span class="trac-count">(${len(changes)})</span></h3> <div id="changelog"> # for change in changes: # set latest = change['comment_history'] | max # set change_date = change['comment_history'][latest]['date'] <div class="${classes('change', 'trac-new' if change_date is greaterthan(start_time) and 'attachment' not in change.fields)}"${ {'id': 'trac-change-%d-%d' % (change.cnum, to_utimestamp(change.date)) if 'cnum' in change}|htmlattr}> # include 'ticket_change.html' </div> # endfor <script> // inlinebuttons in ticket change are presented in // left-to-right order, i.e. those added before // #reply-to-comment-n will be on its left, those added // after will be on its right function insertNearReplyToComment(num, content, side) { var $replyto = $("#reply-to-comment-" + num); if (side === 'right') { $replyto.after(content); } else if (side === 'rightmost') { $replyto.parent().append(content); } else if (side === 'leftmost') { $replyto.parent().prepend(content); } else { // 'left' $replyto.before(content); } } </script> </div> </div> # endif ## end of the section we don't show for initial new tickets # if has_property_editor: <form method="post" id="propertyform" action="${href.ticket(ticket.id) + '#trac-add-comment' if ticket.exists else href.newticket() + '#ticket'}"> ${jmacros.form_token_input()} <div> # if ticket.exists: <h3 class="foldable">${_("Modify Ticket")}</h3> # endif <div id="modify"> ## Properties # if can_modify or can_edit or can_create: <fieldset id="properties"> # with fields = fields|rejectattr('skip')|selectattr('editable') <legend> # if ticket.exists: ${_("Change Properties")} # else: ${_("Properties")} # endif </legend> <table class="trac-properties"> <col class="th" /><col class="td" /> <col class="th" /><col class="td" /> # if can_modify or can_create: <tr> <th><label for="field-summary">${_("Summary:")}</label></th> <td class="fullrow" colspan="3"> <input type="text" id="field-summary" name="field_summary"${ {'class': 'trac-autofocus' if not ticket.exists and not preview_mode, 'value': ticket.summary or '' }|htmlattr}/> </td> </tr> # endif ## Reporter field # if only_for_admin or (not ticket.exists and authname == 'anonymous'): <tr> <th> <label for="field-reporter"> # if only_for_admin: ${_("Reporter:")} # else: ${_("Your email or username:")} # endif </label> </th> <td class="fullrow" colspan="3"> <input type="text" id="field-reporter" name="field_reporter" value="${ticket.reporter}" /> # if not only_for_admin and ticket.reporter == 'anonymous': <span class="hint"> # set preferences <a href="${href.prefs()}" class="trac-target-new">${ _("Preferences")}</a> # endset # trans preferences E-mail address and name can be saved in the ${preferences}. # endtrans </span> # endif </td> </tr> # endif # if can_edit or can_create: <tr> <th class="trac-textarea"><label for="field-description">${ _("Description:")}</label></th> <td class="fullrow" colspan="3"> <textarea id="field-description" name="field_description" class="wikitext trac-fullwidth trac-resizable" rows="10" cols="68">${ ticket.description}</textarea> <label for="field-description" class="trac-textarea-hint"> # trans wikiformatting = jmacros.wikiformatting_link() You may use ${wikiformatting} here. # endtrans </label> </td> </tr> # endif # if can_modify or can_create: # for row in fields|groupattr(2, 'type', 'not_equalto', 'textarea'): <tr> # set fullrow = len(row) == 1 # for field in row: # set value = (ticket[field.name] if ticket.exists else ticket.get_value_or_default(field.name)) # if loop.first or not fullrow: <th class="${classes('col%d' % loop.index, 'trac-textarea' if field.type == 'textarea')}"> # if field: # set label = (field.edit_label or field.label or field.name) # if field.type == 'radio': ${_("%(label)s:", label=label)} # else: <label for="field-${field.name}">${ _("%(label)s:", label=label)}</label> # endif # endif </th> # endif # if loop.first or not fullrow: <td class="${classes('col%d' % loop.index, fullrow=fullrow)}"${ {'colspan': 3 if fullrow}|htmlattr}> # if field: # if field.type == 'select': <select id="field-${field.name}" name="field_${field.name}"> # if field.optional: <option label="${_('(unset)')}"></option> # endif # for option in field.options: <option${{'selected': value == option, 'value': option }|htmlattr}>${option}</option> # endfor # for optgroup in field.optgroups: # if optgroup.options: <optgroup label="${optgroup.label}"> # for option in optgroup.options: <option${{'selected': value == option, 'value': option }|htmlattr}>${option}</option> # endfor </optgroup> # endif # endfor </select> # elif field.type == 'textarea': <textarea id="field-${field.name}" name="field_${field.name}" class="${classes('trac-resizable', wikitext=field.format == 'wiki')}" cols="60" rows="${field.height}" >{# jinjacheck: "ID field- already defined" OK #}${ value}</textarea> # elif field.type == 'checkbox': <span> <input type="checkbox" id="field-${field.name}" name="field_${field.name}" value="1"${ {'checked': value == '1'}|htmlattr}/> ## jinjacheck: "ID field- already defined" OK <input type="hidden" name="field_checkbox_${field.name}" value="1" /> </span> # elif field.type == 'radio': # for option in field.options: <label> <input type="radio" name="field_${field.name}"${ {'checked': value == option, 'value': option }|htmlattr}/> ${option} </label> # endfor # elif field.type == 'time': <input type="text" id="field-${field.name}" title="${field.format_hint}" name="field_${field.name}" value="${field.edit}" class="trac-${'date' if field.format == 'date' else 'datetime'}picker"/> ## jinjacheck: "ID field- already defined" OK # else: ## # Special case for Cc: field # if field.name == 'cc': <span> ## # Unauthenticated user without TICKET_EDIT_CC ## # and with email set in prefs # if 'cc_entry' in field: # if field.cc_action is none: <em> # set preferences_link <a href="${href.prefs()}" class="trac-target-new">${ _("Preferences")}</a> # endset ${tag_("Set your email in %(preferences_link)s", preferences_link=preferences_link)} </em> # else: <label for="field-cc"><em>${field.cc_entry}</em></label> # endif <input type="checkbox" id="field-cc" name="cc_update"${ {'title': gettext( "This checkbox allows you to add or remove yourself from the CC list."), 'style': 'display: none' if field.cc_action is none, 'disabled': field.cc_action is none, 'checked': field.cc_update }|htmlattr} /> # elif field.cc_action is none: ## # Unauthenticated user without TICKET_EDIT_CC ## # and no email set in prefs # else: ## # TICKET_EDIT_CC is allowed <input type="text" id="field-${field.name}" title="${_("Space or comma delimited email " "addresses and usernames are " "accepted.")}" name="field_${field.name}" value="${value}"/> ## jinjacheck: "ID field- already defined" OK # endif </span> # else: ## # All the other text input fields <input type="text" id="field-${field.name}"${ {'class': 'wikitext' if field.format == 'wiki' else None}|htmlattr} name="field_${field.name}"${ {'value': value}|htmlattr}/> ## jinjacheck: "ID field- already defined" OK # endif # endif # endif </td> # endif # endfor </tr> # endfor # endif </table> # endwith </fieldset> # endif ## Workflow support # with hidden = not can_append # include 'ticket_workflow.html' # endwith </div> </div> ## Add comment # if ticket.exists and can_append: <div id="trac-add-comment" class="field"> <h3 class="foldable" id="edit">${_("Add Comment")}</h3> <div> ## Comment field <fieldset> # if authname == 'anonymous': <div class="author"> <table class="trac-properties"> <tr> <th> <label for="author">${ _("Your email or username:")}</label><br /> </th> <td> <input type="text" id="author" name="author" value="${author_id}" /> </td> </tr> </table> # if author_id == 'anonymous': <span class="hint"> # set preferences <a href="${href.prefs()}" class="trac-target-new"> ${_("Preferences")}</a> # endset # trans preferences E-mail address and name can be saved in the ${preferences}. # endtrans </span> # endif </div> # endif <textarea id="comment" name="comment" class="${classes('wikitext', 'trac-fullwidth', 'trac-resizable', 'trac-autofocus' if replyto)}" rows="10" cols="78">${ comment}</textarea> <label for="comment" class="trac-textarea-hint"> # trans wikiformatting = jmacros.wikiformatting_link() You may use ${wikiformatting} here. # endtrans </label> </fieldset> </div> </div> # endif ## Attachment on creation checkbox # if not ticket.exists and ('ATTACHMENT_CREATE' in perm(ticket.resource.child('attachment'))): <p> <label> <input type="checkbox" name="attachment"${ {'checked': 'attachment' in req.args}|htmlattr}/> # trans I have files to attach to this ticket # endtrans </label> </p> # endif # if ticket.exists: <div class="trac-nav"> # if attachments.attachments or attachments.can_create: <a href="#attachments" id="trac-up-attachments" title="${_('Go to the list of attachments')}">${ _("Attachments")}</a> ↑ # endif <a href="#content" id="trac-up-view" title="${_('View the ticket description')}">${ _("Description")}</a> ↑ </div> # endif <div class="buttons"> # if ticket.exists: <input type="hidden" name="start_time" value="${to_utimestamp(start_time)}" /> <input type="hidden" name="view_time" value="${to_utimestamp(ticket['changetime'])}" /> <input type="hidden" name="replyto"${{'value': replyto}|htmlattr}/> # endif <input type="submit" name="preview" value="${_('Preview')}"${ {'disabled': disable_submit }|htmlattr} ${accesskey("r")} /> <input type="submit" name="submit" value="${_('Submit changes') if ticket.exists else _('Create ticket')}" class="trac-disable-on-submit"${ {'disabled': disable_submit }|htmlattr} /> </div> ## Preview of ticket changes # if ticket.exists and can_append: ${jmacros.warnings(chrome.warnings, 'trac-preview-warning', close_message=False)} <div id="trac-edit-warning" class="warning system-message" ${ {'style': 'display: none;' if start_time == ticket['changetime'] }|htmlattr}> # trans Review any <em class="trac-new">modifications</em> above, and any <em class="trac-conflict">conflicts</em> in the preview below. # endtrans </div> <div id="ticketchange" class="ticketdraft"${ {'style': 'display: none' if not (change_preview.fields or change_preview.comment) or cnum_edit is not none }|htmlattr}> # with change = change_preview, preview = True # include 'ticket_change.html' # endwith </div> # endif </form> # endif # if not ticket.exists: # with hide = not preview_mode, preview_mode = preview_mode # include 'ticket_box.html' # endwith # endif # call(note, page) jmacros.wikihelp('TracTickets'): # trans note, page ${note} See ${page} for help on using tickets. # endtrans # endcall </div> ${ super() } # endblock content </body> </html>