summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDexter Morgan <dmorgan@mageia.org>2013-02-20 16:56:50 +0000
committerColin Guthrie <colin@mageia.org>2014-09-15 20:44:40 +0100
commit90ef4566baec7840461f6a7d248c660da0525c4d (patch)
tree88b92cd7b9f1d8b600f1ec9f49141ee165b255b6
parent4de8bf5ba33129f61001b7dcb1ae2ac847cb6a08 (diff)
downloadbugzilla-90ef4566baec7840461f6a7d248c660da0525c4d.tar
bugzilla-90ef4566baec7840461f6a7d248c660da0525c4d.tar.gz
bugzilla-90ef4566baec7840461f6a7d248c660da0525c4d.tar.bz2
bugzilla-90ef4566baec7840461f6a7d248c660da0525c4d.tar.xz
bugzilla-90ef4566baec7840461f6a7d248c660da0525c4d.zip
More templates
-rw-r--r--template/en/default/bug/create/comment-guided.txt.tmpl52
-rw-r--r--template/en/default/bug/edit.html.tmpl1188
-rw-r--r--template/en/default/global/common-links.html.tmpl117
-rw-r--r--template/en/default/global/variables.none.tmpl33
-rw-r--r--template/en/default/index.html.tmpl179
-rw-r--r--template/en/default/user-error.html.tmpl1804
6 files changed, 3373 insertions, 0 deletions
diff --git a/template/en/default/bug/create/comment-guided.txt.tmpl b/template/en/default/bug/create/comment-guided.txt.tmpl
new file mode 100644
index 0000000..66220ec
--- /dev/null
+++ b/template/en/default/bug/create/comment-guided.txt.tmpl
@@ -0,0 +1,52 @@
+[%# 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>
+ #%]
+[%# INTERFACE:
+ # This template has no interface.
+ #
+ # Form variables from a bug submission (i.e. the fields on a template from
+ # enter_bug.cgi) can be access via Bugzilla.cgi.param. It can be used to
+ # pull out various custom fields and format an initial Description entry
+ # from them.
+ #%]
+[% USE Bugzilla %]
+[% cgi = Bugzilla.cgi %]
+
+[%+ cgi.param("comment") IF cgi.param("comment") %]
+
+[%+ IF cgi.param("reproducible") != "Choose one..." -%]
+Reproducible: [%+ cgi.param("reproducible") %]
+[% END %]
+
+[% IF !(cgi.param("reproduce_steps").match('^1\.\s*2\.\s*3\.\s*$') || cgi.param("reproduce_steps").match('^\s*$')) %]
+Steps to Reproduce:
+[%+ cgi.param("reproduce_steps") %]
+[% END %]
+
+[% IF cgi.param("actual_results") -%]
+Actual Results:
+[%+ cgi.param("actual_results") %]
+[% END %]
+
+[% IF cgi.param("expected_results") %]
+Expected Results:
+[%+ cgi.param("expected_results") %]
+[% END %]
+
+[%+ cgi.param("additional_info") %]
diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl
new file mode 100644
index 0000000..dbc23c8
--- /dev/null
+++ b/template/en/default/bug/edit.html.tmpl
@@ -0,0 +1,1188 @@
+[%# 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>
+ # Guy Pyrzak <guy.pyrzak@gmail.com>
+ # Elliotte Martin <emartin@everythingsolved.com>
+ #%]
+
+[% 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, real_id) {
+ /* XXX this should really be updated to use the DOM Core's
+ * createElement, but finding a container isn't trivial.
+ */
+ [% IF user.settings.quote_replies.value != 'off' %]
+ document.write('[<a href="#add_comment" onclick="replyToComment(' +
+ id + ',' + real_id + '); return false;">reply<' + '/a>]');
+ [% END %]
+ }
+
+ /* Adds the reply text to the `comment' textarea */
+ function replyToComment(id, real_id) {
+ var prefix = "(In reply to comment #" + id + ")\n";
+ var replytext = "";
+ [% IF user.settings.quote_replies.value == 'quoted_reply' %]
+ /* 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/);
+
+ for (var i=0; i < text.length; i++) {
+ replytext += "> " + text[i] + "\n";
+ }
+
+ replytext = prefix + replytext + "\n";
+ [% ELSIF user.settings.quote_replies.value == 'simple_reply' %]
+ replytext = prefix;
+ [% END %]
+
+ [% IF user.is_insider %]
+ if (document.getElementById('isprivate_' + real_id).checked) {
+ document.getElementById('newcommentprivacy').checked = 'checked';
+ updateCommentTagControl(document.getElementById('newcommentprivacy'), 'comment');
+ }
+ [% 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.is_timetracker %]
+ 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 %]
+
+ /* Index all classifications so we can keep track of the classification
+ * for the selected product, which could control field visibility.
+ */
+ var all_classifications = new Array([% bug.choices.product.size %]);
+ [%- FOREACH product = bug.choices.product %]
+ all_classifications['[% product.name FILTER js %]'] = '
+ [%- product.classification.name FILTER js %]';
+ [%- END %]
+
+ //-->
+ </script>
+
+<form name="changeform" id="changeform" method="post" action="process_bug.cgi">
+
+ <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]">
+ <input type="hidden" name="longdesclength" value="[% bug.comments.size %]">
+ <input type="hidden" name="id" value="[% bug.bug_id %]">
+ <input type="hidden" name="token" value="[% issue_hash_token([bug.id, bug.delta_ts]) FILTER html %]">
+
+ [% PROCESS section_title %]
+ <table class="edit_form">
+ <tr>
+ [%# 1st Column %]
+ <td id="bz_show_bug_column_1" class="bz_show_bug_column">
+ <table>
+ [%# *** ID, product, component, status, resolution, Hardware, and OS *** %]
+ [% PROCESS section_status %]
+
+ [% PROCESS section_spacer %]
+
+ [% PROCESS section_details1 %]
+
+ [% PROCESS section_spacer %]
+
+ [%# *** severity, priority, version and milestone *** %]
+ [% PROCESS section_details2 %]
+
+ [%# *** assigned to and qa contact *** %]
+ [% PROCESS section_people %]
+
+ [% PROCESS section_spacer %]
+
+ [% PROCESS section_url_keyword_whiteboard %]
+
+ [% PROCESS section_spacer %]
+
+ [%# *** Dependencies *** %]
+ [% PROCESS section_dependson_blocks %]
+
+ </table>
+ </td>
+ <td>
+ <div class="bz_column_spacer">&nbsp;</div>
+ </td>
+ [%# 2nd Column %]
+ <td id="bz_show_bug_column_2" class="bz_show_bug_column">
+ <table cellpadding="3" cellspacing="1">
+ [%# *** Reported and modified dates *** %]
+ [% PROCESS section_dates %]
+
+ [% PROCESS section_cclist %]
+
+ [% PROCESS section_spacer %]
+
+ [% PROCESS section_see_also %]
+
+ [% PROCESS section_customfields %]
+
+ [% PROCESS section_spacer %]
+
+ [% Hook.process("after_custom_fields") %]
+
+ [% PROCESS section_flags %]
+
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <hr id="bz_top_half_spacer">
+ </td>
+ </tr>
+ </table>
+
+ <table id="bz_big_form_parts" cellspacing="0" cellpadding="0"><tr>
+ <td>
+ [% IF user.is_timetracker %]
+ [% PROCESS section_timetracking %]
+ [% 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
+ %]
+
+ [% IF user.settings.comment_box_position.value == 'before_comments' %]
+ [% PROCESS comment_box %]
+ [% END %]
+ </td>
+ <td>
+ [% PROCESS section_restrict_visibility %]
+ </td>
+ </tr></table>
+
+ [%# *** Additional Comments *** %]
+ <div id="comments">
+ [% PROCESS bug/comments.html.tmpl
+ comments = bug.comments
+ mode = user.id ? "edit" : "show"
+ %]
+ </div>
+
+ [% IF user.settings.comment_box_position.value == 'after_comments' %]
+ <hr>
+ [% PROCESS comment_box %]
+ [% END %]
+
+</form>
+
+[%############################################################################%]
+[%# Block for the Title (alias and short desc) #%]
+[%############################################################################%]
+
+[% BLOCK section_title %]
+ [%# That's the main table, which contains all editable fields. %]
+ <div class="bz_alias_short_desc_container edit_form">
+ [% PROCESS commit_button id="_top"%]
+ <a href="show_bug.cgi?id=[% bug.bug_id %]">
+ [%-# %]<b>[% terms.Bug %]&nbsp;[% bug.bug_id FILTER html %]</b>
+ [%-# %]</a> -<span id="summary_alias_container" class="bz_default_hidden">
+ [% IF Param("usebugaliases") %]
+ [% IF bug.alias != "" %]
+ (<span id="alias_nonedit_display">[% bug.alias FILTER html %]</span>)
+ [% END %]
+ [% END %]
+ <span id="short_desc_nonedit_display">[% bug.short_desc FILTER quoteUrls(bug) %]</span>
+ [% IF bug.check_can_change_field('short_desc', 0, 1) ||
+ bug.check_can_change_field('alias', 0, 1) %]
+ <small class="editme">(<a href="#" id="editme_action">edit</a>)</small>
+ [% END %]
+ </span>
+
+
+ <div id="summary_alias_input">
+ <table id="summary">
+ [% IF Param("usebugaliases") %]
+ <tr>
+ [% IF bug.check_can_change_field('alias', 0, 1) %]
+ <td>
+ <label
+ for="alias"
+ title="a name for the
+ [% terms.bug %] that can be used in place of its ID number,
+ [%%] e.g. when adding it to a list of dependencies"
+ >Alias</label>:</td><td>
+ [% ELSIF bug.alias %]
+ <td colspan="2">(
+ [% ELSE %]
+ <td colspan="2">
+ [% END %]
+ [% PROCESS input inputname => "alias"
+ size => "20"
+ maxlength => "20"
+ no_td => 1
+ %][% ")" IF NOT bug.check_can_change_field('alias', 0, 1)
+ && bug.alias %]
+ </td>
+ </tr>
+ [% END %]
+ [%# *** Summary *** %]
+ <tr>
+ <td>
+ <label accesskey="s" for="short_desc"><u>S</u>ummary</label>:
+ </td>
+ <td>
+ [% PROCESS input inputname => "short_desc" size => "80" colspan => 2
+ maxlength => 255 spellcheck => "true" no_td => 1 %]
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <script type="text/javascript">
+ hideAliasAndSummary('[% bug.short_desc FILTER js %]', '[% bug.alias FILTER js %]');
+ </script>
+[% END %]
+
+[%############################################################################%]
+[%# Block for the first table in the "Details" section #%]
+[%############################################################################%]
+
+[% BLOCK section_details1 %]
+
+ [%#############%]
+ [%# PRODUCT #%]
+ [%#############%]
+ <tr>
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.product,
+ override_legal_values = bug.choices.product
+ desc_url = 'describecomponents.cgi', value = bug.product
+ editable = bug.check_can_change_field('product', 0, 1) %]
+ </tr>
+
+ [%# Classification is here so that it can be used in value controllers
+ # and visibility controllers. It comes after product because
+ # it uses some javascript that depends on the existence of the
+ # product field.
+ #%]
+ <tr class="bz_default_hidden">
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug field = bug_fields.classification
+ override_legal_values = bug.choices.classification
+ value = bug.classification
+ editable = bug.check_can_change_field('product', 0, 1) %]
+ </tr>
+ [%###############%]
+ [%# Component #%]
+ [%###############%]
+ <tr>
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.component, value = bug.component
+ override_legal_values = bug.choices.component
+ desc_url = "describecomponents.cgi?product=$bug.product"
+ editable = bug.check_can_change_field('component', 0, 1)
+ %]
+ </tr>
+ <tr>
+ <td class="field_label">
+ <label for="version"><b>Version</b></label>:
+ </td>
+
+ [% PROCESS select selname => "version" %]
+ </tr>
+ [%############%]
+ [%# PLATFORM #%]
+ [%############%]
+ <tr>
+ <td class="field_label">
+ <label for="rep_platform" accesskey="h"><b>Platform</b></label>:
+ </td>
+ <td class="field_value">
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.rep_platform,
+ no_tds = 1, value = bug.rep_platform
+ editable = bug.check_can_change_field('rep_platform', 0, 1) %]
+ [%+ INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.op_sys,
+ no_tds = 1, value = bug.op_sys
+ editable = bug.check_can_change_field('op_sys', 0, 1) %]
+ <script type="text/javascript">
+ assignToDefaultOnChange(['product', 'component']);
+ </script>
+ </td>
+ </tr>
+
+
+
+[% END %]
+
+[%############################################################################%]
+[%# Block for the status section #%]
+[%############################################################################%]
+
+[% BLOCK section_status %]
+ <tr>
+ <td class="field_label">
+ <b><a href="page.cgi?id=fields.html#status">Status</a></b>:
+ </td>
+ <td id="bz_field_status">
+ <span id="static_bug_status">
+ [% display_value("bug_status", bug.bug_status) FILTER html %]
+ [% IF bug.resolution %]
+ [%+ display_value("resolution", bug.resolution) FILTER html %]
+ [% IF bug.dup_id %]
+ of [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %]
+ [% END %]
+ [% END %]
+ [% IF bug.user.canedit || bug.user.isreporter %]
+ (<a href="#add_comment"
+ onclick="window.setTimeout(function() { document.getElementById('bug_status').focus(); }, 10)">edit</a>)
+ [% END %]
+ </span>
+ </td>
+ </tr>
+[% END %]
+
+[%############################################################################%]
+[%# Block for the second table in the "Details" section #%]
+[%############################################################################%]
+
+[% BLOCK section_details2 %]
+
+ [%###############################################################%]
+ [%# Importance (priority and severity) #%]
+ [%###############################################################%]
+ <tr>
+ <td class="field_label">
+ <label for="priority" accesskey="i">
+ <b><a href="page.cgi?id=fields.html#importance"><u>P</u>riority</a></b></label>:
+ </td>
+ <td>
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.priority,
+ no_tds = 1, value = bug.priority
+ editable = bug.check_can_change_field('priority', 0, 1) %]
+ <b><a href="page.cgi?id=fields.html#importance"><u>S</u>everity</a></b></label>:
+ [%+ INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.bug_severity,
+ no_tds = 1, value = bug.bug_severity
+ editable = bug.check_can_change_field('bug_severity', 0, 1) %]
+ [% Hook.process('after_importance', 'bug/edit.html.tmpl') %]
+ </td>
+ </tr>
+
+ [% IF Param("usetargetmilestone") && bug.target_milestone %]
+ <tr>
+ <td class="field_label">
+ <label for="target_milestone">
+ <a href="page.cgi?id=fields.html#target_milestone">
+ Target&nbsp;Milestone</a></label>:
+ </td>
+ [% PROCESS select selname = "target_milestone" %]
+ </tr>
+ [% END %]
+
+[% END %]
+
+[%############################################################################%]
+[%# Block for the table in the "People" section #%]
+[%############################################################################%]
+
+[% BLOCK section_people %]
+
+ <tr>
+ <td class="field_label">
+ <b><a href="page.cgi?id=fields.html#assigned_to">Assigned To</a></b>:
+ </td>
+ <td>
+ [% IF bug.check_can_change_field("assigned_to", 0, 1) %]
+ <div id="bz_assignee_edit_container" class="bz_default_hidden">
+ <span>
+ [% INCLUDE global/user.html.tmpl who = bug.assigned_to %]
+ (<a href="#" id="bz_assignee_edit_action">edit</a>)
+ </span>
+ </div>
+ <div id="bz_assignee_input">
+ [% INCLUDE global/userselect.html.tmpl
+ id => "assigned_to"
+ name => "assigned_to"
+ value => bug.assigned_to.login
+ classes => ["bz_userfield"]
+ size => 30
+ %]
+ <br>
+ <input type="checkbox" id="set_default_assignee" name="set_default_assignee" value="1">
+ <label id="set_default_assignee_label" for="set_default_assignee">Reset Assignee to default</label>
+ </div>
+ <script type="text/javascript">
+ hideEditableField('bz_assignee_edit_container',
+ 'bz_assignee_input',
+ 'bz_assignee_edit_action',
+ 'assigned_to',
+ '[% bug.assigned_to.login FILTER js %]' );
+ initDefaultCheckbox('assignee');
+ </script>
+ [% ELSE %]
+ [% INCLUDE global/user.html.tmpl who = bug.assigned_to %]
+ [% END %]
+ </td>
+ </tr>
+
+ [% IF Param('useqacontact') %]
+ <tr>
+ <td class="field_label">
+ <label for="qa_contact" accesskey="q"><b><u>Q</u>A Contact</b></label>:
+ </td>
+ <td>
+ [% IF bug.check_can_change_field("qa_contact", 0, 1) %]
+ [% IF bug.qa_contact != "" %]
+ <div id="bz_qa_contact_edit_container" class="bz_default_hidden">
+ <span>
+ <span id="bz_qa_contact_edit_display">
+ [% INCLUDE global/user.html.tmpl who = bug.qa_contact %]</span>
+ (<a href="#" id="bz_qa_contact_edit_action">edit</a>)
+ </span>
+ </div>
+ [% END %]
+ <div id="bz_qa_contact_input">
+ [% INCLUDE global/userselect.html.tmpl
+ id => "qa_contact"
+ name => "qa_contact"
+ value => bug.qa_contact.login
+ size => 30
+ classes => ["bz_userfield"]
+ emptyok => 1
+ %]
+ <br>
+ <input type="checkbox" id="set_default_qa_contact" name="set_default_qa_contact" value="1">
+ <label for="set_default_qa_contact" id="set_default_qa_contact_label">Reset QA Contact to default</label>
+ </div>
+ <script type="text/javascript">
+ [% IF bug.qa_contact != "" %]
+ hideEditableField('bz_qa_contact_edit_container',
+ 'bz_qa_contact_input',
+ 'bz_qa_contact_edit_action',
+ 'qa_contact',
+ '[% bug.qa_contact.login FILTER js %]');
+ [% END %]
+ initDefaultCheckbox('qa_contact');
+ </script>
+ [% ELSE %]
+ [% INCLUDE global/user.html.tmpl who = bug.qa_contact %]
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for URL Keyword and Whiteboard #%]
+[%############################################################################%]
+[% BLOCK section_url_keyword_whiteboard %]
+[%# *** URL Whiteboard Keywords *** %]
+[% IF Param('useurl') %]
+ <tr>
+ <td class="field_label">
+ <label for="bug_file_loc" accesskey="u"><b>
+ [% IF is_safe_url(bug.bug_file_loc) %]
+ <a href="[% bug.bug_file_loc FILTER html %]"><u>U</u>RL</a>
+ [% ELSE %]
+ <u>U</u>RL
+ [% END %]
+ [%%]</b></label>:
+ </td>
+ <td>
+ [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %]
+ <span id="bz_url_edit_container" class="bz_default_hidden">
+ [% IF is_safe_url(bug.bug_file_loc) %]
+ <a href="[% bug.bug_file_loc FILTER html %]" target="_blank"
+ title="[% bug.bug_file_loc FILTER html %]">
+ [% bug.bug_file_loc FILTER truncate(40) FILTER html %]</a>
+ [% ELSE %]
+ [% bug.bug_file_loc FILTER html %]
+ [% END %]
+ (<a href="#" id="bz_url_edit_action">edit</a>)</span>
+ [% END %]
+ <span id="bz_url_input_area">
+ [% url_output = PROCESS input no_td=1 inputname => "bug_file_loc" size => "40" colspan => 2 %]
+ [% IF NOT bug.check_can_change_field("bug_file_loc", 0, 1)
+ AND is_safe_url(bug.bug_file_loc) %]
+ <a href="[% bug.bug_file_loc FILTER html %]">[% url_output FILTER none %]</a>
+ [% ELSE %]
+ [% url_output FILTER none %]
+ [% END %]
+ </span>
+ [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %]
+ <script type="text/javascript">
+ hideEditableField('bz_url_edit_container',
+ 'bz_url_input_area',
+ 'bz_url_edit_action',
+ 'bug_file_loc',
+ "[% bug.bug_file_loc FILTER js %]");
+ </script>
+ [% END %]
+ </td>
+ </tr>
+[% END %]
+
+ [% IF Param('usestatuswhiteboard') %]
+ <tr>
+ <td class="field_label">
+ <label for="status_whiteboard" accesskey="w"><b><u>W</u>hiteboard</b></label>:
+ </td>
+ [% PROCESS input inputname => "status_whiteboard" size => "40" colspan => 2 %]
+ </tr>
+ [% END %]
+
+ [% IF use_keywords %]
+ <tr>
+ <td class="field_label">
+ <label for="keywords" accesskey="k">
+ <b><a href="describekeywords.cgi"><u>K</u>eywords</a></b></label>:
+ </td>
+ <td class="field_value" colspan="2">
+ [% INCLUDE bug/field.html.tmpl
+ bug = bug, field = bug_fields.keywords, value = bug.keywords
+ editable = bug.check_can_change_field("keywords", 0, 1),
+ no_tds = 1
+ %]
+ </td>
+ </tr>
+ [% END %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for Depends On / Blocks #%]
+[%############################################################################%]
+[% BLOCK section_dependson_blocks %]
+ <tr>
+ [% PROCESS dependencies
+ dep = { title => "Depends&nbsp;on", fieldname => "dependson" } %]
+ </tr>
+
+ <tr>
+ [% PROCESS dependencies accesskey = "b"
+ dep = { title => "<u>B</u>locks", fieldname => "blocked" } %]
+
+ <tr>
+ <th>&nbsp;</th>
+
+ <td colspan="2" align="left" id="show_dependency_tree_or_graph">
+ Show dependency <a href="showdependencytree.cgi?id=[% bug.bug_id %]&amp;hide_resolved=1">tree</a>
+
+ [% IF Param('webdotbase') %]
+ /&nbsp;<a href="showdependencygraph.cgi?id=[% bug.bug_id %]">graph</a>
+ [% END %]
+ </td>
+ </tr>
+[% END %]
+
+
+[%############################################################################%]
+[%# Block for Restricting Visibility #%]
+[%############################################################################%]
+
+[% BLOCK section_restrict_visibility %]
+ [% RETURN UNLESS bug.groups.size %]
+
+ <div class="bz_group_visibility_section">
+ [% inallgroups = 1 %]
+ [% inagroup = 0 %]
+ [% emitted_description = 0 %]
+
+ [% FOREACH group = bug.groups %]
+ [% SET inallgroups = 0 IF NOT group.ingroup %]
+ [% SET inagroup = 1 IF group.ison %]
+
+ [% NEXT IF group.mandatory %]
+
+ [% IF NOT emitted_description %]
+ [% emitted_description = 1 %]
+ <div id="bz_restrict_group_visibility_help">
+ <b>Only users in all of the selected groups can view this
+ [%+ terms.bug %]:</b>
+ <p class="instructions">
+ Unchecking all boxes makes this a more public [% terms.bug %].
+ </p>
+ </div>
+ [% END %]
+
+ [% IF group.ingroup %]
+ <input type="hidden" name="defined_groups"
+ value="[% group.name FILTER html %]">
+ [% END %]
+
+ <input type="checkbox" value="[% group.name FILTER html %]"
+ name="groups" id="group_[% group.bit %]"
+ [% ' checked="checked"' IF group.ison %]
+ [% ' disabled="disabled"' IF NOT group.ingroup %]>
+ <label for="group_[% group.bit %]">
+ [%- group.description FILTER html_light %]</label>
+ <br>
+ [% END %]
+
+ [% IF emitted_description %]
+ [% IF NOT inallgroups %]
+ <p class="instructions">Only members of a group can change the
+ visibility of [% terms.abug %] for that group.</p>
+ [% END %]
+ [% END %]
+
+ [% IF inagroup %]
+ <div id="bz_enable_role_visibility_help">
+ <b>Users in the roles selected below can always view
+ this [% terms.bug %]:</b>
+ </div>
+ <div id="bz_enable_role_visibility">
+ <div>
+ [% user_can_edit_accessible =
+ bug.check_can_change_field("reporter_accessible", 0, 1)
+ %]
+ [% IF user_can_edit_accessible %]
+ <input type="hidden" name="defined_reporter_accessible" value="1">
+ [% END %]
+ <input type="checkbox" value="1"
+ name="reporter_accessible" id="reporter_accessible"
+ [% " checked" IF bug.reporter_accessible %]
+ [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]>
+ <label for="reporter_accessible">Reporter</label>
+ </div>
+ <div>
+ [% user_can_edit_accessible =
+ bug.check_can_change_field("cclist_accessible", 0, 1)
+ %]
+ [% IF user_can_edit_accessible %]
+ <input type="hidden" name="defined_cclist_accessible" value="1">
+ [% END %]
+ <input type="checkbox" value="1"
+ name="cclist_accessible" id="cclist_accessible"
+ [% " checked" IF bug.cclist_accessible %]
+ [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]>
+ <label for="cclist_accessible">CC List</label>
+ </div>
+ <p class="instructions">
+ The assignee
+ [% IF (Param('useqacontact')) %]
+ and QA contact
+ [% END %]
+ can always see [% terms.abug %], and this section does not
+ take effect unless the [% terms.bug %] is restricted to at
+ least one group.
+ </p>
+ </div>
+ [% END %]
+ </div> [%# bz_group_visibility_section %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for Dates #%]
+[%############################################################################%]
+
+[% BLOCK section_dates %]
+ <tr>
+ <td class="field_label">
+ <b>Reported</b>:
+ </td>
+ <td>
+ [% bug.creation_ts FILTER time %] by [% INCLUDE global/user.html.tmpl who = bug.reporter %]
+ </td>
+ </tr>
+
+ <tr>
+ <td class="field_label">
+ <b> Modified</b>:
+ </td>
+ <td>
+ [% bug.delta_ts FILTER time FILTER replace(':\d\d$', '') FILTER replace(':\d\d ', ' ')%]
+ (<a href="show_activity.cgi?id=[% bug.bug_id %]">[%# terms.Bug %]History</a>)
+ </td>
+
+ </tr>
+[% END %]
+
+[%############################################################################%]
+[%# Block for CC LIST #%]
+[%############################################################################%]
+[% BLOCK section_cclist %]
+ <tr>
+ <td class="field_label">
+ <label for="newcc" accesskey="a"><b>CC List</b>:</label>
+ </td>
+ <td>
+ [% IF user.id %]
+ [% 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) %]
+ <input type="checkbox" id="addselfcc" name="addselfcc"
+ [% " checked=\"checked\""
+ IF user.settings.state_addselfcc.value == 'always'
+ || (!has_role
+ && user.settings.state_addselfcc.value == 'cc_unless_role') %]>
+ <label for="addselfcc">Add me to CC list</label>
+ <br>
+ [% END %]
+ [% END %]
+ [% bug.cc.size || 0 FILTER html %]
+ [% IF bug.cc.size == 1 %]
+ user
+ [% ELSE %]
+ users
+ [% END %]
+ [% IF user.id %]
+ [% IF bug.cc.contains( user.email ) %]
+ including you
+ [% END %]
+ [% END %]
+ [% IF user.id || bug.cc.size %]
+ <span id="cc_edit_area_showhide_container" class="bz_default_hidden">
+ (<a href="#" id="cc_edit_area_showhide">[% IF user.id %]edit[% ELSE %]show[% END %]</a>)
+ </span>
+ [% END %]
+ <div id="cc_edit_area">
+ <br>
+ [% IF user.id %]
+ <div>
+ <div><label for="cc"><b>Add</b></label></div>
+ [% INCLUDE global/userselect.html.tmpl
+ id => "newcc"
+ name => "newcc"
+ value => ""
+ size => 30
+ classes => ["bz_userfield"]
+ multiple => 5
+ %]
+ </div>
+ [% END %]
+ [% IF bug.cc %]
+ <select id="cc" name="cc" multiple="multiple" size="5">
+ [% FOREACH c = bug.cc %]
+ <option value="[% c FILTER email FILTER html %]">
+ [% c FILTER email FILTER html %]</option>
+ [% END %]
+ </select>
+ [% IF user.id %]
+ <br>
+ <input type="checkbox" id="removecc" name="removecc">
+ [%%]<label for="removecc">Remove selected CCs</label>
+ <br>
+ [% END %]
+ [% END %]
+ </div>
+ [% IF user.id || bug.cc.size %]
+ <script type="text/javascript">
+ hideEditableField( 'cc_edit_area_showhide_container',
+ 'cc_edit_area',
+ 'cc_edit_area_showhide',
+ '',
+ '');
+ </script>
+ [% END %]
+ </td>
+ </tr>
+[% END %]
+
+[%############################################################################%]
+[%# Block for See Also #%]
+[%############################################################################%]
+[% BLOCK section_see_also %]
+ [% IF Param('use_see_also') || bug.see_also.size %]
+ <tr>
+ [% INCLUDE bug/field.html.tmpl
+ field = bug_fields.see_also
+ value = bug.see_also
+ editable = bug.check_can_change_field('see_also', 0, 1)
+ %]
+ </tr>
+ [% END %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for FLAGS #%]
+[%############################################################################%]
+
+[% BLOCK section_flags %]
+ [%# *** 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 %]
+ <tr>
+ <td class="field_label flags_label">
+ <label><b>Flags:</b></label>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ [% 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 %]
+ </td>
+ </tr>
+ [% END %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for Custom Fields #%]
+[%############################################################################%]
+
+[% BLOCK section_customfields %]
+[%# *** Custom Fields *** %]
+ [% USE Bugzilla %]
+ [% FOREACH field = Bugzilla.active_custom_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>
+ [% IF extra_field_item %]
+ <tr>
+ <th class="field_label">[% extra_field_item.header FILTER none %]</th>
+ <td>[% extra_field_item.data FILTER none %]</td>
+ </tr>
+ [% END %]
+ [% END %]
+[% END %]
+
+[%############################################################################%]
+[%# Block for Section Spacer #%]
+[%############################################################################%]
+
+[% BLOCK section_spacer %]
+ <tr>
+ <td colspan="2" class="bz_section_spacer"></td>
+ </tr>
+[% END %]
+
+
+
+
+[%############################################################################%]
+[%# Block for dependencies #%]
+[%############################################################################%]
+
+[% BLOCK dependencies %]
+
+ <th class="field_label">
+ <label for="[% dep.fieldname %]"[% " accesskey=\"$accesskey\"" IF accesskey %]>
+ [% dep.title %]</label>:
+ </th>
+ <td>
+ <span id="[% dep.fieldname %]_input_area">
+ [% IF bug.check_can_change_field(dep.fieldname, 0, 1) %]
+ <input name="[% dep.fieldname %]" id="[% dep.fieldname %]"
+ class="text_input"
+ value="[% bug.${dep.fieldname}.join(', ') %]">
+ [% END %]
+ </span>
+
+ [% FOREACH depbug = bug.${dep.fieldname} %]
+ [% depbug FILTER bug_link(depbug, use_alias => 1) FILTER none %][% " " %]
+ [% END %]
+ [% IF bug.check_can_change_field(dep.fieldname, 0, 1) %]
+ <span id="[% dep.fieldname %]_edit_container" class="edit_me bz_default_hidden" >
+ (<a href="#" id="[% dep.fieldname %]_edit_action">edit</a>)
+ </span>
+ <script type="text/javascript">
+ hideEditableField('[% dep.fieldname %]_edit_container',
+ '[% dep.fieldname %]_input_area',
+ '[% dep.fieldname %]_edit_action',
+ '[% dep.fieldname %]',
+ "[% bug.${dep.fieldname}.join(', ') %]");
+ </script>
+ [% END %]
+ </td>
+
+ [% accesskey = undef %]
+
+[% END %]
+
+[%############################################################################%]
+[%# Block for Time Tracking Group #%]
+[%############################################################################%]
+
+[% BLOCK section_timetracking %]
+ <table class="bz_time_tracking_table">
+ <tr>
+ <th>
+ <label for="estimated_time">Orig. Est.</label>
+ </th>
+ <th>
+ Current Est.
+ </th>
+ <th>
+ <label for="work_time">Hours Worked</label>
+ </th>
+ <th>
+ <label for="remaining_time">Hours Left</label>
+ </th>
+ <th>
+ %Complete
+ </th>
+ <th>
+ Gain
+ </th>
+ <th>
+ <label for="deadline">Deadline</label>
+ </th>
+ </tr>
+ <tr>
+ <td>
+ <input name="estimated_time" id="estimated_time"
+ value="[% PROCESS formattimeunit
+ time_unit=bug.estimated_time %]"
+ size="6" maxlength="6">
+ </td>
+ <td>
+ [% PROCESS formattimeunit
+ time_unit=(bug.actual_time + bug.remaining_time) %]
+ </td>
+ <td>
+ [% PROCESS formattimeunit time_unit=bug.actual_time %] +
+ <input name="work_time" id="work_time"
+ value="0" size="3" maxlength="6"
+ onchange="adjustRemainingTime();">
+ </td>
+ <td>
+ <input name="remaining_time" id="remaining_time"
+ value="[% PROCESS formattimeunit
+ time_unit=bug.remaining_time %]"
+ size="6" maxlength="6" onchange="updateRemainingTime();">
+ </td>
+ <td>
+ [% PROCESS calculatepercentage act=bug.actual_time
+ rem=bug.remaining_time %]
+ </td>
+ <td>
+ [% PROCESS formattimeunit time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %]
+ </td>
+ <td>
+ [% INCLUDE bug/field.html.tmpl
+ field = bug_fields.deadline, value = bug.deadline, no_tds = 1
+ editable = bug.check_can_change_field('deadline', 0, 1) %]
+ </td>
+ </tr>
+ <tr>
+ <td colspan="7" class="bz_summarize_time">
+ <a href="summarize_time.cgi?id=[% bug.bug_id %]&amp;do_depends=1">
+ Summarize time (including time for [% terms.bugs %]
+ blocking this [% terms.bug %])</a>
+ </td>
+ </tr>
+ </table>
+[% END %]
+
+[%############################################################################%]
+[%# Block for the Additional Comments box #%]
+[%############################################################################%]
+
+[% BLOCK comment_box %]
+ <div id="add_comment" class="bz_section_additional_comments">
+ [% IF user.id %]
+ <label for="comment" accesskey="c"><b>Additional
+ <u>C</u>omments</b></label>:
+
+ [% IF user.is_insider %]
+ <input type="checkbox" name="comment_is_private" value="1"
+ id="newcommentprivacy"
+ onClick="updateCommentTagControl(this, 'comment')">
+ <label for="newcommentprivacy">
+ Make comment private (visible only to members of the
+ <strong>[% Param('insidergroup') FILTER html %]</strong> group)
+ </label>
+ [% END %]
+
+ <!-- This table keeps the submit button aligned with the box. -->
+ <table><tr><td>
+ [% INCLUDE global/textarea.html.tmpl
+ name = 'comment'
+ id = 'comment'
+ minrows = 10
+ maxrows = 25
+ cols = constants.COMMENT_COLS
+ %]
+ [% Hook.process("after_comment_textarea", 'bug/edit.html.tmpl') %]
+ <br>
+ [% PROCESS commit_button id=""%]
+
+ <table id="bug_status_bottom"
+ class="status" cellspacing="0" cellpadding="0">
+ <tr>
+ <td class="field_label">
+ <b><a href="page.cgi?id=fields.html#status">Status</a></b>:
+ </td>
+ <td>
+ [% PROCESS bug/knob.html.tmpl %]
+ </td>
+ </tr>
+ </table>
+ </td></tr></table>
+
+ [%# For logged-out users %]
+ [% ELSE %]
+ <table>
+ <tr>
+ <td>
+ <fieldset>
+ <legend>Note</legend>
+ You need to
+ <a href="show_bug.cgi?id=
+ [%- bug.bug_id %]&amp;GoAheadAndLogIn=1">log in</a>
+ before you can comment on or make changes to this [% terms.bug %].
+ </fieldset>
+ </td>
+ </tr>
+ </table>
+ [% END %]
+ </div>
+[% END %]
+
+[%############################################################################%]
+[%# Block for SELECT fields #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+ <td>
+ [% IF bug.check_can_change_field(selname, 0, 1)
+ AND bug.choices.${selname}.size > 1 %]
+ <select id="[% selname %]" name="[% selname %]">
+ [% FOREACH x = bug.choices.${selname} %]
+ <option value="[% x.name FILTER html %]"
+ [% " selected" IF x.name == bug.${selname} %]>
+ [%- x.name FILTER html %]
+ </option>
+ [% END %]
+ </select>
+ [% ELSE %]
+ [% bug.${selname} FILTER html %]
+ [% END %]
+ </td>
+[% END %]
+
+[%############################################################################%]
+[%# Block for INPUT fields #%]
+[%############################################################################%]
+
+[% BLOCK input %]
+ [% IF no_td != 1 %]
+ <td[% " colspan=\"$colspan\"" IF colspan %]>
+ [% END %]
+ [% val = value ? value : bug.$inputname %]
+ [% IF bug.check_can_change_field(inputname, 0, 1) %]
+ <input id="[% inputname %]" name="[% inputname %]" class="text_input"
+ value="[% val FILTER html %]"[% " size=\"$size\"" IF size %]
+ [% " maxlength=\"$maxlength\"" IF maxlength %]
+ [% " spellcheck=\"$spellcheck\"" IF spellcheck %]>
+ [% ELSE %]
+ [% IF size && val.length > size %]
+ <span title="[% val FILTER html %]">
+ [% val FILTER truncate(size) FILTER html %]
+ </span>
+ [% ELSE %]
+ [% val FILTER html %]
+ [% END %]
+ [% END %]
+ [% IF no_td != 1 %]
+ </td>
+ [% END %]
+ [% no_td = 0 %]
+ [% maxlength = 0 %]
+ [% colspan = 0 %]
+ [% size = 0 %]
+ [% value = undef %]
+ [% spellcheck = undef %]
+[% END %]
+[% BLOCK commit_button %]
+ [% IF user.id %]
+ <div class="knob-buttons">
+ <input type="submit" value="Save Changes"
+ id="commit[% id FILTER css_class_quote %]">
+ </div>
+ [% END %]
+[% END %]
diff --git a/template/en/default/global/common-links.html.tmpl b/template/en/default/global/common-links.html.tmpl
new file mode 100644
index 0000000..6f99a64
--- /dev/null
+++ b/template/en/default/global/common-links.html.tmpl
@@ -0,0 +1,117 @@
+[%# 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>
+ # Svetlana Harisova <light@rathedg.com>
+ #%]
+
+[% DEFAULT qs_suffix = "" %]
+[% USE Bugzilla %]
+
+<ul class="links">
+ <li><a href="./">Home</a></li>
+ <li><span class="separator">| </span><a href="enter_bug.cgi">New</a></li>
+ <li><span class="separator">| </span><a href="describecomponents.cgi">Browse</a></li>
+ <li><span class="separator">| </span><a href="query.cgi">Search</a></li>
+
+ <li class="form">
+ <span class="separator">| </span>
+ <form action="buglist.cgi" method="get"
+ onsubmit="if (this.quicksearch.value == '')
+ { alert('Please enter one or more search terms first.');
+ return false; } return true;">
+ <input class="txt" type="text" id="quicksearch[% qs_suffix FILTER html %]" name="quicksearch"
+ value="[% quicksearch FILTER html %]">
+ <input class="btn" type="submit" value="Search"
+ id="find[% qs_suffix FILTER html %]">
+ [%-# Work around FF bug: keep this on one line %]</form>
+ <a href="page.cgi?id=quicksearch.html" title="Quicksearch Help">[?]</a></li>
+
+ <li><span class="separator">| </span><a href="report.cgi">Reports</a></li>
+
+ <li>
+ [% IF Param('shutdownhtml') || Bugzilla.has_flags %]
+ <span class="separator">| </span>
+ [% IF user.id %]
+ <a href="request.cgi?requester=[% user.login FILTER url_quote %]&amp;requestee=
+ [% user.login FILTER url_quote %]&amp;do_union=1&amp;group=type&amp;action=queue">My Requests</a>
+ [% ELSE %]
+ <a href="request.cgi">Requests</a>
+ [% END %]
+ [% END %]
+ [%-# Work around FF bug: keep this on one line %]</li>
+
+ [% IF user.login %]
+ <li><span class="separator">| </span><a href="userprefs.cgi">Preferences</a></li>
+ [% IF user.in_group('tweakparams') || user.in_group('editusers') || user.can_bless
+ || (Param('useclassification') && user.in_group('editclassifications'))
+ || user.in_group('editcomponents') || user.in_group('admin') || user.in_group('creategroups')
+ || user.in_group('editkeywords') || user.in_group('bz_canusewhines')
+ || user.get_products_by_permission("editcomponents").size %]
+ <li><span class="separator">| </span><a href="admin.cgi">Administration</a></li>
+ [% END %]
+
+ [% PROCESS link_to_documentation %]
+
+ <li>
+ <span class="separator">| </span>
+ [% IF user.authorizer.can_logout %]
+ <a href="index.cgi?logout=1">Log&nbsp;out</a>
+ [% ELSE %]
+ Logged&nbsp;in&nbsp;as
+ [% END %]
+ [% IF sudoer %]
+ [%+ sudoer.login FILTER html %] (<b>impersonating
+ [%+ user.login FILTER html %]</b>
+ <a href="relogin.cgi?action=end-sudo">end session</a>)
+ [% ELSE %]
+ [%+ user.login FILTER html %]
+ [% END %]
+ [%-# Work around FF bug: keep this on one line %]</li>
+ [% ELSE %]
+
+ [% PROCESS link_to_documentation %]
+
+ [% IF Param('createemailregexp')
+ && user.authorizer.user_can_create_account %]
+ <li id="new_account_container[% qs_suffix FILTER html %]">
+ <span class="separator">| </span>
+ <a href="https://identity.mageia.org/register">New&nbsp;Account</a>
+ </li>
+ [% END %]
+
+ [%# Only display one login form when we're on a LOGIN_REQUIRED page. That
+ # way, we're guaranteed that the user will use the form that has
+ # hidden_fields in it (the center form) instead of this one. Also, it's
+ # less confusing to have one form (as opposed to three) when you're
+ # required to log in.
+ #%]
+ [% IF user.authorizer.can_login && !Bugzilla.page_requires_login %]
+ [% PROCESS "account/auth/login-small.html.tmpl" %]
+ [% END %]
+ [% END %]
+</ul>
+
+[% Hook.process("link-row") %]
+[% BLOCK link_to_documentation %]
+ [% IF doc_section && Param('docs_urlbase') %]
+ <li>
+ <span class="separator">| </span>
+ <a href="[% docs_urlbase _ doc_section FILTER html %]" target="_blank">Help</a>
+ </li>
+ [% END %]
+[% END %]
diff --git a/template/en/default/global/variables.none.tmpl b/template/en/default/global/variables.none.tmpl
new file mode 100644
index 0000000..dd32a98
--- /dev/null
+++ b/template/en/default/global/variables.none.tmpl
@@ -0,0 +1,33 @@
+[%# 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.
+ #%]
+
+[%# This is a list of terms that may be changed to "brand" the Bugzilla
+ # instance (for example, referring to "bugs" as "issues".) When used, these
+ # strings are used in several different types of content, and are not
+ # protected with Template-Toolkit FILTERs. Consequently, no special
+ # characters are allowed.
+ #
+ # Remember to PROCESS rather than INCLUDE this template.
+ #%]
+
+[% terms = {
+ "bug" => "bug",
+ "Bug" => "Bug",
+ "abug" => "a bug",
+ "Abug" => "A bug",
+ "aBug" => "a Bug",
+ "ABug" => "A Bug",
+ "bugs" => "bugs",
+ "Bugs" => "Bugs",
+ "zeroSearchResults" => "Zarro Boogs found",
+ "Bugzilla" => "Mageia Bugzilla"
+ }
+%]
+
+[% USE Hook %]
+[% Hook.process("end") %]
diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl
new file mode 100644
index 0000000..c7bcba3
--- /dev/null
+++ b/template/en/default/index.html.tmpl
@@ -0,0 +1,179 @@
+[%# -*- mode: html -*- %]
+[%# 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): Terry Weissman <terry@mozilla.org>
+ # Jacob Steenhagen <jake@bugzilla.org>
+ # Vitaly Harisov <vitaly@rathedg.com>
+ # Guy Pyrzak <guy.pyrzak@gmail.com>
+ #%]
+
+[%# INTERFACE:
+ # release: a hash containing data about new releases, if any.
+ #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+
+[% PROCESS global/header.html.tmpl
+ title = "Mageia Main Page"
+ header = "Main Page"
+ header_addl_info = "version $constants.BUGZILLA_VERSION"
+ style_urls = [ 'skins/standard/index.css' ]
+%]
+
+
+<script type="text/javascript">
+<!--
+function onLoadActions() {
+ quicksearchHelpText('quicksearch_main', 'show');
+ if( window.external.AddSearchProvider ){
+ YAHOO.util.Dom.removeClass('quicksearch_plugin', 'bz_default_hidden');
+ }
+ document.getElementById('quicksearch_top').focus();
+}
+function addSidebar() {
+ var sidebarname=window.location.host;
+ if (!/bug/i.test(sidebarname))
+ sidebarname="[% terms.Bugzilla %] "+sidebarname;
+ window.sidebar.addPanel (sidebarname, "[% urlbase FILTER html %]sidebar.cgi", "");
+}
+var quicksearch_message = "Enter [% terms.abug %] # or some search terms";
+
+function checkQuicksearch( form ) {
+ if (form.quicksearch.value == '' || form.quicksearch.value == quicksearch_message ) {
+ alert('Please enter one or more search terms first.');
+ return false;
+ }
+ return true;
+}
+
+function quicksearchHelpText(el_id, action){
+ var el = document.getElementById(el_id);
+ if ( action == "show") {
+ if( el.value == "" ) {
+ el.value = quicksearch_message
+ YAHOO.util.Dom.addClass(el, "quicksearch_help_text");
+ }
+ } else {
+ if( el.value == quicksearch_message ) {
+ el.value = "";
+ YAHOO.util.Dom.removeClass(el, "quicksearch_help_text");
+ }
+ }
+}
+YAHOO.util.Event.onDOMReady(onLoadActions);
+//-->
+</script>
+
+[% IF release %]
+ <div id="new_release">
+ [% IF release.data %]
+ [% IF release.deprecated %]
+ <p>[% terms.Bugzilla %] [%+ release.deprecated FILTER html %] is no longer
+ supported. You are highly encouraged to upgrade in order to keep your
+ system secure.</p>
+ [% END %]
+
+ <p>A new [% terms.Bugzilla %] version ([% release.data.latest_ver FILTER html %])
+ is available at
+ <a href="[% release.data.url FILTER html %]">[% release.data.url FILTER html %]</a>.<br>
+ Release date: [% release.data.date FILTER html %]</p>
+
+ <p class="notice">This message is only shown to logged in users with admin privs.
+ You can configure this notification from the
+ <a href="editparams.cgi?section=general#upgrade_notification_desc">Parameters</a> page.</p>
+ [% ELSIF release.error == "cannot_download" %]
+ <p>The local XML file '[% release.xml_file FILTER html %]' cannot be created.
+ Please make sure the web server can write in this directory and that you can access
+ the web. If you are behind a proxy, set the
+ <a href="editparams.cgi?section=advanced#proxy_url_desc">proxy_url</a> parameter correctly.</p>
+ [% ELSIF release.error == "no_update" %]
+ <p>The local XML file '[% release.xml_file FILTER html %]' cannot be updated.
+ Please make sure the web server can edit this file.</p>
+ [% ELSIF release.error == "no_access" %]
+ <p>The local XML file '[% release.xml_file FILTER html %]' cannot be read.
+ Please make sure this file has the correct rights set on it.</p>
+ [% ELSIF release.error == "corrupted" %]
+ <p>The local XML file '[% release.xml_file FILTER html %]' has an invalid XML format.
+ Please delete it and try accessing this page again.</p>
+ [% ELSIF release.error == "unknown_parameter" %]
+ <p>'[% Param("upgrade_notification") FILTER html %]' is not a valid notification
+ parameter. Please check this parameter in the
+ <a href="editparams.cgi?section=general#upgrade_notification_desc">Parameters</a> page.</p>
+ [% END %]
+ </div>
+[% END %]
+
+<div id="page-index">
+ <table>
+ <tr>
+ <td>
+ <h1 id="welcome"> Welcome to [% terms.Bugzilla %]</h1>
+ <div class="intro">[% Hook.process('intro') %]</div>
+ <a id="enter_bug" class="bz_common_actions"
+ href="enter_bug.cgi"><span>File [% terms.aBug %]</span></a>
+
+ <a id="query" class="bz_common_actions"
+ href="query.cgi"><span>Search</span></a>
+
+ <a id="account" class="bz_common_actions"
+ [% IF user.id %]
+ href="userprefs.cgi"><span>User Preferences</span></a>
+ [% ELSE %]
+ href="http://identity.mageia.org/register"><span>Open a New Account</span></a>
+ [% END %]
+
+ <form id="quicksearchForm" name="quicksearchForm" action="buglist.cgi"
+ onsubmit="return checkQuicksearch(this);">
+ <div>
+ <input id="quicksearch_main" type="text" name="quicksearch"
+ onfocus="quicksearchHelpText(this.id, 'hide');"
+ onblur="quicksearchHelpText(this.id, 'show');"
+ >
+ <input id="find" type="submit" value="Quick Search">
+ <ul class="additional_links" id="quicksearch_links">
+ <li>
+ <a href="page.cgi?id=quicksearch.html">Quick Search help</a>
+ </li>
+ <li class="bz_default_hidden" id="quicksearch_plugin">
+ |
+ <a href="javascript:window.external.AddSearchProvider('[% urlbase FILTER html %]search_plugin.cgi')">
+ Install the Quick Search plugin
+ </a>
+ </li>
+ </ul>
+ <ul class="additional_links">
+ <li>
+ <a href="[% docs_urlbase FILTER html %]using.html">
+ [%- terms.Bugzilla %] User's Guide</a>
+ </li>
+ <li>
+ |
+ <a href="page.cgi?id=release-notes.html">Release Notes</a>
+ </li>
+ [% Hook.process('additional_links') %]
+ </ul>
+ </div>
+ </form>
+ <div class="outro">[% Hook.process('outro') %]</div>
+ </td>
+ </tr>
+ </table>
+</div>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/user-error.html.tmpl b/template/en/default/user-error.html.tmpl
new file mode 100644
index 0000000..2001f77
--- /dev/null
+++ b/template/en/default/user-error.html.tmpl
@@ -0,0 +1,1804 @@
+[%# 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>
+ # Frédéric Buclin <LpSolit@gmail.com>
+ # Max Kanat-Alexander <mkanat@bugzilla.org>
+ #%]
+
+[%# INTERFACE:
+ # header_done: boolean. True if the Bugzilla header has already been printed.
+ # error: string. The tag of the error, or the error message to be displayed
+ # (deprecated). May contain HTML if it's an error message.
+ #%]
+
+[%# This is a list of all the possible user errors. Please keep them in
+ # alphabetical order by error tag, and leave a blank line between errors.
+ #
+ # Note that you must explicitly filter every single template variable
+ # in this file; if you do not wish to change it, use the "none" filter.
+ #
+ # Extension- or custom-specific error handling can be easily added
+ # via hooks: just place additional code into
+ # template/en/hook/global/user-error-errors.html.tmpl
+ # Note: be aware of uniqueness of error string parameter value, since
+ # nobody can guarantee the hook files processing order in the future.
+ #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[% PROCESS "global/field-descs.none.tmpl" %]
+
+[% DEFAULT title = "Error" %]
+
+[% error_message = BLOCK %]
+ [% IF error == "account_creation_disabled" %]
+ [% title = "Account Creation Disabled" %]
+ User account creation has been disabled.
+ <hr>
+ New accounts must be created by an administrator. The
+ maintainer is [% Param("maintainer") %].
+
+ [% ELSIF error == "account_creation_restricted" %]
+ [% title = "Account Creation Restricted" %]
+ User account creation has been restricted.
+ <hr>
+ Contact your administrator or the maintainer
+ ([% Param("maintainer") %]) for information about
+ creating an account.
+
+ [% ELSIF error == "account_disabled" %]
+ [% title = "Account Disabled" %]
+ [% disabled_reason FILTER none %]
+ <hr>
+ If you believe your account should be restored, please
+ send email to [% Param("maintainer") %] explaining why.
+
+ [% ELSIF error == "account_exists" %]
+ [% title = "Account Already Exists" %]
+ There is already an account with
+ [% IF email %]
+ the login name [% email FILTER html %].
+ [% ELSE %]
+ that login name.
+ [% END %]
+
+ [% ELSIF error == "account_locked" %]
+ [% title = "Account Locked" %]
+ Your IP ([% ip_addr FILTER html %]) has been locked out of this
+ account until [% unlock_at FILTER time %], as you have
+ exceeded the maximum number of login attempts.
+
+ [% ELSIF error == "alias_has_comma_or_space" %]
+ [% title = "Invalid Characters In Alias" %]
+ The alias you entered, <em>[% alias FILTER html %]</em>,
+ contains one or more commas or spaces. Aliases cannot contain
+ commas or spaces because those characters are used to separate
+ aliases from each other in lists. Please choose an alias
+ that does not contain commas and spaces.
+
+ [% ELSIF error == "alias_in_use" %]
+ [% title = "Alias In Use" %]
+ [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %]
+ has already taken the alias <em>[% alias FILTER html %]</em>.
+ Please choose another one.
+
+ [% ELSIF error == "alias_is_numeric" %]
+ [% title = "Alias Is Numeric" %]
+ You tried to give this [% terms.bug %] the alias <em>[% alias FILTER html %]</em>,
+ but aliases cannot be merely numbers, since they could
+ then be confused with [% terms.bug %] IDs. Please choose an
+ alias containing at least one letter.
+
+ [% ELSIF error == "alias_too_long" %]
+ [% title = "Alias Too Long" %]
+ [% terms.Bug %] aliases cannot be longer than 20 characters.
+ Please choose a shorter alias.
+
+ [% ELSIF error == "attachment_bug_id_mismatch" %]
+ [% title = "Invalid Attachments" %]
+ You tried to perform an action on attachments from different [% terms.bugs %].
+ This operation requires all attachments to be from the same [% terms.bug %].
+
+ [% ELSIF error == "auth_cant_create_account" %]
+ [% title = "Can't create accounts" %]
+ This site is using an authentication scheme which does not permit
+ account creation. Please contact an administrator to get a new account
+ created.
+
+ [% ELSIF error == "auth_failure" %]
+ [% title = "Authorization Required" %]
+ [% admindocslinks = {'groups.html' => 'Group Security'} %]
+ Sorry,
+ [% IF group %]
+ you aren't a member of the '[% group FILTER html %]' group,
+ [% END %]
+
+ [% IF reason %]
+ [% IF group %] and [% END %]
+ [% IF reason == "cant_bless" %]
+ you don't have permissions to add or remove people from a group,
+ [% ELSIF reason == "not_visible" %]
+ there are visibility restrictions on certain user groups,
+ [% END %]
+ [% END %]
+
+ [% IF group || reason %] and so [% END %] you are not authorized to
+ [% IF action == "access" %]
+ access
+ [% ELSIF action == "add" %]
+ add new
+ [% ELSIF action == "begin" %]
+ begin
+ [% ELSIF action == "modify" %]
+ modify
+ [% ELSIF action == "delete" %]
+ delete
+ [% ELSIF action == "edit" %]
+ add, modify or delete
+ [% ELSIF action == "run" %]
+ run
+ [% ELSIF action == "schedule" %]
+ schedule
+ [% ELSIF action == "use" %]
+ use
+ [% ELSIF action == "approve" %]
+ approve
+ [% ELSE %]
+ [%+ Hook.process('auth_failure_action') %]
+ [% END %]
+
+ [% IF object == "administrative_pages" %]
+ administrative pages
+ [% ELSIF object == "attachment" %]
+ [% IF attach_id %]
+ attachment #[% attach_id FILTER html %]
+ [% ELSE %]
+ this attachment
+ [% END %]
+ [% ELSIF object == "bugs" %]
+ [%+ terms.bugs %]
+ [% ELSIF object == "charts" %]
+ the "New Charts" feature
+ [% ELSIF object == "classifications" %]
+ classifications
+ [% ELSIF object == "components" %]
+ components
+ [% ELSIF object == "custom_fields" %]
+ custom fields
+ [% ELSIF object == "field_values" %]
+ field values
+ [% ELSIF object == "flagtypes" %]
+ flag types
+ [% ELSIF object == "group_access" %]
+ group access
+ [% ELSIF object == "groups" %]
+ groups
+ [% ELSIF object == "keywords" %]
+ keywords
+ [% ELSIF object == "milestones" %]
+ milestones
+ [% ELSIF object == "multiple_bugs" %]
+ multiple [% terms.bugs %] at once
+ [% ELSIF object == "parameters" %]
+ parameters
+ [% ELSIF object == "products" %]
+ products
+ [% ELSIF object == "quips" %]
+ quips
+ [% ELSIF object == "reports" %]
+ whine reports
+ [% ELSIF object == "sanity_check" %]
+ a sanity check
+ [% ELSIF object == "settings" %]
+ settings
+ [% ELSIF object == "sudo_session" %]
+ a sudo session
+ [% ELSIF object == "timetracking_summaries" %]
+ time-tracking summary reports
+ [% ELSIF object == "user" %]
+ the user [% IF userid %] with ID '[% userid FILTER html %]'
+ [% ELSE %]you specified [% END %]
+ [% ELSIF object == "users" %]
+ users
+ [% ELSIF object == "versions" %]
+ versions
+ [% ELSIF object == "workflow" %]
+ the workflow
+ [% ELSE %]
+ [%+ Hook.process('auth_failure_object') %]
+ [% END %].
+
+ [% Hook.process("auth_failure") %]
+
+ [% ELSIF error == "attachment_deletion_disabled" %]
+ [% title = "Attachment Deletion Disabled" %]
+ Attachment deletion is disabled on this installation.
+
+ [% ELSIF error == "attachment_illegal_url" %]
+ [% title = "Illegal Attachment URL" %]
+ <em>[% url FILTER html %]</em> is not a legal URL for attachments.
+ It must start either with http://, https:// or ftp://.
+
+ [% ELSIF error == "attachment_removed" %]
+ [% title = "Attachment Removed" %]
+ The attachment you are attempting to access has been removed.
+
+ [% ELSIF error == "bug_access_denied" %]
+ [% title = "Access Denied" %]
+ [% admindocslinks = {'groups.html' => 'Group Security'} %]
+ You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
+
+ [% ELSIF error == "bug_access_query" %]
+ [% title = "Access Denied" %]
+ [% docslinks = {'myaccount.html' => 'Creating an account'} %]
+ You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
+ To see this [% terms.bug %], you must
+ first <a href="show_bug.cgi?id=
+ [% bug_id FILTER url_quote %]&amp;GoAheadAndLogIn=1">log
+ in to an account</a> with the appropriate permissions.
+
+ [% ELSIF error == "bug_url_invalid" %]
+ [% title = "Invalid $terms.Bug URL" %]
+ <code>[% url FILTER html %]</code> is not a valid URL to [% terms.abug %].
+ [% IF reason == 'http' %]
+ URLs must start with "http" or "https".
+ [% ELSIF reason == 'path_only' %]
+ You must specify a full URL.
+ [% ELSIF reason == 'show_bug' %]
+ [%+ field_descs.see_also FILTER html %] URLs should point to one of:
+ <ul>
+ <li><code>show_bug.cgi</code> in a [% terms.Bugzilla %]
+ installation.</li>
+ <li>A b[% %]ug on launchpad.net</li>
+ <li>An issue on code.google.com.</li>
+ <li>A b[% %]ug on b[% %]ugs.debian.org.</li>
+ </ul>
+ [% ELSIF reason == 'id' %]
+ There is no valid [% terms.bug %] id in that URL.
+ [% END %]
+
+ [% ELSIF error == "bug_url_too_long" %]
+ [% title = "Invalid $terms.Bug URL" %]
+ [% terms.Bug %] URLs can not be longer than
+ [%+ constants.MAX_BUG_URL_LENGTH FILTER none %] characters long.
+ <code>[% url FILTER html %]</code> is too long.
+
+ [% ELSIF error == "buglist_parameters_required" %]
+ [% title = "Parameters Required" %]
+ [% docslinks = {'query.html' => "Searching for $terms.bugs",
+ 'query.html#list' => "$terms.Bug lists"} %]
+ You may not search, or create saved searches, without any search terms.
+
+ [% ELSIF error == "chart_too_large" %]
+ [% title = "Chart Too Large" %]
+ Sorry, but 2000 x 2000 is the maximum size for a chart.
+
+ [% ELSIF error == "comment_id_invalid" %]
+ [% id FILTER html %] is not a valid comment id.
+
+ [% ELSIF error == "comment_invalid_isprivate" %]
+ You tried to modify the privacy of comment id [% id FILTER html %],
+ but that is not a valid comment on this [% terms.bug %].
+
+ [% ELSIF error == "comment_is_private" %]
+ Comment id [% id FILTER html %] is private.
+
+ [% ELSIF error == "comment_required" %]
+ [% title = "Comment Required" %]
+ You have to specify a
+ [% IF old && new %]
+ <b>comment</b> when changing the status of [% terms.abug %] from
+ [%+ old.name FILTER html %] to [% new.name FILTER html %].
+ [% ELSIF new %]
+ description for this [% terms.bug %].
+ [% ELSE %]
+ <b>comment</b> on this change.
+ [% END %]
+
+ [% ELSIF error == "comment_too_long" %]
+ [% title = "Comment Too Long" %]
+ Comments cannot be longer than
+ [%+ constants.MAX_COMMENT_LENGTH FILTER html %] characters.
+
+ [% ELSIF error == "auth_classification_not_enabled" %]
+ [% title = "Classification Not Enabled" %]
+ Sorry, classification is not enabled.
+
+ [% ELSIF error == "classification_name_too_long" %]
+ [% title = "Classification Name Too Long" %]
+ The name of a classification is limited to [% constants.MAX_CLASSIFICATION_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
+
+[% ELSIF error == "classification_not_specified" %]
+ [% title = "You Must Supply A Classification Name" %]
+ You must enter a classification name.
+
+ [% ELSIF error == "classification_already_exists" %]
+ [% title = "Classification Already Exists" %]
+ A classification with the name '[% name FILTER html %]' already exists.
+
+ [% ELSIF error == "classification_invalid_sortkey" %]
+ [% title = "Invalid Sortkey for Classification" %]
+ The sortkey '[% sortkey FILTER html %]' is invalid. It must be an
+ integer between 0 and [% constants.MAX_SMALLINT FILTER html %].
+
+ [% ELSIF error == "classification_not_deletable" %]
+ [% title = "Default Classification Can Not Be Deleted" %]
+ You can not delete the default classification
+
+ [% ELSIF error == "classification_has_products" %]
+ Sorry, there are products for this classification. You
+ must reassign those products to another classification before you
+ can delete this one.
+
+ [% ELSIF error == "component_already_exists" %]
+ [% title = "Component Already Exists" %]
+ The <em>[% product.name FILTER html %]</em> product already has
+ a component named <em>[% name FILTER html %]</em>.
+
+ [% ELSIF error == "component_blank_description" %]
+ [% title = "Blank Component Description Not Allowed" %]
+ You must enter a non-blank description for this component.
+
+ [% ELSIF error == "component_blank_name" %]
+ [% title = "Blank Component Name Not Allowed" %]
+ You must enter a name for this new component.
+
+ [% ELSIF error == "component_has_bugs" %]
+ [% title = BLOCK %]Component has [% terms.Bugs %][% END %]
+ There are [% nb FILTER html %] [%+ terms.bugs %] entered for this component!
+ You must reassign those [% terms.bugs %] to another component before you
+ can delete this one.
+
+ [% ELSIF error == "component_name_too_long" %]
+ [% title = "Component Name Is Too Long" %]
+ The name of a component is limited to [% constants.MAX_COMPONENT_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
+
+ [% ELSIF error == "component_need_initialowner" %]
+ [% title = "Component Requires Default Assignee" %]
+ A default assignee is required for this component.
+
+ [% ELSIF error == "customfield_nonexistent" %]
+ [% title = "Unknown Custom Field" %]
+ There is no custom field with the name '[% name FILTER html %]'.
+
+ [% ELSIF error == "customfield_not_obsolete" %]
+ [% title = "Custom Field Not Obsolete" %]
+ The custom field '[% name FILTER html %]' is not obsolete.
+ Please obsolete a custom field before attempting to delete it.
+
+ [% ELSIF error == "customfield_has_activity" %]
+ [% title = "Custom Field Has Activity" %]
+ The custom field '[% name FILTER html %]' cannot be deleted because
+ it has recorded activity.
+
+ [% ELSIF error == "customfield_has_contents" %]
+ [% title = "Custom Field Has Contents" %]
+ The custom field '[% name FILTER html %]' cannot be deleted because
+ at least one [% terms.bug %] has a non empty value for this field.
+
+ [% ELSIF error == "dependency_loop_multi" %]
+ [% title = "Dependency Loop Detected" %]
+ The following [% terms.bug %](s) would appear on both the "depends on"
+ and "blocks" parts of the dependency tree if these changes
+ are committed:
+ [% FOREACH dep = deps %]
+ [%+ dep FILTER bug_link(dep) FILTER none %]
+ [% END %].
+ This would create a circular dependency, which is not allowed.
+
+ [% ELSIF error == "dependency_loop_single" %]
+ [% title = "Dependency Loop Detected" %]
+ You can't make [% terms.abug %] block itself or depend on itself.
+
+ [% ELSIF error == "dupe_id_required" %]
+ [% title = "Duplicate $terms.Bug Id Required" %]
+ You must specify [% terms.abug %] id to mark this [% terms.bug %]
+ as a duplicate of.
+
+ [% ELSIF error == "dupe_not_allowed" %]
+ [% title = "Cannot mark $terms.bugs as duplicates" %]
+ You cannot mark [% terms.bugs %] as duplicates when
+ changing several [% terms.bugs %] at once.
+
+ [% ELSIF error == "dupe_loop_detected" %]
+ [% title = "Loop detected among duplicates" %]
+ You cannot mark [% terms.bug %] [%+ bug_id FILTER html %] as
+ a duplicate of
+ [% IF dupe_of == bug_id %]
+ itself
+ [% ELSE %]
+ [%+ terms.bug %] [%+ dupe_of FILTER html %], because it
+ would create a duplicate loop
+ [% END %].
+
+ [% ELSIF error == "email_change_in_progress" %]
+ [% title = "Email Change Already In Progress" %]
+ Email change already in progress; please check your email.
+
+ [% ELSIF error == "email_confirmation_failed" %]
+ [% title = "Email Address Confirmation Failed" %]
+ Email address confirmation failed.
+
+ [% ELSIF error == "email_no_text_plain" %]
+ Your message did not contain any text.[% terms.Bugzilla %] does not
+ accept HTML-only email, or HTML email with attachments.
+
+ [% ELSIF error == "empty_group_description" %]
+ [% title = "The group description can not be empty" %]
+ You must enter a description for the group.
+
+ [% ELSIF error == "empty_group_name" %]
+ [% title = "The group name can not be empty" %]
+ You must enter a name for the group.
+
+ [% ELSIF error == "entry_access_denied" %]
+ [% title = "Permission Denied" %]
+ [% admindocslinks = {'groups.html' => 'Group Security'} %]
+ Sorry, either the product <em>[% product FILTER html %]</em>
+ does not exist or you aren't authorized to
+ enter [% terms.abug %] into it.
+
+ [% ELSIF error == "extension_create_no_name" %]
+ You must specify a name for your extension, as an argument to this script.
+
+ [% ELSIF error == "extension_first_letter_caps" %]
+ The first letter of your extension's name must be a capital letter.
+ (You specified '[% name FILTER html %]'.)
+
+ [% ELSIF error == "field_already_exists" %]
+ [% title = "Field Already Exists" %]
+ The field '[% field.name FILTER html %]'
+ ([% field.description FILTER html %]) already exists. Please
+ choose another name.
+
+ [% ELSIF error == "field_cant_control_self" %]
+ [% title = "Field Can't Control Itself" %]
+ The [% field.description FILTER html %] field can't be set to control
+ itself.
+
+ [% ELSIF error == "field_control_must_be_select" %]
+ [% title = "Invalid Field Type Selected" %]
+ Only drop-down and multi-select fields can be used to control
+ the visibility/values of other fields. [% field.description FILTER html %]
+ is not the right type of field.
+
+ [% ELSIF error == "field_invalid_name" %]
+ [% title = "Invalid Field Name" %]
+ '[% name FILTER html %]' is not a valid name for a field.
+ A name may contain only letters, numbers, and the underscore character.
+
+ [% ELSIF error == "field_invalid_sortkey" %]
+ [% title = "Invalid Sortkey for Field" %]
+ The sortkey [% sortkey FILTER html %] that you have provided for
+ this field is not a valid positive integer.
+
+ [% ELSIF error == "field_missing_description" %]
+ [% title = "Missing Description for Field" %]
+ You must enter a description for this field.
+
+ [% ELSIF error == "field_missing_name" %]
+ [% title = "Missing Name for Field" %]
+ You must enter a name for this field.
+
+ [% ELSIF error == "field_value_control_select_only" %]
+ [% title = "Invalid Value Control Field" %]
+ Only Drop-Down or Multi-Select fields can have a field that
+ controls their values.
+
+ [% ELSIF error == "fieldname_invalid" %]
+ [% title = "Specified Field Does Not Exist" %]
+ The field '[% field.name FILTER html %]' does not exist or
+ cannot be edited with this interface.
+
+ [% ELSIF error == "fieldvalue_already_exists" %]
+ [% title = "Field Value Already Exists" %]
+ The value '[% value.name FILTER html %]' already exists for the
+ [%+ field.description FILTER html %] field.
+
+ [% ELSIF error == "fieldvalue_is_controller" %]
+ [% title = "Value Controls Other Fields" %]
+ You cannot delete the [% value.field.description FILTER html %]
+ '[% value.name FILTER html %]' because
+ [% IF fields.size %]
+ it controls the visibility of the following fields:
+ [%+ fields.join(', ') FILTER html %].
+ [% END %]
+ [% ' Also, ' IF fields.size AND vals.size %]
+ [% IF vals.size %]
+ it controls the visibility of the following field values:
+ <ul>
+ [% FOREACH field_name = vals.keys %]
+ [% FOREACH val = vals.${field_name} %]
+ <li>[% val.field.name FILTER html %]:
+ '[% val.name FILTER html %]'</li>
+ [% END %]
+ [% END %]
+ </ul>
+ [% END %]
+
+ [% ELSIF error == "fieldvalue_is_default" %]
+ [% title = "Specified Field Value Is Default" %]
+ '[% value.name FILTER html %]' is the default value for
+ the '[% field.description FILTER html %]' field and cannot be deleted
+ or disabled.
+ [% IF user.in_group('tweakparams') %]
+ You have to <a href="editparams.cgi?section=bugfields#
+ [%- param_name FILTER url_quote %]">change</a> the default value first.
+ [% END %]
+
+ [% ELSIF error == "fieldvalue_name_too_long" %]
+ [% title = "Field Value Is Too Long" %]
+ The value of a field is limited to
+ [%+ constants.FIELD_VALUE_MAX_SIZE FILTER none %] characters.
+ '[% value FILTER html %]' is too long ([% value.length %] characters).
+
+ [% ELSIF error == "fieldvalue_not_editable" %]
+ [% title = "Field Value Not Editable" %]
+ The value '[% old_value.name FILTER html %]' cannot be renamed because
+ it plays some special role for the '[% field.description FILTER html %]'
+ field.
+
+ [% ELSIF error == "fieldvalue_not_deletable" %]
+ [% title = "Field Value Not Deletable" %]
+ The value '[% value.name FILTER html %]' cannot be removed or
+ disabled, because it plays some special role for the
+ '[% field.description FILTER html %]' field.
+
+ [% ELSIF error == "fieldvalue_reserved_word" %]
+ [% title = "Reserved Word Not Allowed" %]
+ You cannot use the value '[% value FILTER html %]' for the
+ '[% field.description FILTER html %]' field. This value is used internally.
+ Please choose another one.
+
+ [% ELSIF error == "fieldvalue_sortkey_invalid" %]
+ [% title = "Invalid Field Value Sortkey" %]
+ The sortkey '[% sortkey FILTER html %]' for the
+ [%+ field.description FILTER html %] field is not a valid
+ (positive) number.
+
+ [% ELSIF error == "fieldvalue_still_has_bugs" %]
+ [% title = "You Cannot Delete This Field Value" %]
+ You cannot delete the value '[% value.name FILTER html %]' from the
+ [%+ field.description FILTER html %] field, because there are still
+ [%+ value.bug_count FILTER html %] [%+ terms.bugs %] using it.
+
+ [% ELSIF error == "fieldvalue_undefined" %]
+ [% title = "Undefined Value Not Allowed" %]
+ You must specify a value.
+
+ [% ELSIF error == "file_not_specified" %]
+ [% title = "No File Specified" %]
+ You did not specify a file to attach.
+
+ [% ELSIF error == "file_too_large" %]
+ [% title = "File Too Large" %]
+ The file you are trying to attach is [% filesize FILTER html %]
+ kilobytes (KB) in size. Attachments cannot be more than
+ [%+ Param('maxattachmentsize') %] KB. <br>
+ We recommend that you store your attachment elsewhere
+ [% IF Param("allow_attach_url") %]
+ and then specify the URL to this file on the attachment
+ creation page in the <b>AttachURL</b> field.
+ [% ELSE %]
+ and then insert the URL to it in a comment, or in the URL field
+ for this [% terms.bug %].
+ [% END %]
+ <br>Alternately, if your attachment is an image, you could convert
+ it to a compressible format like JPG or PNG and try again.
+
+ [% ELSIF error == "flag_requestee_needs_privs" %]
+ [% title = "Flag Requestee Needs Privileges" %]
+ [% requestee.identity FILTER html %] does not have permission to set the
+ <em>[% flagtype.name FILTER html %]</em> flag. Please select a user who is
+ a member of the <em>[% flagtype.grant_group.name FILTER html %]</em> group.
+
+ [% ELSIF error == "flag_requestee_unauthorized" %]
+ [% title = "Flag Requestee Not Authorized" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags',
+ 'groups.html' => 'Group Security'} %]
+ [% docslinks = {'flags-overview.html' => 'An overview on Flags',
+ 'flags.html' => 'Using Flags'} %]
+
+ You asked [% requestee.identity FILTER html %]
+ for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %]
+ [%+ bug_id FILTER html -%]
+ [% IF attach_id && attach_id > 0 %], attachment [% attach_id FILTER html %][% END %],
+ but that [% terms.bug %] has been restricted to users in certain groups,
+ and the user you asked isn't in all the groups to which
+ the [% terms.bug %] has been restricted.
+ Please choose someone else to ask, or make the [% terms.bug %] accessible
+ to users on its CC: list and add that user to the list.
+
+ [% ELSIF error == "flag_requestee_unauthorized_attachment" %]
+ [% title = "Flag Requestee Not Authorized" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags',
+ 'groups.html' => 'Group Security'} %]
+ [% docslinks = {'flags-overview.html' => 'An overview on Flags',
+ 'flags.html' => 'Using Flags'} %]
+
+ You asked [% requestee.identity FILTER html %]
+ for <code>[% flag_type.name FILTER html %]</code> on
+ [%+ terms.bug %] [%+ bug_id FILTER html %],
+ attachment [% attach_id FILTER html %], but that attachment
+ is restricted to users in the [% Param("insidergroup") FILTER html %] group,
+ and the user you asked isn't in that group. Please choose someone else
+ to ask, or ask an administrator to add the user to the group.
+
+ [% ELSIF error == "flag_status_invalid" %]
+ [% title = "Flag Status Invalid" %]
+ The flag status <em>[% status FILTER html %]</em>
+ [% IF id %]
+ for flag ID #[% id FILTER html %]
+ [% END %]
+ is invalid.
+
+ [% ELSIF error == "flag_type_cc_list_invalid" %]
+ [% title = "Flag Type CC List Invalid" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags'} %]
+ The CC list [% cc_list FILTER html %] must be less than 200 characters long.
+
+ [% ELSIF error == "flag_type_component_without_product" %]
+ [% title = "Product Missing" %]
+ A component was selected without a product being selected.
+
+ [% ELSIF error == "flag_type_description_invalid" %]
+ [% title = "Flag Type Description Invalid" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags'} %]
+ The description must be less than 32K.
+
+ [% ELSIF error == "flag_type_name_invalid" %]
+ [% title = "Flag Type Name Invalid" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags'} %]
+ The name <em>[% name FILTER html %]</em> must be 1-50 characters long
+ and must not contain any spaces or commas.
+
+ [% ELSIF error == "flag_type_not_multiplicable" %]
+ [% docslinks = {'flags-overview.html' => 'An overview on Flags',
+ 'flags.html' => 'Using Flags'} %]
+ You cannot have several <em>[% type.name FILTER html %]</em> flags
+ for this [% IF attachment %] attachment [% ELSE %] [%+ terms.bug %] [% END %].
+
+ [% ELSIF error == "flag_update_denied" %]
+ [% title = "Flag Modification Denied" %]
+ [% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags',
+ 'groups.html' => 'Group Security'} %]
+ [% docslinks = {'flags-overview.html' => 'An overview on Flags',
+ 'flags.html' => 'Using Flags'} %]
+ You tried to [% IF status == "+" %] grant [% ELSIF status == "-" %] deny
+ [% ELSIF status == "X" %] clear [% ELSE %] request [% END %]
+ <code>[% name FILTER html %]
+ [% IF status == "X" %][% old_status FILTER html %][% END %]</code>.
+
+ Only a user with the required permissions may make this change.
+
+ [% ELSIF error == "format_not_found" %]
+ [% title = "Format Not Found" %]
+ The requested format <em>[% format FILTER html %]</em> does not exist with
+ a content type of <em>[% ctype FILTER html %]</em>.
+
+ [% ELSIF error == "flag_type_sortkey_invalid" %]
+ [% title = "Flag Type Sort Key Invalid" %]
+ The sort key must be an integer between 0 and 32767 inclusive.
+ It cannot be <em>[% sortkey FILTER html %]</em>.
+
+ [% ELSIF error == "freetext_too_long" %]
+ [% title = "Text Too Long" %]
+ The text you entered in the [% field_descs.$field FILTER html %]
+ field is too long ([% text.length FILTER html %] characters,
+ above the maximum length allowed of
+ [%+ constants.MAX_FREETEXT_LENGTH FILTER none %] characters).
+
+ [% ELSIF error == "group_cannot_delete" %]
+ [% title = "Cannot Delete Group" %]
+ The <em>[% group.name FILTER html %]</em> group cannot be deleted because
+ there are
+ <a href="editgroups.cgi?action=del&amp;group=
+ [%- group.id FILTER url_quote %]">records</a>
+ in the database which refer to it. All references to this group must
+ be removed before you can remove it.
+
+ [% ELSIF error == "group_exists" %]
+ [% title = "The group already exists" %]
+ The group [% name FILTER html %] already exists.
+
+ [% ELSIF error == "group_has_special_role" %]
+ [% title = "Group not deletable" %]
+ [% IF groups.size == 1 %]
+ [% attr = "it" %]
+ [% param = "parameter" %]
+ [% ELSE %]
+ [% attr = "them" %]
+ [% param = "parameters" %]
+ [% END %]
+ The group '[% name FILTER html %]' is used by the
+ '[% groups.join("' and '") FILTER html %]' [% param FILTER html %].
+ In order to delete this group, you first have to change the
+ [%+ param FILTER html %] to make [% attr FILTER html %] point to another group.
+
+
+ [% ELSIF error == "group_invalid_removal" %]
+ You tried to remove [% terms.bug %] [%+ bug_id FILTER html %]
+ from the '[% name FILTER html %]' group, but either this group does not exist,
+ or you are not allowed to remove [% terms.bugs %] from this group in the
+ '[% product FILTER html %]' product.
+
+ [% ELSIF error == "group_restriction_not_allowed" %]
+ [% title = "Group Restriction Not Allowed" %]
+ You tried to restrict [% bug_id ? "$terms.bug $bug_id" : terms.abug FILTER html %]
+ to the '[% name FILTER html %]' group, but either this group does not exist,
+ or you are not allowed to restrict [% terms.bugs %] to this group in the
+ '[% product FILTER html %]' product.
+
+ [% ELSIF error == "group_not_specified" %]
+ [% title = "Group not specified" %]
+ No group was specified.
+
+ [% ELSIF error == "system_group_not_deletable" %]
+ [% title = "System Groups not deletable" %]
+ <em>[% name FILTER html %]</em> is a system group.
+ This group cannot be deleted.
+
+ [% ELSIF error == "group_unknown" %]
+ [% title = "Unknown Group" %]
+ The group [% name FILTER html %] does not exist. Please specify
+ a valid group name. Create it first if necessary!
+
+ [% ELSIF error == "illegal_attachment_edit" %]
+ [% title = "Unauthorized Action" %]
+ You are not authorized to edit attachment [% attach_id FILTER html %].
+
+ [% ELSIF error == "illegal_attachment_edit_bug" %]
+ [% title = "Unauthorized Action" %]
+ You are not authorized to edit attachments on [% terms.bug %]
+ [%+ bug_id FILTER html %].
+
+ [% ELSIF error == "illegal_attachment_is_patch" %]
+ [% title = "Your Search Makes No Sense" %]
+ The only legal values for the <em>Attachment is patch</em> field are
+ 0 and 1.
+
+ [% ELSIF error == "illegal_bug_status_transition" %]
+ [% title = "Illegal $terms.Bug Status Change" %]
+ [% IF old.defined %]
+ You are not allowed to change the [% terms.bug %] status from
+ [%+ old.name FILTER html %] to [% new.name FILTER html %].
+ [% ELSE %]
+ You are not allowed to file new [% terms.bugs %] with the
+ [%+ new.name FILTER html %] status.
+ [% END %]
+
+ [% ELSIF error == "illegal_change" %]
+ [% title = "Not allowed" %]
+ You tried to change the
+ <strong>[% field_descs.$field FILTER html %]</strong> field
+ [% IF oldvalue.defined %]
+ from <em>[% oldvalue.join(', ') FILTER html %]</em>
+ [% END %]
+ [% IF newvalue.defined %]
+ to <em>[% newvalue.join(', ') FILTER html %]</em>
+ [% END %]
+ , but only
+ [% IF privs < constants.PRIVILEGES_REQUIRED_EMPOWERED %]
+ the assignee
+ [% IF privs < constants.PRIVILEGES_REQUIRED_ASSIGNEE %] or reporter [% END %]
+ of the [% terms.bug %], or
+ [% END %]
+ a user with the required permissions may change that field.
+
+ [% ELSIF error == "illegal_change_deps" %]
+ [% title = "Not allowed" %]
+ You tried to change the
+ <strong>[% field_descs.$field FILTER html %]</strong> field
+ but only a user allowed to edit
+ both related [% terms.bugs %] may change that field.
+
+ [% ELSIF error == "illegal_changed_in_last_x_days" %]
+ [% title = "Your Search Makes No Sense" %]
+ The <em>Changed in last ___ days</em> field must be a simple number.
+ You entered <tt>[% value FILTER html %]</tt>, which isn't.
+
+ [% ELSIF error == "illegal_date" %]
+ [% title = "Illegal Date" %]
+ '<tt>[% date FILTER html %]</tt>' is not a legal date.
+ [% IF format %]
+ Please use the format '<tt>[% format FILTER html %]</tt>'.
+ [% END %]
+
+ [% ELSIF error == "illegal_email_address" %]
+ [% title = "Invalid Email Address" %]
+ The e-mail address you entered (<b>[% addr FILTER html %]</b>)
+ didn't pass our syntax checking for a legal email address.
+ [% IF default %]
+ A legal address must contain exactly one '@',
+ and at least one '.' after the @.
+ [% ELSE %]
+ [%+ Param('emailregexpdesc') %]
+ [% END %]
+ It must also not contain any of these special characters:
+ <tt>\ ( ) &amp; &lt; &gt; , ; : &quot; [ ]</tt>, or any whitespace.
+
+ [% ELSIF error == "illegal_frequency" %]
+ [% title = "Too Frequent" %]
+ Unless you are an administrator, you may not create series which are
+ run more often than once every [% minimum FILTER html %] days.
+
+ [% ELSIF error == "illegal_group_control_combination" %]
+ [% title = "Your Group Control Combination Is Illegal" %]
+ [% admindocslinks = {'groups.html' => 'Assigning Group Controls to Products'} %]
+ Your group control combination for group &quot;
+ [% groupname FILTER html %]&quot; is illegal.
+
+ [% ELSIF error == "illegal_is_obsolete" %]
+ [% title = "Your Search Makes No Sense" %]
+ The only legal values for the <em>Attachment is obsolete</em> field are
+ 0 and 1.
+
+ [% ELSIF error == "illegal_query_name" %]
+ [% title = "Illegal Search Name" %]
+ The name of your search cannot contain any of the following characters:
+ &lt;, &gt;, &amp;.
+
+ [% ELSIF error == "illegal_series_creation" %]
+ [% admindocslinks = {'groups.html' => 'Group security'} %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You are not authorized to create series.
+
+ [% ELSIF error == "illegal_series_edit" %]
+ [% admindocslinks = {'groups.html' => 'Group security'} %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You are not authorized to edit this series. To do this, you must either
+ be its creator, or an administrator.
+
+ [% ELSIF error == "illegal_time" %]
+ [% title = "Illegal Time" %]
+ '<tt>[% time FILTER html %]</tt>' is not a legal time.
+ [% IF format %]
+ Please use the format '<tt>[% format FILTER html %]</tt>'.
+ [% END %]
+
+ [% ELSIF error == "illegal_regexp" %]
+ [% title = "Illegal Regular Expression" %]
+ The regular expression you provided [% value FILTER html %] is not valid.
+ The error was: [% dberror FILTER html %].
+
+ [% ELSIF error == "insufficient_data_points" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ We don't have enough data points to make a graph (yet).
+
+ [% ELSIF error == "invalid_attach_id" %]
+ [% title = "Invalid Attachment ID" %]
+ The attachment id [% attach_id FILTER html %] is invalid.
+
+ [% ELSIF error == "bug_id_does_not_exist" %]
+ [% title = BLOCK %]Invalid [% terms.Bug %] ID[% END %]
+ [% terms.Bug %] #[% bug_id FILTER html %] does not exist.
+
+ [% ELSIF error == "improper_bug_id_field_value" %]
+ [% title = BLOCK %]
+ [% IF bug_id %]Invalid [% ELSE %]Missing [% END %] [% terms.Bug %] ID
+ [% END %]
+ [% IF bug_id %]
+ '[% bug_id FILTER html %]' is not a valid [% terms.bug %] number
+ [% IF Param("usebugaliases") %]
+ nor an alias to [% terms.abug %]
+ [% END %].
+ [% ELSE %]
+ [% IF field %]
+ The '[% field_descs.$field FILTER html %]' field
+ cannot be empty.
+ [% END %]
+ You must enter a valid [% terms.bug %] number!
+ [% END %]
+
+ [% ELSIF error == "invalid_changedsince" %]
+ [% title = "Invalid 'Changed Since'" %]
+ The 'changed since' value, '[% changedsince FILTER html %]', must be an
+ integer >= 0.
+
+ [% ELSIF error == "invalid_content_type" %]
+ [% title = "Invalid Content-Type" %]
+ The content type <em>[% contenttype FILTER html %]</em> is invalid.
+ Valid types must be of the form <em>foo/bar</em> where <em>foo</em>
+ is one of <em>[% constants.LEGAL_CONTENT_TYPES.join(', ') FILTER html %]</em>
+ and <em>bar</em> must not contain any special characters (such as "=", "?", ...).
+
+ [% ELSIF error == "invalid_context" %]
+ [% title = "Invalid Context" %]
+ The context [% context FILTER html %] is invalid (must be a number,
+ "file" or "patch").
+
+ [% ELSIF error == "invalid_datasets" %]
+ [% title = "Invalid Datasets" %]
+ Invalid datasets <em>[% datasets.join(":") FILTER html %]</em>. Only digits,
+ letters and colons are allowed.
+
+ [% ELSIF error == "invalid_format" %]
+ [% title = "Invalid Format" %]
+ The format "[% format FILTER html %]" is invalid (must be one of
+ [% FOREACH my_format = formats %]
+ "[% my_format FILTER html %]"
+ [% END %]
+ ).
+
+ [% ELSIF error == "invalid_group_ID" %]
+ [% title = "Invalid group ID" %]
+ The group you specified doesn't exist.
+
+ [% ELSIF error == "invalid_group_name" %]
+ [% title = "Invalid group name" %]
+ The group you specified, [% name FILTER html %], is not valid here.
+
+ [% ELSIF error == "invalid_maxrows" %]
+ [% title = "Invalid Max Rows" %]
+ The maximum number of rows, '[% maxrows FILTER html %]', must be
+ a positive integer.
+
+ [% ELSIF error == "invalid_parameter" %]
+ [% title = "Invalid Parameter" %]
+ The new value for [% name FILTER html %] is invalid: [% err FILTER html %].
+
+ [% ELSIF error == "invalid_product_name" %]
+ [% title = "Invalid Product Name" %]
+ The product name '[% product FILTER html %]' is invalid or does not exist.
+
+ [% ELSIF error == "invalid_regexp" %]
+ [% title = "Invalid regular expression" %]
+ The regular expression you entered is invalid.
+
+ [% ELSIF error == "invalid_user_group" %]
+ [% title = "Invalid User Group" %]
+ [% IF users.size > 1 %] Users [% ELSE %] User [% END %]
+ '[% users.join(', ') FILTER html %]'
+ [% IF users.size > 1 %] are [% ELSE %] is [% END %]
+ not able to edit the
+ [% IF product %]
+ '[% product FILTER html %]'
+ [% END %]
+ [%+ field_descs.product FILTER html %]
+ [% IF bug_id %]
+ for [% terms.bug %] '[% bug_id FILTER html %]'.
+ [% ELSIF new %]
+ and may not be included on a new [% terms.bug %].
+ [% ELSE %]
+ for at least one [% terms.bug %] being changed.
+ [% END %]
+
+ [% ELSIF error == "invalid_username" %]
+ [% title = "Invalid Username" %]
+ The name <tt>[% name FILTER html %]</tt> is not a valid username.
+ Either you misspelled it, or the person has not
+ registered for a [% terms.Bugzilla %] account.
+
+ [% ELSIF error == "invalid_username_or_password" %]
+ [% title = "Invalid Username Or Password" %]
+ The username or password you entered is not valid.
+ [%# People get two login attempts before being warned about
+ # being locked out.
+ #%]
+ [% IF remaining <= 2 %]
+ If you do not enter the correct password after
+ [%+ remaining FILTER html %] more attempt(s), you will be
+ locked out of this account for
+ [%+ constants.LOGIN_LOCKOUT_INTERVAL FILTER html %] minutes.
+ [% END %]
+
+ [% ELSIF error == "json_rpc_get_method_required" %]
+ When using JSON-RPC over GET, you must specify a 'method'
+ parameter. See the documentation at
+ [%+ docs_urlbase FILTER html %]api/Bugzilla/WebService/Server/JSONRPC.html
+
+ [% ELSIF error == "json_rpc_invalid_params" %]
+ Could not parse the 'params' argument as valid JSON.
+ Error: [% err_msg FILTER html %]
+ Value: [% params FILTER html %]
+
+ [% ELSIF error == "json_rpc_invalid_callback" %]
+ You cannot use '[% callback FILTER html %]' as your 'callback' parameter.
+ For security reasons, only letters, numbers, and the following
+ characters are allowed in the 'callback' parameter: <code>[]._</code>
+
+ [% ELSIF error == "json_rpc_post_only" %]
+ For security reasons, you must use HTTP POST to call the
+ '[% method FILTER html %]' method.
+
+ [% ELSIF error == "keyword_already_exists" %]
+ [% title = "Keyword Already Exists" %]
+ A keyword with the name [% name FILTER html %] already exists.
+
+ [% ELSIF error == "keyword_blank_description" %]
+ [% title = "Blank Keyword Description Not Allowed" %]
+ You must enter a non-blank description for the keyword.
+
+ [% ELSIF error == "keyword_blank_name" %]
+ [% title = "Blank Keyword Name Not Allowed" %]
+ You must enter a non-blank name for the keyword.
+
+ [% ELSIF error == "keyword_invalid_name" %]
+ [% title = "Invalid Keyword Name" %]
+ You may not use commas or whitespace in a keyword name.
+
+ [% ELSIF error == "local_file_too_large" %]
+ [% title = "Local File Too Large" %]
+ Local file uploads must not exceed
+ [% Param('maxlocalattachment') %] MB in size.
+
+ [% ELSIF error == "login_needed_for_password_change" %]
+ [% title = "Login Name Required" %]
+ You must enter a login name when requesting to change your password.
+
+ [% ELSIF error == "login_required_for_pronoun" %]
+ [% title = "Login Name Required" %]
+ You can't use %user% without being logged in, because %user% refers
+ to your login name, which we don't know.
+
+ [% ELSIF error == "login_required" %]
+ [%# Used for non-web-based LOGIN_REQUIRED situations. %]
+ You must log in before using this part of [% terms.Bugzilla %].
+
+ [% ELSIF error == "migrate_config_created" %]
+ The file <kbd>[% file FILTER html %]</kbd> contains configuration
+ variables that must be set before continuing with the migration.
+
+ [% ELSIF error == "migrate_from_invalid" %]
+ '[% from FILTER html %]' is not a valid type of [% terms.bug %]-tracker
+ to migrate from. See the contents of the <kbd>B[% %]ugzilla/Migrate/</kbd>
+ directory for a list of valid [% terms.bug %]-trackers.
+
+ [% ELSIF error == "milestone_already_exists" %]
+ [% title = "Milestone Already Exists" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'milestones.html' => 'About Milestones'} %]
+ The milestone '[% name FILTER html %]' already exists for product '
+ [%- product FILTER html %]'.
+
+ [% ELSIF error == "milestone_blank_name" %]
+ [% title = "Blank Milestone Name Not Allowed" %]
+ You must enter a name for this milestone.
+
+ [% ELSIF error == "milestone_is_default" %]
+ [% title = "Default milestone not deletable" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'milestones.html' => 'About Milestones'} %]
+ Sorry, but [% milestone.name FILTER html %] is the default milestone
+ for the '[% milestone.product.name FILTER html %]' product, and so
+ it cannot be deleted.
+
+ [% ELSIF error == "milestone_name_too_long" %]
+ [% title = "Milestone Name Is Too Long" %]
+ The name of a milestone is limited to [% constants.MAX_MILESTONE_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
+
+ [% ELSIF error == "milestone_required" %]
+ [% title = "Milestone Required" %]
+ You must select a target milestone for [% terms.bug %]
+ [%+ bug.id FILTER html %]
+ if you are going to accept it. Part of accepting
+ [%+ terms.abug %] is giving an estimate of when it will be fixed.
+
+ [% ELSIF error == "milestone_sortkey_invalid" %]
+ [% title = "Invalid Milestone Sortkey" %]
+ The sortkey '[% sortkey FILTER html %]' is not in the range
+ [%+ constants.MIN_SMALLINT FILTER html %] &le; sortkey &le;
+ [%+ constants.MAX_SMALLINT FILTER html %].
+
+ [% ELSIF error == "misarranged_dates" %]
+ [% title = "Misarranged Dates" %]
+ Your start date ([% datefrom FILTER html %]) is after
+ your end date ([% dateto FILTER html %]).
+
+ [% ELSIF error == "missing_attachment_description" %]
+ [% title = "Missing Attachment Description" %]
+ You must enter a description for the attachment.
+
+ [% ELSIF error == "missing_category" %]
+ [% title = "Missing Category" %]
+ You did not specify a category for this series.
+
+ [% ELSIF error == "missing_component" %]
+ [% title = "Missing Component" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'components.html' => 'Creating a component'} %]
+ Sorry, the product <em>[% product.name FILTER html %]</em>
+ has to have at least one component in order for you to
+ enter [% terms.abug %] into it.<br>
+ [% IF user.in_group("editcomponents", product.id) %]
+ <a href="editcomponents.cgi?action=add&amp;product=[% product.name FILTER url_quote %]">Create
+ a new component</a>.
+ [% ELSE %]
+ Please contact [% Param("maintainer") %] and ask them
+ to add a component to this product.
+ [% END %]
+
+ [% ELSIF error == "missing_content_type" %]
+ [% title = "Missing Content-Type" %]
+ You asked [% terms.Bugzilla %] to auto-detect the content type, but
+ your browser did not specify a content type when uploading the file,
+ so you must enter a content type manually.
+
+ [% ELSIF error == "missing_content_type_method" %]
+ [% title = "Missing Content-Type Determination Method" %]
+ You must choose a method for determining the content type,
+ either <em>auto-detect</em>, <em>select from list</em>, or <em>enter
+ manually</em>.
+
+ [% ELSIF error == "missing_cookie" %]
+ [% title = "Missing Cookie" %]
+ Sorry, I seem to have lost the cookie that recorded
+ the results of your last search. I'm afraid you will have to start
+ again from the <a href="query.cgi">search page</a>.
+
+ [% ELSIF error == "missing_datasets" %]
+ [% title = "No Datasets Selected" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You must specify one or more datasets to plot.
+
+ [% ELSIF error == "missing_frequency" %]
+ [% title = "Missing Frequency" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You did not specify a valid frequency for this series.
+
+ [% ELSIF error == "missing_name" %]
+ [% title = "Missing Name" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You did not specify a name for this series.
+
+ [% ELSIF error == "missing_query" %]
+ [% title = "Missing Search" %]
+ [% docslinks = {'query.html' => "Searching for $terms.bugs",
+ 'query.html#list' => "$terms.Bug lists"} %]
+ The search named <em>[% queryname FILTER html %]</em>
+ [% IF sharer_id && sharer_id != user.id %]
+ has not been made visible to you.
+ [% ELSE %]
+ does not exist.
+ [% END %]
+
+ [% ELSIF error == "missing_resolution" %]
+ [% title = "Resolution Required" %]
+ A valid resolution is required to mark [% terms.bugs %] as
+ [%+ status FILTER upper FILTER html %].
+
+ [% ELSIF error == "missing_subcategory" %]
+ [% title = "Missing Subcategory" %]
+ You did not specify a subcategory for this series.
+
+ [% ELSIF error == "missing_version" %]
+ [% title = "Missing Version" %]
+ [% admindocslinks = {'versions.html' => 'Defining versions'} %]
+ Sorry, the product <em>[% product.name FILTER html %]</em>
+ has to have at least one version in order for you to
+ enter [% terms.abug %] into it.<br>
+ [% IF user.in_group("editcomponents", product.id) %]
+ <a href="editversions.cgi?action=add&amp;product=[% product.name FILTER url_quote %]">Create
+ a new version</a>.
+ [% ELSE %]
+ Please contact [% Param("maintainer") %] and ask them
+ to add a version to this product.
+ [% END %]
+
+ [% ELSIF error == "multiple_alias_not_allowed" %]
+ You cannot set aliases when modifying multiple [% terms.bugs %]
+ at once.
+
+ [% ELSIF error == "need_quip" %]
+ [% title = "Quip Required" %]
+ [% docslinks = {'quips.html' => 'About quips'} %]
+ Please enter a quip in the text field.
+
+ [% ELSIF error == "new_password_missing" %]
+ [% title = "New Password Missing" %]
+ You must enter a new password.
+
+ [% ELSIF error == "no_axes_defined" %]
+ [% title = "No Axes Defined" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ You didn't define any axes to plot.
+
+ [% ELSIF error == "no_bugs_chosen" %]
+ [% title = BLOCK %]No [% terms.Bugs %] Selected[% END %]
+ You apparently didn't choose any [% terms.bugs %]
+ [% IF action == "modify" %]
+ to modify.
+ [% ELSIF action == "view" %]
+ to view.
+ [% END %]
+
+ [% ELSIF error == "no_bug_ids" %]
+ [% title = BLOCK %]No [% terms.Bugs %] Selected[% END %]
+ You didn't choose any [% terms.bugs %] to
+ [% IF action == "add" %] add to [% ELSE %] remove from [% END %]
+ the [% tag FILTER html %] tag.
+
+ [% ELSIF error == "no_bugs_in_list" %]
+ [% title = "Delete Tag?" %]
+ This will remove all [% terms.bugs %] from the
+ <em>[% name FILTER html %]</em> tag. This will delete the tag completely. Click
+ <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
+ [%- name FILTER url_quote %]&amp;token=
+ [%- issue_hash_token([query_id, name]) FILTER url_quote %]">here</a>
+ if you really want to delete it.
+
+ [% ELSIF error == "no_bugs_to_remove" %]
+ [% title = "No Tag Selected" %]
+ You didn't select a tag from which to remove [% terms.bugs %].
+
+ [% ELSIF error == "no_initial_bug_status" %]
+ [% title = "No Initial $terms.Bug Status" %]
+ No [% terms.bug %] status is available on [% terms.bug %] creation.
+ Please report the problem to [% Param("maintainer") %].
+
+ [% ELSIF error == "no_new_quips" %]
+ [% title = "No New Quips" %]
+ [% admindocslinks = {'quips.html' => 'Controlling quip usage'} %]
+ This site does not permit the addition of new quips.
+
+ [% ELSIF error == "no_page_specified" %]
+ [% title = "No Page Specified" %]
+ You did not specify the id of a page to display.
+
+ [% ELSIF error == "no_products" %]
+ [% title = "No Products" %]
+ [% admindocslinks = {'products.html' => 'Setting up a product',
+ 'components.html' => 'Adding components to products',
+ 'groups.html' => 'Groups security'} %]
+ Either no products have been defined to enter [% terms.bugs %] against or you have not
+ been given access to any.
+
+ [% ELSIF error == "number_not_numeric" %]
+ [% title = "Numeric Value Required" %]
+ The value '[% num FILTER html %]' in the
+ <em>[% field_descs.$field FILTER html %]</em> field
+ is not a numeric value.
+
+ [% ELSIF error == "number_too_large" %]
+ [% title = "Number Too Large" %]
+ The value '[% num FILTER html %]' in the
+ <em>[% field_descs.$field FILTER html %]</em> field
+ is more than the maximum allowable value of '[% max_num FILTER html %]'.
+
+ [% ELSIF error == "number_too_small" %]
+ [% title = "Number Too Small" %]
+ The value '[% num FILTER html %]'
+ in the <em>[% field_descs.$field FILTER html %]</em> field
+ is less than the minimum allowable value of '[% min_num FILTER html %]'.
+
+ [% ELSIF error == "object_not_specified" %]
+ [% type = BLOCK %][% INCLUDE object_name class = class %][% END %]
+ [% title = BLOCK %][% type FILTER ucfirst FILTER html %] Not
+ Specified[% END %]
+ You must select/enter a [% type FILTER html %].
+
+ [% ELSIF error == "object_does_not_exist" %]
+ [% type = BLOCK %][% INCLUDE object_name class = class %][% END %]
+ [% title = BLOCK %]Invalid [% type FILTER ucfirst FILTER html %][% END %]
+ There is no [% type FILTER html %]
+ [% IF id.defined %]
+ with the id '[% id FILTER html %]'
+ [% ELSE %]
+ named '[% name FILTER html %]'
+ [% END %]
+ [% IF product.defined %]
+ in the '[% product.name FILTER html %]' product
+ [% END %].
+ [% IF class == "Bugzilla::User" %]
+ Either you mis-typed the name or that user has not yet registered
+ for a [% terms.Bugzilla %] account.
+ [% END %]
+ [% IF class == "Bugzilla::Keyword" %]
+ The legal keyword names are <a href="describekeywords.cgi">listed
+ here</a>.
+ [% END %]
+
+ [% ELSIF error == "old_password_incorrect" %]
+ [% title = "Incorrect Old Password" %]
+ You did not enter your old password correctly.
+
+ [% ELSIF error == "old_password_required" %]
+ [% title = "Old Password Required" %]
+ You must enter your old password to change your email address.
+
+ [% ELSIF error == "password_change_requests_not_allowed" %]
+ [% title = "Password Change Requests Not Allowed" %]
+ Please go to: http://identity.mageia.org/ to change or recover your password.
+
+ [% ELSIF error == "passwords_dont_match" %]
+ [% title = "Passwords Don't Match" %]
+ The two passwords you entered did not match.
+
+ [% ELSIF error == "password_current_too_short" %]
+ [% title = "New Password Required" %]
+ Your password is currently less than
+ [%+ constants.USER_PASSWORD_MIN_LENGTH FILTER html %] characters long,
+ which is the new minimum length required for passwords.
+ You must <a href="token.cgi?a=reqpw&amp;loginname=[% locked_user.email FILTER url_quote %]">
+ request a new password</a> in order to log in again.
+
+ [% ELSIF error == "password_too_short" %]
+ [% title = "Password Too Short" %]
+ The password must be at least
+ [%+ constants.USER_PASSWORD_MIN_LENGTH FILTER html %] characters long.
+
+ [% ELSIF error == "patch_too_large" %]
+ [% title = "File Too Large" %]
+ The file you are trying to attach is [% filesize FILTER html %]
+ kilobytes (KB) in size.
+ Patches cannot be more than [% Param('maxattachmentsize') %] KB in size.
+ Try splitting your patch into several pieces.
+
+ [% ELSIF error == "product_access_denied" %]
+ Either the product
+ [%+ IF id.defined %]
+ with the id [% id FILTER html %]
+ [% ELSE %]
+ '[% name FILTER html %]'
+ [% END %]
+ does not exist or you don't have access to it.
+
+ [% ELSIF error == "product_illegal_group" %]
+ [% title = "Illegal Group" %]
+ [% group.name FILTER html %] is not an active [% terms.bug %] group
+ and so you cannot edit group controls for it.
+
+ [% ELSIF error == "product_name_already_in_use" %]
+ [% title = "Product name already exists" %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ The product name '[% product FILTER html %]' already exists.
+
+ [% ELSIF error == "product_name_diff_in_case" %]
+ [% title = "Product name differs only in case" %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ The product name '[% product FILTER html %]' differs from existing
+ product '[% existing_product FILTER html %]' only in case.
+
+ [% ELSIF error == "product_name_too_long" %]
+ [% title = "Product name too long" %]
+ The name of a product is limited to [% constants.MAX_PRODUCT_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
+
+ [% ELSIF error == "product_must_define_defaultmilestone" %]
+ [% title = "Must define new default milestone" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'milestones.html' => 'About Milestones'} %]
+ You must <a href="editmilestones.cgi?action=add&amp;product=[% product FILTER url_quote %]">
+ create the milestone '[% milestone FILTER html %]'</a> before
+ it can be made the default milestone for product '[% product FILTER html %]'.
+
+ [% ELSIF error == "product_admin_denied" %]
+ [% title = "Product Access Denied" %]
+ You are not allowed to edit properties of product '[% product FILTER html %]'.
+
+ [% ELSIF error == "product_blank_name" %]
+ [% title = "Blank Product Name Not Allowed" %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ You must enter a name for the product.
+
+ [% ELSIF error == "product_disabled" %]
+ [% title = BLOCK %]Product closed for [% terms.Bug %] Entry[% END %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ Sorry, entering [% terms.abug %] into the
+ product <em>[% product.name FILTER html %]</em> has been disabled.
+
+ [% ELSIF error == "product_edit_denied" %]
+ [% title = "Product Edit Access Denied" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'groups.html' => 'Group security'} %]
+ You are not permitted to edit [% terms.bugs %] in product
+ [%+ product FILTER html %].
+
+ [% ELSIF error == "product_has_bugs" %]
+ [% title = BLOCK %]Product has [% terms.Bugs %][% END %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ There are [% nb FILTER html %] [%+ terms.bugs %] entered for this product!
+ You must move those [% terms.bugs %] to another product before you
+ can delete this one.
+
+ [% ELSIF error == "product_must_have_description" %]
+ [% title = "Product needs Description" %]
+ [% admindocslinks = {'products.html' => 'Administering products'} %]
+ You must enter a description for this product.
+
+ [% ELSIF error == "product_must_have_version" %]
+ [% title = "Product needs Version" %]
+ [% admindocslinks = {'products.html' => 'Administering products',
+ 'versions.html' => 'Administering versions'} %]
+ You must enter a valid version to create a new product.
+
+ [% ELSIF error == "query_name_exists" %]
+ [% title = "Search Name Already In Use" %]
+ The name <em>[% name FILTER html %]</em> is already used by another
+ saved search. You first have to
+ <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
+ [%- name FILTER url_quote %]&amp;token=
+ [% issue_hash_token([query_id, name]) FILTER url_quote %]">delete</a>
+ it if you really want to use this name.
+
+ [% ELSIF error == "query_name_missing" %]
+ [% title = "No Search Name Specified" %]
+ [% docslinks = {'query.html#list' => "$terms.Bug lists"} %]
+ You must enter a name for your search.
+
+ [% ELSIF error == "query_name_too_long" %]
+ [% title = "Query Name Too Long" %]
+ The name of the query must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %]
+ characters long.
+
+ [% ELSIF error == "quicksearch_unknown_field" %]
+ [% title = "QuickSearch Error" %]
+ There is a problem with your search:
+ [% FOREACH field = unknown %]
+ <p><code>[% field FILTER html %]</code> is not a valid field name.</p>
+ [% END %]
+ [% FOREACH field = ambiguous.keys %]
+ <p><code>[% field FILTER html %]</code> matches more than one field:
+ [%+ ambiguous.${field}.join(', ') FILTER html %]</p>
+ [% END %]
+
+ [% IF unknown.size %]
+ <p>The legal field names are
+ <a href="page.cgi?id=quicksearch.html#fields">listed here</a>.</p>
+ [% END %]
+
+ [% ELSIF error == "reassign_to_empty" %]
+ [% title = "Illegal Reassignment" %]
+ To reassign [% terms.abug %], you must provide an address for
+ the new assignee.
+
+ [% ELSIF error == "require_component" %]
+ [% title = "Component Needed" %]
+ To file this [% terms.bug %], you must first choose a component.
+ If necessary, just guess.
+
+ [% ELSIF error == "relationship_loop_single" %]
+ [% title = "Relationship Loop Detected" %]
+ [% field_descs.$field_name FILTER html %]
+ for [% terms.bug %] [%+ bug_id FILTER html %]
+ has a circular dependency on [% terms.bug %] [%+ dep_id FILTER html %].
+
+ [% ELSIF error == "request_queue_group_invalid" %]
+ The group field <em>[% group FILTER html %]</em> is invalid.
+
+ [% ELSIF error == "require_new_password" %]
+ [% title = "New Password Needed" %]
+ You cannot change your password without choosing a new one.
+
+ [% ELSIF error == "required_field" %]
+ [% title = "Field Must Be Set" %]
+ A value must be set for the '[% field_descs.${field.name} FILTER html %]'
+ field.
+
+ [% ELSIF error == "require_summary" %]
+ [% title = "Summary Needed" %]
+ You must enter a summary for this [% terms.bug %].
+
+ [% ELSIF error == "resolution_cant_clear" %]
+ [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %] is
+ closed, so you cannot clear its resolution.
+
+ [% ELSIF error == "resolution_not_allowed" %]
+ [% title = "Resolution Not Allowed" %]
+ You cannot set a resolution for open [% terms.bugs %].
+
+ [% ELSIF error == "saved_search_used_by_whines" %]
+ [% title = "Saved Search In Use" %]
+ [% docslinks = {'whining.html' => 'About Whining'} %]
+ The saved search <em>[% search_name FILTER html %]</em> is being used
+ by <a href="editwhines.cgi">Whining events</a> with the following subjects:
+ [%+ subjects FILTER html %]
+
+ [% ELSIF error == "search_content_without_matches" %]
+ [% title = "Illegal Search" %]
+ The "content" field can only be used with "matches" search
+ and the "matches" search can only be used with the "content"
+ field.
+
+ [% ELSIF error == "series_already_exists" %]
+ [% title = "Series Already Exists" %]
+ [% docslinks = {'reporting.html' => 'Reporting'} %]
+ A series named <em>[% series.category FILTER html %] /
+ [%+ series.subcategory FILTER html %] /
+ [%+ series.name FILTER html %]</em>
+ already exists.
+
+ [% ELSIF error == "sidebar_supports_mozilla_only" %]
+ Sorry - sidebar.cgi currently only supports Mozilla based web browsers.
+ <a href="http://www.mozilla.org">Upgrade today</a>. :-)
+
+ [% ELSIF error == "still_unresolved_bugs" %]
+ [% title = "Unresolved Dependencies" %]
+ [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %]
+ has [% dep_count FILTER none %] unresolved
+ [% IF dep_count == 1 %]
+ dependency
+ [% ELSE %]
+ dependencies
+ [% END %].
+ They must either be resolved or removed from the
+ "[% field_descs.dependson FILTER html %]" field before you can resolve
+ this [% terms.bug %] as [% display_value("resolution", "FIXED") FILTER html %].
+
+ [% ELSIF error == "sudo_invalid_cookie" %]
+ [% title = "Invalid Sudo Cookie" %]
+ Your sudo cookie is invalid. Either it expired or you didn't start
+ a sudo session correctly. Refresh the page or load another page
+ to continue what you are doing as yourself.
+
+ [% ELSIF error == "sudo_illegal_action" %]
+ [% title = "Impersonation Not Authorized" %]
+ [% IF NOT sudoer.in_group("bz_sudoers") %]
+ You are not allowed to impersonate users.
+ [% ELSIF target_user AND target_user.in_group("bz_sudo_protect") %]
+ You are not allowed to impersonate [% target_user.identity FILTER html %].
+ [% ELSE %]
+ The user you tried to impersonate doesn't exist.
+ [% END %]
+
+ [% ELSIF error == "sudo_in_progress" %]
+ [% title = "Session In Progress" %]
+ A sudo session (impersonating [% target FILTER html %]) is in progress.
+ End that session (using the link in the footer) before starting a new one.
+
+ [% ELSIF error == "sudo_password_required" %]
+ [% title = "Password Required" %]
+ Your [% terms.Bugzilla %] password is required to begin a sudo
+ session. Please <a href="relogin.cgi?action=prepare-sudo&amp;target_login=
+ [%- target_login FILTER url_quote %]&amp;reason=
+ [%- reason FILTER url_quote %]">go back</a> and enter your password.
+
+ [% ELSIF error == "sudo_preparation_required" %]
+ [% title = "Preparation Required" %]
+ You may not start a sudo session directly. Please
+ <a href="relogin.cgi?action=prepare-sudo&amp;target_login=
+ [%- target_login FILTER url_quote %]&amp;reason=
+ [%- reason FILTER url_quote %]">start your session normally</a>.
+
+ [% ELSIF error == "sudo_protected" %]
+ [% title = "User Protected" %]
+ The user [% login FILTER html %] may not be impersonated by sudoers.
+
+ [% ELSIF error == "token_does_not_exist" %]
+ [% title = "Token Does Not Exist" %]
+ The token you submitted does not exist, has expired, or has
+ been canceled.
+
+ [% ELSIF error == "too_soon_for_new_token" %]
+ [% title = "Too Soon For New Token" %]
+ You have requested
+ [% IF type == "password" %]
+ a password
+ [% ELSIF type == "account" %]
+ an account
+ [% END %]
+ token too recently to request another. Please wait a while and try again.
+
+ [% ELSIF error == "unknown_action" %]
+ [% IF action %]
+ Unknown action [% action FILTER html %]!
+ [% ELSE %]
+ I could not figure out what you wanted to do.
+ [% END %]
+
+ [% ELSIF error == "unknown_tab" %]
+ [% title = "Unknown Tab" %]
+ <code>[% current_tab_name FILTER html %]</code> is not a legal tab name.
+
+ [% ELSIF error == "version_already_exists" %]
+ [% title = "Version Already Exists" %]
+ [% admindocslinks = {'versions.html' => 'Administering versions'} %]
+ The version '[% name FILTER html %]' already exists for product '
+ [%- product FILTER html %]'.
+
+ [% ELSIF error == "version_blank_name" %]
+ [% title = "Blank Version Name Not Allowed" %]
+ You must enter a name for this version.
+
+ [% ELSIF error == "version_has_bugs" %]
+ [% title = BLOCK %]Version has [% terms.Bugs %][% END %]
+ There are [% nb FILTER html %] [%+ terms.bugs %] associated with this
+ version! You must reassign those [% terms.bugs %] to another version
+ before you can delete this one.
+
+ [% ELSIF error == "users_deletion_disabled" %]
+ [% title = "Deletion not activated" %]
+ [% admindocslinks = {'useradmin.html' => 'User administration'} %]
+ Sorry, the deletion of user accounts is not allowed.
+
+ [% ELSIF error == "user_has_responsibility" %]
+ [% title = "Can't Delete User Account" %]
+ [% admindocslinks = {'useradmin.html' => 'User administration'} %]
+ The user you want to delete is set up as the default [% terms.bug %]
+ assignee
+ [% IF Param('useqacontact') %]
+ or QA contact
+ [% END %]
+ for at least one component.
+ For this reason, you cannot delete the account at this time.
+
+ [% ELSIF error == "user_access_by_id_denied" %]
+ [% title = "User Access By Id Denied" %]
+ Logged-out users cannot use the "ids" argument to this function
+ to access any user information.
+
+ [% ELSIF error == "user_access_by_match_denied" %]
+ [% title = "User-Matching Denied" %]
+ Logged-out users cannot use the "match" argument to this function
+ to access any user information.
+
+ [% ELSIF error == "user_login_required" %]
+ [% title = "Login Name Required" %]
+ [% admindocslinks = {'useradmin.html' => 'User administration'} %]
+ You must enter a login name for the new user.
+
+ [% ELSIF error == "user_match_failed" %]
+ [% title = "Match Failed" %]
+ <tt>[% name FILTER html %]</tt> does not exist or you are not allowed
+ to see that user.
+
+ [% ELSIF error == "user_match_too_many" %]
+ [% title = "No Conclusive Match" %]
+ [% terms.Bugzilla %] cannot make a conclusive match for one or more
+ of the names and/or email addresses you entered for
+ the [% fields.join(', ') FILTER html %] field(s).
+
+ [% ELSIF error == "user_not_insider" %]
+ [% title = "User Not In Insidergroup" %]
+ Sorry, but you are not allowed to (un)mark comments or attachments
+ as private.
+
+ [% ELSIF error == "wrong_token_for_cancelling_email_change" %]
+ [% title = "Wrong Token" %]
+ That token cannot be used to cancel an email address change.
+
+ [% ELSIF error == "wrong_token_for_changing_passwd" %]
+ [% title = "Wrong Token" %]
+ That token cannot be used to change your password.
+
+ [% ELSIF error == "wrong_token_for_confirming_email_change" %]
+ [% title = "Wrong Token" %]
+ That token cannot be used to change your email address.
+
+ [% ELSIF error == "wrong_token_for_creating_account" %]
+ [% title = "Wrong Token" %]
+ That token cannot be used to create a user account.
+
+ [% ELSIF error == "xmlrpc_invalid_value" %]
+ "[% value FILTER html %]" is not a valid value for a
+ &lt;[% type FILTER html %]&gt; field. (See the XML-RPC specification
+ for details.)
+
+ [% ELSIF error == "zero_length_file" %]
+ [% title = "File Is Empty" %]
+ The file you are trying to attach is empty, does not exist, or you don't
+ have permission to read it.
+
+ [% ELSIF error == "illegal_user_id" %]
+ [% title = "Illegal User ID" %]
+ User ID '[% userid FILTER html %]' is not valid integer.
+
+ [% ELSE %]
+
+ [%# Try to find hooked error messages %]
+ [% error_message = Hook.process("errors") %]
+
+ [% IF not error_message %]
+ [% title = "Error string not found" %]
+ The user error string <code>[% error FILTER html %]</code> was not found.
+ Please send email to [% Param("maintainer") %] describing the steps taken
+ to obtain this message.
+ [% ELSE %]
+ [% error_message FILTER none %]
+ [% END %]
+ [% END %]
+[% END %]
+
+[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
+[% USE Bugzilla %]
+[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
+ [% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
+ [% error_message FILTER none %]
+ [% ELSE %]
+ [% error_message FILTER txt %]
+ [% END %]
+ [% RETURN %]
+[% END %]
+
+[% UNLESS header_done %]
+ [% PROCESS global/header.html.tmpl %]
+[% END %]
+
+[% PROCESS global/docslinks.html.tmpl
+ docslinks = docslinks
+ admindocslinks = admindocslinks
+%]
+
+<table cellpadding="20">
+ <tr>
+ <td id="error_msg" class="throw_error">
+ [% error_message FILTER none %]
+ </td>
+ </tr>
+</table>
+
+<p>
+ Please press <b>Back</b> and try again.
+</p>
+
+[%# If a saved search fails, people want the ability to edit or delete it.
+ # This is the best way of getting information about that possible saved
+ # search from any error call location. %]
+
+[% namedcmd = Bugzilla.cgi.param("namedcmd") %]
+[% sharer_id = Bugzilla.cgi.param("sharer_id") %]
+[% IF namedcmd AND error != "missing_query"
+ AND error != "saved_search_used_by_whines"
+ AND !sharer_id %]
+ <p>
+ Alternatively, you can
+ <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
+ [% namedcmd FILTER url_quote %]">forget</a>
+
+ [% FOREACH q = Bugzilla.user.queries %]
+ [% IF q.name == namedcmd %]
+ or <a href="query.cgi?[% q.url FILTER url_quote %]">edit</a>
+ [% END %]
+ [% END %]
+
+ the saved search '[% namedcmd FILTER html %]'.
+ </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+[% BLOCK object_name %]
+ [% IF class == "Bugzilla::Attachment" %]
+ attachment
+ [% ELSIF class == "Bugzilla::User" %]
+ user
+ [% ELSIF class == "Bugzilla::Classification" %]
+ classification
+ [% ELSIF class == "Bugzilla::Product" %]
+ product
+ [% ELSIF class == "Bugzilla::Component" %]
+ component
+ [% ELSIF class == "Bugzilla::Version" %]
+ version
+ [% ELSIF class == "Bugzilla::Milestone" %]
+ milestone
+ [% ELSIF class == "Bugzilla::Status" %]
+ status
+ [% ELSIF class == "Bugzilla::Flag" %]
+ flag
+ [% ELSIF class == "Bugzilla::FlagType" %]
+ flagtype
+ [% ELSIF class == "Bugzilla::Field" %]
+ field
+ [% ELSIF class == "Bugzilla::Group" %]
+ group
+ [% ELSIF class == "Bugzilla::Keyword" %]
+ keyword
+ [% ELSIF class == "Bugzilla::Search::Recent" %]
+ recent search
+ [% ELSIF class == "Bugzilla::Search::Saved" %]
+ saved search
+ [% ELSIF ( matches = class.match('^Bugzilla::Field::Choice::(.+)') ) %]
+ [% SET field_name = matches.0 %]
+ [% field_descs.$field_name FILTER html %]
+ [% END %]
+ [% Hook.process('end_object_name', 'global/user-error.html.tmpl') %]
+[% END %]