?? edit.html.tmpl
字號:
[%# 1.0@bugzilla.org %][%# The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> # Vaskin Kissoyan <vkissoyan@yahoo.com> # Max Kanat-Alexander <mkanat@bugzilla.org> # Frédéric Buclin <LpSolit@gmail.com> # Olav Vitters <olav@bkor.dhs.org> #%][% PROCESS global/variables.none.tmpl %][% PROCESS "global/field-descs.none.tmpl" %][% PROCESS bug/time.html.tmpl %] <script type="text/javascript"> <!-- /* Outputs a link to call replyToComment(); used to reduce HTML output */ function addReplyLink(id) { /* XXX this should really be updated to use the DOM Core's * createElement, but finding a container isn't trivial. */ document.write('[<a href="#add_comment" onclick="replyToComment(' + id + ');">reply<' + '/a>]'); } /* Adds the reply text to the `comment' textarea */ function replyToComment(id) { /* pre id="comment_name_N" */ var text_elem = document.getElementById('comment_text_'+id); var text = getText(text_elem); /* make sure we split on all newlines -- IE or Moz use \r and \n * respectively. */ text = text.split(/\r|\n/); var replytext = ""; for (var i=0; i < text.length; i++) { replytext += "> " + text[i] + "\n"; } replytext = "(In reply to comment #" + id + ")\n" + replytext + "\n"; [% IF Param("insidergroup") && user.in_group(Param("insidergroup")) %] if (document.getElementById('isprivate-'+id).checked) { document.getElementById('newcommentprivacy').checked = 'checked'; } [% END %] /* <textarea id="comment"> */ var textarea = document.getElementById('comment'); textarea.value += replytext; textarea.focus(); } if (typeof Node == 'undefined') { /* MSIE doesn't define Node, so provide a compatibility object */ window.Node = { TEXT_NODE: 3, ENTITY_REFERENCE_NODE: 5 }; } /* Concatenates all text from element's childNodes. This is used * instead of innerHTML because we want the actual text (and * innerText is non-standard). */ function getText(element) { var child, text = ""; for (var i=0; i < element.childNodes.length; i++) { child = element.childNodes[i]; var type = child.nodeType; if (type == Node.TEXT_NODE || type == Node.ENTITY_REFERENCE_NODE) { text += child.nodeValue; } else { /* recurse into nodes of other types */ text += getText(child); } } return text; }[% IF user.in_group(Param('timetrackinggroup')) %] var fRemainingTime = [% bug.remaining_time %]; // holds the original value function adjustRemainingTime() { // subtracts time spent from remaining time var new_time; // prevent negative values if work_time > fRemainingTime new_time = Math.max(fRemainingTime - document.changeform.work_time.value, 0.0); // get upto 2 decimal places document.changeform.remaining_time.value = Math.round(new_time * 100)/100; } function updateRemainingTime() { // if the remaining time is changed manually, update fRemainingTime fRemainingTime = document.changeform.remaining_time.value; }[% END %] function updateCommentTagControl(checkbox, form) { if (checkbox.checked) { form.comment.className='bz_private'; } else { form.comment.className=''; } } //--> </script><form name="changeform" method="post" action="process_bug.cgi"> <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]"> <input type="hidden" name="longdesclength" value="[% bug.longdescs.size %]"> <input type="hidden" name="id" value="[% bug.bug_id %]"> [%# That's the main table, which contains all editable fields. %] <table> <tr> <td valign="top"> <fieldset> <legend>Details</legend> <table> [%# *** Summary *** %] <tr> <td align="right"> <label for="short_desc" accesskey="s"><b><u>S</u>ummary</b></label>: </td> [% PROCESS input inputname => "short_desc" size => "60" colspan => 2 maxlength => 255 %] </tr> <tr> <td colspan="3"> <table> <tr> [%# *** ID, product, component, status and resolution *** %] <td valign="top">[% PROCESS section_details1 %]</td> [%# *** Platform, OS, severity, priority, version and milestone *** %] <td valign="top">[% PROCESS section_details2 %]</td> </tr> </table> </td> </tr> <tr> <td colspan="3"><hr size="1"></td> </tr> [%# *** URL Whiteboard Keywords *** %] <tr> <td align="right"> <label for="bug_file_loc" accesskey="u"><b> [% IF bug.bug_file_loc AND NOT bug.bug_file_loc.match("^(javascript|data)") %] <a href="[% bug.bug_file_loc FILTER html %]"><u>U</u>RL</a> [% ELSE %] <u>U</u>RL [% END %] [%%]</b></label>: </td> [% PROCESS input inputname => "bug_file_loc" size => "60" colspan => 2 %] </tr> [% IF Param('usestatuswhiteboard') %] <tr> <td align="right"> <label for="status_whiteboard" accesskey="w"><b><u>W</u>hiteboard</b></label>: </td> [% PROCESS input inputname => "status_whiteboard" size => "60" colspan => 2 %] </tr> [% END %] [% IF use_keywords %] <tr> <td align="right"> <label for="keywords" accesskey="k"> <b><a href="describekeywords.cgi"><u>K</u>eywords</a></b></label>: </td> [% PROCESS input inputname => "keywords" size => 60 colspan => 2 value => bug.keywords.join(', ') %] </tr> [% END %] [%# *** Custom Fields *** %] [% USE Bugzilla %] [% fields = Bugzilla.get_fields({ obsolete => 0, custom => 1 }) %] [% IF fields %] [% FOREACH field = fields %] <tr> [% PROCESS bug/field.html.tmpl value=bug.${field.name} editable = bug.check_can_change_field(field.name, 0, 1) value_span = 2 %] </tr> [% END %] [% END %] [%# *** Dependencies *** %] <tr> [% PROCESS dependencies dep = { title => "Depends on", fieldname => "dependson" } %] </tr> <tr> [% PROCESS dependencies accesskey = "b" dep = { title => "<u>B</u>locks", fieldname => "blocked" } %] </tr> <tr> <th> </th> <td colspan="2"> <a href="showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">Show dependency tree</a> [% IF Param('webdotbase') %] - <a href="showdependencygraph.cgi?id=[% bug.bug_id %]">Show dependency graph</a> [% END %] </td> </tr> </table> </fieldset> </td> [%# Force the layout to be displayed now, before drawing the second column of the table. # This should prevent bug 370739 when using Firefox 2. %] <script type="text/javascript"> <!-- var v = document.body.offsetHeight; //--> </script> <td valign="top"> [%# *** Reporter, owner and QA contact *** %] <fieldset> <legend>People</legend> [% PROCESS section_people %] </fieldset> [%# *** Flags *** %] [% show_bug_flags = 0 %] [% FOREACH type = bug.flag_types %] [% IF (type.flags && type.flags.size > 0) || (user.id && type.is_active) %] [% show_bug_flags = 1 %] [% LAST %] [% END %] [% END %] [% IF show_bug_flags %] <fieldset> <legend>Flags</legend> <table cellspacing="1" cellpadding="1"> <tr> <td colspan="2" valign="top"> [% IF user.id %] [% IF bug.flag_types.size > 0 %] [% PROCESS "flag/list.html.tmpl" flag_no_header = 1 flag_types = bug.flag_types any_flags_requesteeble = bug.any_flags_requesteeble %] [% END %] [% ELSE %] [% FOREACH type = bug.flag_types %] [% FOREACH flag = type.flags %] [% flag.setter.nick FILTER html %]: [%+ type.name FILTER html FILTER no_break %][% flag.status %] [%+ IF flag.requestee %] ([% flag.requestee.nick FILTER html %]) [% END %]<br> [% END %] [% END %] [% END %] </td> </tr> </table> </fieldset> [% END %] </td> </tr> </table> [% IF user.in_group(Param('timetrackinggroup')) %] <br> <table cellspacing="0" cellpadding="4" border="1"> <tr> <th align="center" bgcolor="#cccccc"> <label for="estimated_time">Orig. Est.</label> </th> <th align="center" bgcolor="#cccccc"> Current Est. </th> <th align="center" bgcolor="#cccccc"> <label for="work_time">Hours Worked</label> </th> <th align="center" bgcolor="#cccccc"> <label for="remaining_time">Hours Left</label> </th> <th align="center" bgcolor="#cccccc"> %Complete </th> <th align="center" bgcolor="#cccccc"> Gain </th> <th align="center" bgcolor="#cccccc"> <label for="deadline">Deadline</label> </th> </tr> <tr> <td align="center"> <input name="estimated_time" id="estimated_time" value="[% PROCESS formattimeunit time_unit=bug.estimated_time %]" size="6" maxlength="6"> </td> <td align="center"> [% PROCESS formattimeunit time_unit=(bug.actual_time + bug.remaining_time) %] </td> <td align="center"> [% PROCESS formattimeunit time_unit=bug.actual_time %] + <input name="work_time" id="work_time" value="0" size="3" maxlength="6" onchange="adjustRemainingTime();"> </td> <td align="center"> <input name="remaining_time" id="remaining_time" value="[% PROCESS formattimeunit time_unit=bug.remaining_time %]" size="6" maxlength="6" onchange="updateRemainingTime();"> </td> <td align="center"> [% PROCESS calculatepercentage act=bug.actual_time rem=bug.remaining_time %] </td> <td align="center"> [% PROCESS formattimeunit time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %] </td> <td align="center"> <input name="deadline" id="deadline" value="[% bug.deadline %]" size="10" maxlength="10"><br /> <small>(YYYY-MM-DD)</small> </td> </tr> <tr> <td colspan="7" align="right"> <a href="summarize_time.cgi?id=[% bug.bug_id %]&do_depends=1"> Summarize time (including time for [% terms.bugs %] blocking this [% terms.bug %])</a> </td> </tr> </table> [% END %][%# *** Attachments *** %] [% PROCESS attachment/list.html.tmpl attachments = bug.attachments bugid = bug.bug_id num_attachment_flag_types = bug.num_attachment_flag_types show_attachment_flags = bug.show_attachment_flags %][%# *** Comments Groups *** %] <br> <table cellpadding="1" cellspacing="1"> <tr> <td> [% IF user.id %] <label for="comment" accesskey="c"><b>Additional <u>C</u>omments</b></label>: [% IF Param("insidergroup") && user.in_group(Param("insidergroup")) %] <input type="checkbox" name="commentprivacy" value="1" id="newcommentprivacy" onClick="updateCommentTagControl(this, form)"> <label for="newcommentprivacy">Private</label> [% END %] <br> <a name="add_comment"></a> [% INCLUDE global/textarea.html.tmpl name = 'comment' id = 'comment' minrows = 10 maxrows = 25 cols = constants.COMMENT_COLS %] [% IF NOT bug.cc || NOT bug.cc.contains(user.login) %] [% has_role = bug.user.isreporter || bug.assigned_to.id == user.id || (Param('useqacontact') && bug.qa_contact && bug.qa_contact.id == user.id) %] <br> <input type="checkbox" id="addselfcc" name="addselfcc" [% " checked=\"checked\"" IF user.settings.state_addselfcc.value == 'always'
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -