📄 create.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> # Ville Skyttä <ville.skytta@iki.fi> # Shane H. W. Travis <travis@sedsystems.ca> # Marc Schumann <wurblzap@gmail.com> # Akamai Technologies <bugzilla-dev@akamai.com> # Max Kanat-Alexander <mkanat@bugzilla.org> #%][% PROCESS "global/field-descs.none.tmpl" %][% title = BLOCK %]Enter [% terms.Bug %]: [% product.name FILTER html %][% END %][% PROCESS global/header.html.tmpl title = title style_urls = [ 'skins/standard/create_attachment.css' ] javascript_urls = [ "js/attachment.js" ]%]<script type="text/javascript"><!--var initialowners = new Array([% product.components.size %]);var last_initialowner;var initialccs = new Array([% product.components.size %]);var components = new Array([% product.components.size %]);var flags = new Array([% product.components.size %]);[% IF Param("useqacontact") %] var initialqacontacts = new Array([% product.components.size %]); var last_initialqacontact;[% END %][% count = 0 %][%- FOREACH c = product.components %] components[[% count %]] = "[% c.name FILTER js %]"; initialowners[[% count %]] = "[% c.default_assignee.login FILTER js %]"; [% flag_list = [] %] [% FOREACH f = c.flag_types.bug %] [% NEXT UNLESS f.is_active %] [% flag_list.push(f.id) %] [% END %] [% FOREACH f = c.flag_types.attachment %] [% NEXT UNLESS f.is_active %] [% flag_list.push(f.id) %] [% END %] flags[[% count %]] = [[% flag_list.join(",") FILTER js %]]; [% IF Param("useqacontact") %] initialqacontacts[[% count %]] = "[% c.default_qa_contact.login FILTER js %]"; [% END %] [% SET initial_cc_list = [] %] [% FOREACH cc_user = c.initial_cc %] [% initial_cc_list.push(cc_user.login) %] [% END %] initialccs[[% count %]] = "[% initial_cc_list.join(', ') FILTER js %]"; [% count = count + 1 %][%- END %]function set_assign_to() { // Based on the selected component, fill the "Assign To:" field // with the default component owner, and the "QA Contact:" field // with the default QA Contact. It also selectively enables flags. var form = document.Create; var assigned_to = form.assigned_to.value;[% IF Param("useqacontact") %] var qa_contact = form.qa_contact.value;[% END %] var index = -1; if (form.component.type == 'select-one') { index = form.component.selectedIndex; } else if (form.component.type == 'hidden') { // Assume there is only one component in the list index = 0; } if (index != -1) { var owner = initialowners[index]; var component = components[index]; if (assigned_to == last_initialowner || assigned_to == owner || assigned_to == '') { form.assigned_to.value = owner; last_initialowner = owner; } document.getElementById('initial_cc').innerHTML = initialccs[index]; [% IF Param("useqacontact") %] var contact = initialqacontacts[index]; if (qa_contact == last_initialqacontact || qa_contact == contact || qa_contact == '') { form.qa_contact.value = contact; last_initialqacontact = contact; } [% END %] // First, we disable all flags. Then we re-enable those // which are available for the selected component. var inputElements = document.getElementsByTagName("select"); var inputElement, flagField; for ( var i=0 ; i<inputElements.length ; i++ ) { inputElement = inputElements.item(i); if (inputElement.name.search(/^flag_type-(\d+)$/) != -1) { var id = inputElement.name.replace(/^flag_type-(\d+)$/, "$1"); inputElement.disabled = true; // Also disable the requestee field, if it exists. inputElement = document.getElementById("requestee_type-" + id); if (inputElement) inputElement.disabled = true; } } // Now enable flags available for the selected component. for (var i = 0; i < flags[index].length; i++) { flagField = document.getElementById("flag_type-" + flags[index][i]); // Do not enable flags the user cannot set nor request. if (flagField && flagField.options.length > 1) { flagField.disabled = false; // Re-enabling the requestee field depends on the status // of the flag. toggleRequesteeField(flagField, 1); } } }}function handleWantsAttachment(wants_attachment) { if (wants_attachment) { document.getElementById('attachment_false').style.display = 'none'; document.getElementById('attachment_true').style.display = 'block'; } else { document.getElementById('attachment_false').style.display = 'block'; document.getElementById('attachment_true').style.display = 'none'; clearAttachmentFields(); }}--></script><form name="Create" id="Create" method="post" action="post_bug.cgi" enctype="multipart/form-data"><input type="hidden" name="product" value="[% product.name FILTER html %]"><input type="hidden" name="token" value="[% token FILTER html %]"><table cellspacing="2" cellpadding="0" border="0"> <tr> <td> </td> <td colspan="3"> [%# Migration note: The following file corresponds to the old Param # 'entryheaderhtml' #%] [% INCLUDE 'bug/create/user-message.html.tmpl' %] </td> </tr> <tr> <td> </td> <td colspan="3"> </td> </tr> <tr> <td align="right" valign="top"><strong>Reporter:</strong></td> <td valign="top">[% user.login FILTER html %]</td> <td align="right" valign="top"><strong>Product:</strong></td> <td valign="top">[% product.name FILTER html %]</td> </tr> [%# We can't use the select block in these two cases for various reasons. %] <tr> <td align="right" valign="top"> <strong>Version:</strong> </td> <td> <select name="version" size="5"> [%- FOREACH v = version %] <option value="[% v FILTER html %]" [% " selected=\"selected\"" IF v == default.version %]>[% v FILTER html -%] </option> [%- END %] </select> </td> <td align="right" valign="top"> <strong> <a href="describecomponents.cgi?product=[% product.name FILTER url_quote %]"> Component</a>: </strong> </td> <td> <select name="component" onchange="set_assign_to();" size="5"> [%- FOREACH c = product.components %] <option value="[% c.name FILTER html %]" [% " selected=\"selected\"" IF c.name == default.component_ %]> [% c.name FILTER html -%] </option> [%- END %] </select> </td> </tr> <tr> <td> </td> <td colspan="3"> </td> </tr> <tr> [% sel = { description => 'Severity', name => 'bug_severity' } %] [% INCLUDE select %] [% sel = { description => 'Platform', name => 'rep_platform' } %] [% INCLUDE select %] </tr> <tr> [% IF Param('letsubmitterchoosepriority') %] [% sel = { description => 'Priority', name => 'priority' } %] [% INCLUDE select %] [% ELSE %] <td colspan="2"> <input type="hidden" name="priority" value="[% default.priority FILTER html %]"> </td> [% END %] [% sel = { description => 'OS', name => 'op_sys' } %] [% INCLUDE select %] </tr> [% IF Param('usetargetmilestone') && Param('letsubmitterchoosemilestone') %] <tr> [% sel = { description => 'Target Milestone', name => 'target_milestone' } %] [% INCLUDE select %] <td colspan="2"> </td> </tr> [% END %] <tr> <td> </td> <td colspan="3"> </td> </tr> <tr>[% IF bug_status.size <= 1 %] <input type="hidden" name="bug_status" value="[% default.bug_status FILTER html %]"> <td align="right" valign="top"><strong>Initial State:</strong></td> <td valign="top">[% status_descs.${default.bug_status} FILTER html %]</td>[% ELSE %] [% sel = { description => 'Initial State', name => 'bug_status' } %] [% INCLUDE select %][% END %] <td> </td> [%# Calculate the number of rows we can use for flags %] [% num_rows = 6 + (Param("useqacontact") ? 1 : 0) + (user.in_group(Param('timetrackinggroup')) ? 3 : 0) + (Param("usebugaliases") ? 1 : 0) %] <td rowspan="[% num_rows FILTER html %]" valign="top"> [% IF product.flag_types.bug.size > 0 %] [% display_flag_headers = 0 %] [% any_flags_requesteeble = 0 %] [% FOREACH flag_type = product.flag_types.bug %] [% NEXT UNLESS flag_type.is_active %] [% display_flag_headers = 1 %] [% SET any_flags_requesteeble = 1 IF flag_type.is_requestable && flag_type.is_requesteeble %] [% END %] [% IF display_flag_headers %] [% PROCESS "flag/list.html.tmpl" flag_types = product.flag_types.bug any_flags_requesteeble = any_flags_requesteeble flag_table_id = "bug_flags" %] [% END %] [% END %] </td> </tr> <tr> <td align="right"> <strong> <a href="page.cgi?id=fields.html#assigned_to">Assign To</a>: </strong> </td> <td colspan="2"> [% INCLUDE global/userselect.html.tmpl name => "assigned_to" value => assigned_to disabled => assigned_to_disabled size => 32 emptyok => 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -