diff options
Diffstat (limited to 'template/en/custom/bug/create/create.html.tmpl')
-rw-r--r-- | template/en/custom/bug/create/create.html.tmpl | 831 |
1 files changed, 831 insertions, 0 deletions
diff --git a/template/en/custom/bug/create/create.html.tmpl b/template/en/custom/bug/create/create.html.tmpl new file mode 100644 index 000000000..e8050a1d3 --- /dev/null +++ b/template/en/custom/bug/create/create.html.tmpl @@ -0,0 +1,831 @@ +[%# This Source Code Form is subject to the terms of the Mozilla Public + # License, v. 2.0. If a copy of the MPL was not distributed with this + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + # + # This Source Code Form is "Incompatible With Secondary Licenses", as + # defined by the Mozilla Public License, v. 2.0. + #%] + +[% title = BLOCK %]Enter [% terms.Bug %]: [% product.name FILTER html %][% END %] +[% use_qa_contact = Param("useqacontact") %] + +[% PROCESS global/header.html.tmpl + title = title + generate_api_token = 1 + yui = [ 'autocomplete', 'calendar', 'datatable', 'button' ] + style_urls = ['skins/standard/bug.css'] + javascript_urls = [ "js/attachment.js", "js/util.js", + "js/field.js", "js/TUI.js", "js/bug.js" ] + onload = "set_assign_to($use_qa_contact); hideElementById('attachment_true'); + showElementById('attachment_false'); showElementById('btn_no_attachment');" +%] + +<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 comp_desc = 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 %] + [% NEXT IF NOT c.is_active %] + components[[% count %]] = "[% c.name FILTER js %]"; + comp_desc[[% count %]] = "[% c.description FILTER html_light 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 %] + +var status_comment_required = new Array(); +[% FOREACH status = bug_status %] + status_comment_required['[% status.name FILTER js %]'] = + [% status.comment_required_on_change_from() ? 'true' : 'false' %] +[% END %] + +TUI_alternates['expert_fields'] = 'Show Advanced Fields'; +// Hide the Advanced Fields by default, unless the user has a cookie +// that specifies otherwise. +TUI_hide_default('expert_fields'); +// Also hide the "Paste text as attachment" textarea by default. +TUI_hide_default('attachment_text_field'); +--> +</script> + +[%# Migration note: The following file corresponds to the old Param +# 'entryheaderhtml' +#%] +[% PROCESS 'bug/create/user-message.html.tmpl' %] + +<div class="panel panel-default"> +<div class="panel-body"> + + <h2 style="margin-top:0px;">Enter A Bug</h2> + <div class="row" style="margin-bottom:10px;"> + <div class="col-sm-12"> + <a id="expert_fields_controller" class="controller bz_default_hidden pull-right" + href="javascript:TUI_toggle_class('expert_fields')">Hide + Advanced Fields</a> + [%# Show the link if the browser supports JS %] + <script type="text/javascript"> + YAHOO.util.Dom.removeClass('expert_fields_controller', + 'bz_default_hidden'); + </script> + </div> + </div> + +<form name="Create" id="Create" method="post" action="post_bug.cgi" + class="enter_bug_form" enctype="multipart/form-data" + onsubmit="return validateEnterBug(this)"> +<input type="hidden" name="product" value="[% product.name FILTER html %]"> + <input type="hidden" name="token" value="[% token FILTER html %]"> + <input type="hidden" name="version" + value="[% default.version FILTER html %]"> + + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Product</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% product.name %] + </div> + </div> + </div> + </div> + + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Reporter</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% user.login %] + </div> + </div> + </div> + </div> + + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Component</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-4"> + <select name="component" id="component" onchange="set_assign_to([% Param("useqacontact") %]);" + size="7" aria-required="true" class=""> + [%# Build the lists of assignees and QA contacts if "usemenuforusers" is enabled. %] + [% IF Param("usemenuforusers") %] + [% assignees_list = user.get_userlist.clone %] + [% qa_contacts_list = user.get_userlist.clone %] + [% END %] + + [%- FOREACH c = product.components %] + [% NEXT IF NOT c.is_active %] + <option value="[% c.name FILTER html %]" + id="v[% c.id FILTER html %]_component" + [% IF c.name.lower == default.component_.lower %] + [%# This is for bug/field.html.tmpl, for visibility-related + # controls. %] + [% default.component_id = c.id %] + selected="selected" + [% END %]> + [% c.name FILTER html -%] + </option> + [% IF Param("usemenuforusers") %] + [% INCLUDE build_userlist default_user = c.default_assignee, + userlist = assignees_list %] + [% INCLUDE build_userlist default_user = c.default_qa_contact, + userlist = qa_contacts_list %] + [% END %] + [%- END %] + </select> + </div> + + <div class="col-sm-8"> + <div id="comp_desc" class="comment">Select a component to read its description.</div> + <script type="text/javascript"> + <!-- + [%+ INCLUDE "bug/field-events.js.tmpl" + field = bug_fields.component, product = product %] + //--> + </script> + </div> + </div> + </div> + </div> + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Severity</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.bug_severity, editable = 1, no_tds = 1, + value = default.bug_severity %] + </div> + </div> + </div> + </div> + +[% IF Param('letsubmitterchoosepriority') %] + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Priority</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.priority, editable = 1, no_tds = 1, + value = default.priority %] + </div> + </div> + </div> + </div> +[% END %] + + +<div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Hardware</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.rep_platform, editable = 1, no_tds = 1, + value = default.rep_platform %] + </div> + </div> + </div> +</div> + + + [% IF user.in_group('editbugs', product.id) %] + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Depends on</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="dependson" accesskey="d" value="[% dependson FILTER html %]"> + </div> + </div> + </div> + </div> + + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Blocks</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="blocked" accesskey="b" value="[% blocked FILTER html %]"> + </div> + </div> + </div> + </div> + [% END %] + + + + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>OS</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-2"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.op_sys, editable = 1, no_tds = 1, + value = default.op_sys %] + [% IF (!Param('defaultplatform') || !Param('defaultopsys')) && !cloned_bug_id %] + </div> + <div class="col-sm-10"> + <div class="text-success">We've made a guess at your + [% IF Param('defaultplatform') %] + operating system. Please check it + [% ELSIF Param('defaultopsys') %] + platform. Please check it + [% ELSE %] + operating system and platform. Please check them + [% END %] + and make any corrections if necessary.</div> + [% END %] + </div> + </div> + </div> + </div> + + + + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Status</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.bug_status, no_tds = 1, + editable = (bug_status.size > 1), value = default.bug_status + override_legal_values = bug_status %] + + <!-- TODO: + [%# Calculate the number of rows we can use for flags %] + [% num_rows = 6 + (Param("useqacontact") ? 1 : 0) + + (user.is_timetracker ? 3 : 0) + %] + + <td rowspan="[% num_rows FILTER html %]"> + [% 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> + --> + </div> + </div> + </div> +</div> + + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Assignee</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <!-- + [% INCLUDE "bug/field-label.html.tmpl" + field = bug_fields.assigned_to editable = 1 + %] + + <!-- TODO: show suggestions --> + [% INCLUDE global/userselect.html.tmpl + id => "assigned_to" + name => "assigned_to" + value => assigned_to + disabled => assigned_to_disabled + size => 30 + emptyok => 1 + custom_userlist => assignees_list + %] + </div> + </div> + </div> + </div> + + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>CC</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <!-- + [% INCLUDE "bug/field-label.html.tmpl" + field = bug_fields.cc editable = 1 + %] + + --> + + [% INCLUDE global/userselect.html.tmpl + id => "cc" + name => "cc" + value => cc + disabled => cc_disabled + size => 30 + multiple => 5 + %] + </div> + </div> + </div> +</div> + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Default CC</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <div id="initial_cc"> + </div> + </div> + </div> + </div> +</div> + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Alias</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="alias" size="20" value="[% alias FILTER html %]"> + </div> + </div> + </div> +</div> + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>URL</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="bug_file_loc" id="bug_file_loc" class="text_input" + size="40" value="[% bug_file_loc FILTER html %]"> + </div> + </div> + </div> +</div> + + +[% IF user.is_timetracker %] + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Orig. Est.</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="estimated_time" size="6" maxlength="6" value="[% estimated_time FILTER html %]"> + </div> + </div> + </div> + </div> + + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Deadline</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.deadline, value = deadline, no_tds = 1, + editable = 1, value_span = 2 %] + </div> + </div> + </div> + </div> +[% END %] + +<div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Arches</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% Hook.process("after_cc_field") %] + </div> + </div> + </div> +</div> + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Summary</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <input name="short_desc" size="70" value="[% short_desc FILTER html %]" + maxlength="255" spellcheck="true" aria-required="true" + class="text_input form-control selectwidthauto" id="short_desc"> + </div> + </div> + </div> + </div> + +[% IF feature_enabled('jsonrpc') AND !cloned_bug_id AND user.settings.possible_duplicates.value == 'on' %] + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Possible Duplicates</b> + </div> + <div class="col-sm-10"> + + <div id="possible_duplicates"></div> + <script type="text/javascript"> + var dt_columns = [ + { key: "id", label: "[% field_descs.bug_id FILTER js %]", + formatter: YAHOO.bugzilla.dupTable.formatBugLink }, + { key: "summary", + label: "[% field_descs.short_desc FILTER js %]", + formatter: "text" }, + { key: "status", + label: "[% field_descs.bug_status FILTER js %]", + formatter: YAHOO.bugzilla.dupTable.formatStatus }, + { key: "update_token", label: '', + formatter: YAHOO.bugzilla.dupTable.formatCcButton } + ]; + YAHOO.bugzilla.dupTable.addCcMessage = "Add Me to the CC List"; + YAHOO.bugzilla.dupTable.init({ + container: 'possible_duplicates', + columns: dt_columns, + product_name: '[% product.name FILTER js %]', + summary_field: 'short_desc', + options: { + MSG_LOADING: 'Searching for possible duplicates...', + MSG_EMPTY: 'No possible duplicates found.', + SUMMARY: 'Possible Duplicates' + } + }); + </script> + + </div> + </div> +[% END %] + + + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Description</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% defaultcontent = BLOCK %] + [%-# We are within a BLOCK. The comment will be correctly HTML-escaped + # by global/textarea.html.tmpl. So we must not escape the comment here. %] + [% comment FILTER none %] + [%- END %] + [% INCLUDE bug/comment.html.tmpl + minrows = 10 + maxrows = 25 + cols = constants.COMMENT_COLS + defaultcontent = defaultcontent + %] + </div> + </div> + </div> + </div> + + + [% IF Param('use_see_also') %] + <div class="row expert_fields"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>See also</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + [% INCLUDE bug/field.html.tmpl + bug = default + field = bug_fields.see_also + editable = 1 + value = see_also + %] + </div> + </div> + </div> + </div> + [% END %] + + + + [% IF Param("maxattachmentsize") || Param("maxlocalattachment") %] + <div class="row"> + <div class="col-sm-2 align-h-right" style="padding-right: 0px;text-align:right;"> + <b>Attachment</b> + </div> + <div class="col-sm-10"> + <div class="row"> + <div class="col-sm-12"> + <div id="attachment_false" class="bz_default_hidden"> + <input class="btn btn-default" type="button" value="Add an attachment" onClick="handleWantsAttachment(true)"> + </div> + + <div id="attachment_true"> + <input type="button" id="btn_no_attachment" value="Don't add an attachment" + class="bz_default_hidden" onClick="handleWantsAttachment(false)"> + <fieldset> + <legend>Add an attachment</legend> + <table class="attachment_entry"> + [% PROCESS attachment/createformcontents.html.tmpl + flag_types = product.flag_types.attachment + any_flags_requesteeble = 1 + flag_table_id ="attachment_flags" %] + </table> + </fieldset> + </div> + </div> + </div> + </div> + </div> +[% END %] + + + +<!-- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --> +<!-- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --> +<!-- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --> +<!-- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --> +<!-- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --> + + + + + + + +[% IF Param("useqacontact") %] +<div class="panel panel-default expert_fields"> +<div class="panel-heading"> + <h3 class="panel-title">QA Contract</h3> +</div> +<div class="panel-body" > + [% INCLUDE "bug/field-label.html.tmpl" + field = bug_fields.qa_contact editable = 1 + %] + + <!-- + <td colspan="2"> + [% INCLUDE global/userselect.html.tmpl + id => "qa_contact" + name => "qa_contact" + value => qa_contact + disabled => qa_contact_disabled + size => 30 + emptyok => 1 + custom_userlist => qa_contacts_list + %] + <noscript>(Leave blank to assign to default qa contact)</noscript> + --> + +</div> +</div> +[% END %] + + + + + + + + + +[% USE Bugzilla %] + +[% FOREACH field = Bugzilla.active_custom_fields %] +[% NEXT UNLESS field.enter_bug %] +[% SET value = ${field.name}.defined ? ${field.name} : "" %] +<tr [% 'class="expert_fields"' IF !field.is_mandatory %]> +[% INCLUDE bug/field.html.tmpl +bug = default, field = field, value = value, editable = 1, +value_span = 3 %] +</tr> +[% END %] + + + + + +[% IF user.is_insider %] +<tr class="expert_fields"> +<th> </th> +<td colspan="3"> + + <input type="checkbox" id="comment_is_private" name="comment_is_private" + [% ' checked="checked"' IF comment_is_private %] + onClick="updateCommentTagControl(this, 'comment')"> + <label for="comment_is_private"> + Make description and any new attachment private (visible only to members + of the <strong>[% Param('insidergroup') FILTER html %]</strong> group) + </label> +</td> +</tr> +<script> +updateCommentTagControl(document.getElementById('comment_is_private'), 'comment'); +</script> +[% END %] + +[% IF use_keywords %] +<div class="panel panel-default"> +<div class="panel-heading"> + <h3 class="panel-title">Keywords</h3> +</div> +<div class="panel-body" > + [% INCLUDE bug/field.html.tmpl + bug = default, field = bug_fields.keywords, editable = 1, + value = keywords, possible_values = all_keywords, + desc_url = "describekeywords.cgi", value_span = 3 + %] +</div> +</div> +[% END %] + + + + +<table> + +<tbody class="expert_fields"> + <tr> + [% IF Param('usetargetmilestone') && Param('letsubmitterchoosemilestone') %] + [% INCLUDE select field = bug_fields.target_milestone %] + [% ELSE %] + <td colspan="2"> </td> + [% END %] + + <td colspan="2"> </td> + </tr> +</tbody> + + + +<tbody class="expert_fields"> + [% IF product.groups_available.size %] + <tr> + <th> </th> + <td colspan="3"> + <br> + <strong> + Only users in [%+ IF Param('or_groups') %]at least one[% ELSE %]all[% END %] of the selected groups can view this + [%+ terms.bug %]: + </strong> + <br> + <span class="bz_info"> + (Leave all boxes unchecked to make this a public [% terms.bug %].) + </span> + <br> + <br> + + <!-- Checkboxes --> + <input type="hidden" name="defined_groups" value="1"> + [% FOREACH group = product.groups_available %] + <input type="checkbox" id="group_[% group.id FILTER html %]" + name="groups" value="[% group.name FILTER html %]" + [% ' checked="checked"' IF default.groups.contains(group.name) + OR group.is_default %]> + <label for="group_[% group.id FILTER html %]"> + [%- group.description FILTER html_light %]</label><br> + [% END %] + </td> + </tr> + [% END %] +</tbody> +</table> + + +[%# Form controls for entering additional data about the bug being created. %] +[% Hook.process("form") %] + +<hr/> +<input class="btn btn-primary pull-right" type="submit" id="commit" value="Submit [% terms.Bug %]"> + +<input class="btn btn-default pull-right expert_fields" type="submit" name="maketemplate" id="maketemplate" + value="Remember values as bookmarkable template" + onclick="bz_no_validate_enter_bug=true" style="margin-right:10px;"> +<input type="hidden" name="form_name" value="enter_bug"> + + +</form> +</div> +</div> + +<br/> +<br/> + +[%# Links or content with more information about the bug being created. %] +[% Hook.process("end") %] + +[% PROCESS global/footer.html.tmpl %] + +[%############################################################################%] +[%# Block for SELECT fields #%] +[%############################################################################%] + +[% BLOCK select %] + + [% INCLUDE "bug/field-label.html.tmpl" + field = field editable = 1 + %] + <td> + <select name="[% field.name FILTER html %]" + id="[% field.name FILTER html %]"> + [%- FOREACH x = ${field.name} %] + [% NEXT IF NOT x.is_active %] + <option value="[% x.name FILTER html %]" + [% " selected=\"selected\"" IF x.name == default.${field.name} %]> + [% display_value(field.name, x.name) FILTER html %] + </option> + [% END %] + </select> + </td> +[% END %] + +[% BLOCK build_userlist %] + [% user_found = 0 %] + [% default_login = default_user.login %] + [% RETURN UNLESS default_login %] + + [% FOREACH user = userlist %] + [% IF user.login == default_login %] + [% user_found = 1 %] + [% LAST %] + [% END %] + [% END %] + + [% userlist.push({login => default_login, + identity => default_user.identity, + visible => 1}) + UNLESS user_found %] +[% END %] |