summaryrefslogtreecommitdiffstats
path: root/template/en/default/global
diff options
context:
space:
mode:
Diffstat (limited to 'template/en/default/global')
-rw-r--r--template/en/default/global/code-error.html.tmpl63
-rw-r--r--template/en/default/global/common-links.html.tmpl5
-rw-r--r--template/en/default/global/confirm-action.html.tmpl1
-rw-r--r--template/en/default/global/confirm-user-match.html.tmpl7
-rw-r--r--template/en/default/global/field-descs.none.tmpl13
-rw-r--r--template/en/default/global/footer.html.tmpl6
-rw-r--r--template/en/default/global/header.html.tmpl240
-rw-r--r--template/en/default/global/help.html.tmpl5
-rw-r--r--template/en/default/global/hidden-fields.html.tmpl2
-rw-r--r--template/en/default/global/messages.html.tmpl25
-rw-r--r--template/en/default/global/per-bug-queries.html.tmpl1
-rw-r--r--template/en/default/global/reason-descs.none.tmpl40
-rw-r--r--template/en/default/global/setting-descs.none.tmpl3
-rw-r--r--template/en/default/global/site-navigation.html.tmpl13
-rw-r--r--template/en/default/global/textarea.html.tmpl6
-rw-r--r--template/en/default/global/user-error.html.tmpl272
-rw-r--r--template/en/default/global/userselect.html.tmpl50
-rw-r--r--template/en/default/global/value-descs.js.tmpl33
-rw-r--r--template/en/default/global/variables.none.tmpl2
19 files changed, 445 insertions, 342 deletions
diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl
index 753695b..54e05f6 100644
--- a/template/en/default/global/code-error.html.tmpl
+++ b/template/en/default/global/code-error.html.tmpl
@@ -37,17 +37,7 @@
[% DEFAULT title = "Internal Error" %]
[% error_message = BLOCK %]
- [% IF error == "action_unrecognized" %]
- [% docslinks = {'query.html' => "Searching for $terms.bugs",
- 'query.html#list' => "$terms.Bug lists"} %]
- I don't recognize the value (<em>[% action FILTER html %]</em>)
- of the <em>action</em> variable.
-
- [% ELSIF error == "attachment_already_obsolete" %]
- Attachment #[% attach_id FILTER html %] ([% description FILTER html %])
- is already obsolete.
-
- [% ELSIF error == "attachment_local_storage_disabled" %]
+ [% IF error == "attachment_local_storage_disabled" %]
[% title = "Local Storage Disabled" %]
You cannot store attachments locally. This feature is disabled.
@@ -139,7 +129,7 @@
[% ELSIF error == "db_rename_conflict" %]
Name conflict: Cannot rename [% old FILTER html %] to
- [% new FILTER html %] because [% new FILTER html %] already exists.
+ [%+ new FILTER html %] because [% new FILTER html %] already exists.
[% ELSIF error == "cookies_need_value" %]
Every cookie must have a value.
@@ -156,6 +146,11 @@
address.
[% END %]
+ [% ELSIF error == "extension_disabled" %]
+ [% title = "Extension Disabled" %]
+ You cannot access this page because the extension '[% name FILTER html %]'
+ is disabled.
+
[% ELSIF error == "extension_must_be_subclass" %]
<code>[% package FILTER html %]</code> from
<code>[% filename FILTER html %]</code> is not a subclass of
@@ -216,13 +211,9 @@
[% ELSIF error == "illegal_field" %]
A legal [% field FILTER html %] was not set.
- [% ELSIF error == "inactive_group" %]
- Attempted to add [% terms.bug %] to the '[% name FILTER html %]'
- group, which is not used for [% terms.bugs %].
-
[% ELSIF error == "invalid_attach_id_to_obsolete" %]
The attachment number of one of the attachments you wanted to obsolete,
- [% attach_id FILTER html %], is invalid.
+ [%+ attach_id FILTER html %], is invalid.
[% ELSIF error == "invalid_customfield_type" %]
[% title = "Invalid Field Type" %]
@@ -260,7 +251,7 @@
Attachment [% attach_id FILTER html %] ([% description FILTER html %])
is attached to [% terms.bug %] [%+ attach_bug_id FILTER html %],
but you tried to flag it as obsolete while creating a new attachment to
- [% terms.bug %] [%+ my_bug_id FILTER html %].
+ [%+ terms.bug %] [%+ my_bug_id FILTER html %].
[% ELSIF error == "feature_disabled" %]
The [% install_string("feature_$feature") FILTER html %] feature is not
@@ -281,13 +272,6 @@
You can't ask a specific person for
<em>[% type.name FILTER html %]</em>.
- [% ELSIF error == "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_inactive" %]
[% title = "Inactive Flag Type" %]
The flag type [% type FILTER html %] is inactive and cannot be used
@@ -356,7 +340,7 @@
[% ELSIF error == "mail_send_error" %]
There was an error sending mail from '[% mail.header('From') FILTER html %]'
to '[% mail.header('To') FILTER html %]':
- [% msg FILTER html %]
+ [%+ msg FILTER html %]
[% ELSIF error == "missing_bug_id" %]
No [% terms.bug %] ID was given.
@@ -370,14 +354,10 @@
[% ELSIF error == "need_quipid" %]
A valid quipid is needed.
- [% ELSIF error == "no_manual_moved" %]
- You cannot set the resolution of [% terms.abug %] to [% display_value("resolution", "MOVED") FILTER html %] without
- moving the [% terms.bug %].
-
- [% ELSIF error == "no_open_bug_status" %]
- [% title = "$terms.Bug Cannot Be Confirmed" %]
- There is no valid transition from
- [%+ display_value("bug_status", "UNCONFIRMED") FILTER html %] to an open state.
+ [% ELSIF error == "object_dep_sort_loop" %]
+ There is a loop in VALIDATOR_DEPENDENCIES involving
+ '[%+ field FILTER html %]'. Here are the fields we considered:
+ [%+ considered.join(', ') FILTER html %].
[% ELSIF error == "param_invalid" %]
[% title = "Invalid Parameter" %]
@@ -431,9 +411,6 @@
An error occurred while preparing for a RADIUS authentication request:
<code>[% errstr FILTER html %]</code>.
- [% ELSIF error == "request_queue_group_invalid" %]
- The group field <em>[% group FILTER html %]</em> is invalid.
-
[% ELSIF error == "report_axis_invalid" %]
<em>[% val FILTER html %]</em> is not a valid value for
[%+ IF fld == "x" %]the horizontal axis
@@ -443,7 +420,7 @@
[% ELSIF error == "setting_info_invalid" %]
To create a new setting, you must supply a setting name, a list of
- value/sortindex pairs, and the devault value.
+ value/sortindex pairs, and the default value.
[% ELSIF error == "setting_name_invalid" %]
The setting name <em>[% name FILTER html %]</em> is not a valid
@@ -473,13 +450,6 @@
[% ELSIF error == "undefined_field" %]
Form field [% field FILTER html %] was not defined.
- [% 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_method" %]
The requested method '[% method FILTER html %]' was not found.
@@ -562,6 +532,9 @@
</tr>
</table>
+<p>Traceback:</p>
+<pre>[% traceback FILTER html %]</pre>
+
[% IF variables %]
<pre>
Variables:
diff --git a/template/en/default/global/common-links.html.tmpl b/template/en/default/global/common-links.html.tmpl
index a0d080a..6f99a64 100644
--- a/template/en/default/global/common-links.html.tmpl
+++ b/template/en/default/global/common-links.html.tmpl
@@ -24,7 +24,7 @@
<ul class="links">
<li><a href="./">Home</a></li>
- <li><span class="separator">| </span><a href="enter_bug.cgi?format=guided&classification=__all">New</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>
@@ -34,7 +34,8 @@
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">
+ <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>
diff --git a/template/en/default/global/confirm-action.html.tmpl b/template/en/default/global/confirm-action.html.tmpl
index e57a83c..9f9be31 100644
--- a/template/en/default/global/confirm-action.html.tmpl
+++ b/template/en/default/global/confirm-action.html.tmpl
@@ -27,6 +27,7 @@
style_urls = ['skins/standard/global.css'] %]
<div class="throw_error">
+<!--reason=[%reason FILTER html %]-->
[% IF reason == "expired_token" %]
Your changes have been rejected because you exceeded the time limit
of [% constants.MAX_TOKEN_AGE FILTER html %] days before submitting your
diff --git a/template/en/default/global/confirm-user-match.html.tmpl b/template/en/default/global/confirm-user-match.html.tmpl
index 67a901f..5549b51 100644
--- a/template/en/default/global/confirm-user-match.html.tmpl
+++ b/template/en/default/global/confirm-user-match.html.tmpl
@@ -150,6 +150,8 @@
[% ELSE %]
matched
<b>[% query.value.users.0.identity FILTER html %]</b>
+ <input type="hidden" name="[% field.key FILTER html %]"
+ value="[% query.value.users.0.login FILTER html %]">
[% END %]
[% ELSE %]
[% IF (query.key.length < 3) && !Param('emailsuffix') %]
@@ -174,7 +176,10 @@
[% IF matchsuccess == 1 %]
- [% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %]
+ [% SET exclude_these =
+ matches.keys.merge(['Bugzilla_login', 'Bugzilla_password']) %]
+ [% SET exclude = '^' _ exclude_these.join('|') _ '$' %]
+ [% PROCESS "global/hidden-fields.html.tmpl" exclude = exclude %]
<p>
<input type="submit" id="continue" value="Continue">
diff --git a/template/en/default/global/field-descs.none.tmpl b/template/en/default/global/field-descs.none.tmpl
index 0c17e57..57af42a 100644
--- a/template/en/default/global/field-descs.none.tmpl
+++ b/template/en/default/global/field-descs.none.tmpl
@@ -68,13 +68,13 @@
[% value_descs = {
"bug_status" => {
# "UNCONFIRMED" => "UNCO",
- # "NEW" => "NEWISH",
+ # "CONFIRMED" => "ITSABUG",
},
"resolution" => {
"" => "---",
- # "FIXED" => "NO LONGER AN ISSUE",
- # "MOVED" => "BYE-BYE",
+ # "FIXED" => "NO LONGER AN ISSUE",
+ # "WORKSFORME" => "NOTMYPROBLEM!",
},
} %]
@@ -100,6 +100,7 @@
"actual_time" => "Actual Hours",
"alias" => "Alias",
"assigned_to" => "Assignee",
+ "assigned_to_realname" => "Assignee Real Name",
"attach_data.thedata" => "Attachment data",
"attachments.description" => "Attachment description",
"attachments.filename" => "Attachment filename",
@@ -124,6 +125,7 @@
"component" => "Component",
"content" => "Content",
"creation_ts" => "Creation date",
+ "days_elapsed" => "Days since $terms.bug changed",
"deadline" => "Deadline",
"delta_ts" => "Changed",
"dependson" => "Depends on",
@@ -143,10 +145,12 @@
"product_id" => "Product ID",
"product" => "Product",
"qa_contact" => "QA Contact",
+ "qa_contact_realname" => "QA Contact Real Name",
"remaining_time" => "Hours Left",
"rep_platform" => "Hardware",
"reporter" => "Reporter",
"reporter_accessible" => "Reporter accessible",
+ "reporter_realname" => "Reporter Real Name",
"requestees.login_name" => "Flag Requestee",
"resolution" => "Resolution",
"see_also" => "See Also",
@@ -157,7 +161,6 @@
"status_whiteboard" => "Whiteboard",
"target_milestone" => "Target Milestone",
"version" => "Version",
- "votes" => "Votes"
"work_time" => "Hours Worked",
} %]
@@ -171,6 +174,8 @@
IF !vars.field_descs.${bz_field.name}.defined %]
[% END %]
[% END %]
+
+ [% PROCESS "bug/field-help.none.tmpl" %]
[% END %]
[% Hook.process("end") %]
diff --git a/template/en/default/global/footer.html.tmpl b/template/en/default/global/footer.html.tmpl
index 0379f02..661f8af 100644
--- a/template/en/default/global/footer.html.tmpl
+++ b/template/en/default/global/footer.html.tmpl
@@ -33,7 +33,7 @@
#%]
<div id="footer">
- <div class="intro"></div>
+ <div class="intro">[% Hook.process('intro') %]</div>
[%# Migration note: the old param 'blurbhtml' goes here %]
@@ -41,9 +41,11 @@
[% PROCESS "global/useful-links.html.tmpl" %]
- <div class="outro"></div>
+ <div class="outro">[% Hook.process('outro') %]</div>
</div>
+[% Hook.process("end") %]
+
</body>
</html>
diff --git a/template/en/default/global/header.html.tmpl b/template/en/default/global/header.html.tmpl
index 017701f..4030435 100644
--- a/template/en/default/global/header.html.tmpl
+++ b/template/en/default/global/header.html.tmpl
@@ -46,8 +46,41 @@
header_addl_info = ""
onload = ""
style_urls = []
+ yui = []
%]
+[% SET yui_css = {
+ autocomplete => 1,
+ calendar => 1,
+ datatable => 1,
+ button => 1,
+} %]
+
+[%# Note: This is simple dependency resolution--you can't have dependencies
+ # that depend on each other. You have to specify all of a module's deps,
+ # if that module is going to be specified in "yui".
+ #%]
+[% SET yui_deps = {
+ autocomplete => ['json', 'connection', 'datasource'],
+ datatable => ['json', 'connection', 'datasource', 'element'],
+} %]
+
+[%# When using certain YUI modules, we need to process certain
+ # extra JS templates.
+ #%]
+[% SET yui_templates = {
+ datatable => ['global/value-descs.js.tmpl'],
+} %]
+
+[%# These are JS URLs that are *always* on the page and come before
+ # every other JS URL.
+ #%]
+[% SET starting_js_urls = [
+ "js/yui/yahoo-dom-event/yahoo-dom-event.js",
+ "js/yui/cookie/cookie-min.js",
+] %]
+
+
[%# We should be able to set the default value of the header variable
# to the value of the title variable using the DEFAULT directive,
# but that doesn't work if a caller sets header to the empty string
@@ -70,96 +103,33 @@
[% PROCESS 'global/setting-descs.none.tmpl' %]
- [%# Set up the skin CSS cascade:
- # 1. Standard Bugzilla stylesheet set (persistent)
- # 2. Standard Bugzilla stylesheet set (selectable)
- # 3. All third-party "skin" stylesheet sets (selectable)
- # 4. Page-specific styles
- # 5. Custom Bugzilla stylesheet set (persistent)
- # "Selectable" skin file sets may be either preferred or alternate.
- # Exactly one is preferred, determined by the "skin" user preference.
- #%]
- [% IF user.settings.skin.value != 'standard' %]
- [% user_skin = user.settings.skin.value %]
- [% END %]
- [% style_urls.unshift('skins/standard/global.css') %]
+ [% SET yui = yui_resolve_deps(yui, yui_deps) %]
+ [% SET css_sets = css_files(style_urls, yui, yui_css) %]
[%# CSS cascade, part 1: Standard Bugzilla stylesheet set (persistent).
# Always present.
#%]
- [% FOREACH style_url = style_urls %]
- <link href="[% style_url FILTER html %]"
- rel="stylesheet"
- type="text/css">
+ [%# This allows people to switch back to the "Classic" skin if they
+ # are in another skin.
+ #%]
+ <link href="[% 'skins/standard/global.css' FILTER mtime FILTER html %]"
+ rel="alternate stylesheet"
+ title="[% setting_descs.standard FILTER html %]">
+ [% FOREACH style_url = css_sets.standard %]
+ [% PROCESS format_css_link css_set_name = 'standard' %]
[% END %]
- <!--[if lte IE 7]>
- [%# Internet Explorer treats [if IE] HTML comments as uncommented.
- # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
- # and below.
- #%]
- <link href="skins/standard/IE-fixes.css"
- rel="stylesheet"
- type="text/css">
- <![endif]-->
- [%# CSS cascade, part 2: Standard Bugzilla stylesheet set (selectable)
- # Present if skin selection is enabled.
+ [%# CSS cascade, part 2 & 3: Third-party stylesheet set (selected and
+ # selectable). All third-party skins are present as alternate
+ # stylesheets, even if they are not currently in use.
#%]
- [% IF user.settings.skin.is_enabled %]
- [% FOREACH style_url = style_urls %]
- <link href="[% style_url FILTER html %]"
- rel="[% 'alternate ' IF user_skin %]stylesheet"
- title="[% setting_descs.standard FILTER html %]"
- type="text/css">
- [% END %]
- <!--[if lte IE 7]>
- [%# Internet Explorer treats [if IE] HTML comments as uncommented.
- # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
- # and below.
- #%]
- <link href="skins/standard/IE-fixes.css"
- rel="[% 'alternate ' IF user_skin %]stylesheet"
- title="[% setting_descs.standard FILTER html %]"
- type="text/css">
- <![endif]-->
+ [% FOREACH style_url = css_sets.skin %]
+ [% PROCESS format_css_link css_set_name = user.settings.skin.value %]
[% END %]
- [%# CSS cascade, part 3: Third-party stylesheet set (selectable).
- # All third-party skins are present if skin selection is enabled.
- # The admin-selected skin is always present.
- #%]
- [% FOREACH contrib_skin = user.settings.skin.legal_values %]
- [% NEXT IF contrib_skin == 'standard' %]
- [% NEXT UNLESS contrib_skin == user_skin
- OR user.settings.skin.is_enabled %]
- [% contrib_skin = contrib_skin FILTER url_quote %]
- [% IF contrib_skin.match('\.css$') %]
- [%# 1st skin variant: single-file stylesheet %]
- <link href="[% "skins/contrib/$contrib_skin" %]"
- rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
- title="[% contrib_skin FILTER html %]"
- type="text/css">
- [% ELSE %]
- [%# 2nd skin variant: stylesheet set %]
- [% FOREACH style_url = style_urls %]
- [% IF style_url.match('^skins/standard/') %]
- <link href="[% style_url.replace('^skins/standard/',
- "skins/contrib/$contrib_skin/") %]"
- rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
- title="[% contrib_skin FILTER html %]"
- type="text/css">
- [% END %]
- [% END %]
- <!--[if lte IE 7]>
- [%# Internet Explorer treats [if IE] HTML comments as uncommented.
- # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
- # and below.
- #%]
- <link href="skins/contrib/[% contrib_skin FILTER html %]/IE-fixes.css"
- rel="[% 'alternate ' UNLESS contrib_skin == user_skin %]stylesheet"
- title="[% contrib_skin FILTER html %]"
- type="text/css">
- <![endif]-->
+ [% FOREACH alternate_skin = css_sets.alternate.keys %]
+ [% FOREACH style_url = css_sets.alternate.$alternate_skin %]
+ [% PROCESS format_css_link css_set_name = alternate_skin %]
[% END %]
[% END %]
@@ -175,29 +145,29 @@
# Always present. Site administrators may override all other style
# definitions, including skins, using custom stylesheets.
#%]
- [% FOREACH style_url = style_urls %]
- [% IF style_url.match('^skins/standard/') %]
- <link href="[% style_url.replace('^skins/standard/', "skins/custom/")
- FILTER html %]" rel="stylesheet" type="text/css">
- [% END %]
+ [% FOREACH style_url = css_sets.custom %]
+ [% PROCESS format_css_link css_set_name = 'standard' %]
[% END %]
- <!--[if lte IE 7]>
- [%# Internet Explorer treats [if IE] HTML comments as uncommented.
- # Use it to import CSS fixes so that Bugzilla looks decent on IE 7
- # and below.
- #%]
- <link href="skins/custom/IE-fixes.css"
- rel="stylesheet"
- type="text/css">
- <![endif]-->
-
- <script src="js/yui/yahoo-dom-event.js" type="text/javascript"></script>
- <script src="js/yui/cookie.js" type="text/javascript"></script>
- <script src="js/global.js" type="text/javascript"></script>
+
+ [%# YUI Scripts %]
+ [% FOREACH yui_name = yui %]
+ [% starting_js_urls.push("js/yui/$yui_name/${yui_name}-min.js") %]
+ [% END %]
+ [% starting_js_urls.push('js/global.js') %]
+
+ [% FOREACH javascript_url = starting_js_urls %]
+ [% PROCESS format_js_link %]
+ [% END %]
+
<script type="text/javascript">
<!--
YAHOO.namespace('bugzilla');
- if (YAHOO.env.ua.gecko) {
+ YAHOO.util.Event.addListener = function (el, sType, fn, obj, overrideContext) {
+ if ( ("onpagehide" in window || YAHOO.env.ua.gecko) && sType === "unload") { sType = "pagehide"; };
+ var capture = ((sType == "focusin" || sType == "focusout") && !YAHOO.env.ua.ie) ? true : false;
+ return this._addListener(el, this._getType(sType), fn, obj, overrideContext, capture);
+ };
+ if ( "onpagehide" in window || YAHOO.env.ua.gecko) {
YAHOO.util.Event._simpleRemove(window, "unload",
YAHOO.util.Event._unload);
}
@@ -219,24 +189,39 @@
#%]
var BUGZILLA = {
param: {
- cookiepath: '[% Param('cookiepath') FILTER js %]'
+ cookiepath: '[% Param('cookiepath') FILTER js %]',
+ maxusermatches: [% Param('maxusermatches') FILTER js %]
},
string: {
+ [%# Please keep these in alphabetical order. %]
+
attach_desc_required:
- 'You must enter a Description for this attachment.'
+ 'You must enter a Description for this attachment.',
+ component_required:
+ 'You must select a Component for this [% terms.bug %].',
+ description_required:
+ 'You must enter a Description for this [% terms.bug %].',
+ short_desc_required:
+ 'You must enter a Summary for this [% terms.bug %].',
+ version_required:
+ 'You must select a Version for this [% terms.bug %].'
}
};
+
+ [% FOREACH yui_name = yui %]
+ [% FOREACH yui_template = yui_templates.$yui_name %]
+ [% PROCESS $yui_template %]
+ [% END %]
+ [% END %]
[% IF javascript %]
[% javascript %]
[% END %]
// -->
</script>
- [% IF javascript_urls %]
- [% FOREACH javascript_url = javascript_urls %]
- <script src="[% javascript_url FILTER html %]" type="text/javascript"></script>
- [% END %]
+ [% FOREACH javascript_url = javascript_urls %]
+ [% PROCESS format_js_link %]
[% END %]
[%# this puts the live bookmark up on firefox for the Atom feed %]
@@ -251,7 +236,6 @@
title="[% terms.Bugzilla %]" href="./search_plugin.cgi">
<link rel="icon" type="image/png" href="https://www.mageia.org/g/favicon.png">
[% Hook.process("additional_header") %]
- <meta name="google-site-verification" content="upEZjJeSjjjVNCMOM2xZNi5PmRgMOY9SCtW3xmGY6nQ">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(["_setAccount", "UA-18603191-3"]);
@@ -274,13 +258,11 @@
class="[% urlbase.replace('^https?://','').replace('/$','').replace('[-~@:/.]+','-') %]
[% FOREACH class = bodyclasses %]
[% ' ' %][% class FILTER css_class_quote %]
- [% END %]">
+ [% END %] yui-skin-sam">
[%# Migration note: the following file corresponds to the old Param
# 'bannerhtml'
#%]
-
- [% PROCESS "global/mageia-global-navigation.html.tmpl" %]
<div id="header">
@@ -337,3 +319,41 @@
[% IF message %]
<div id="message">[% message %]</div>
[% END %]
+
+[% BLOCK format_css_link %]
+ [% IF style_url.match('/IE-fixes\.css') %]
+ <!--[if lte IE 7]>
+ [%# Internet Explorer treats [if IE] HTML comments as uncommented.
+ # We use it to import CSS fixes so that Bugzilla looks decent on IE 7
+ # and below.
+ #%]
+ [% END %]
+
+ [% IF css_set_name == 'standard'
+ OR css_set_name == user.settings.skin.value
+ %]
+ [% SET css_rel = 'stylesheet' %]
+ [% SET css_set_display_name = setting_descs.${user.settings.skin.value}
+ || user.settings.skin.value %]
+ [% ELSE %]
+ [% SET css_rel = 'alternate stylesheet' %]
+ [% SET css_set_display_name = setting_descs.$css_set_name || css_set_name %]
+ [% END %]
+
+ [% IF css_set_name == 'standard' %]
+ [% SET css_title_link = '' %]
+ [% ELSE %]
+ [% css_title_link = BLOCK ~%]
+ title="[% css_set_display_name FILTER html %]"
+ [% END %]
+ [% END %]
+
+ <link href="[% style_url FILTER html %]" rel="[% css_rel FILTER none %]"
+ type="text/css" [% css_title_link FILTER none %]>
+
+ [% '<![endif]-->' IF style_url.match('/IE-fixes\.css') %]
+[% END %]
+
+[% BLOCK format_js_link %]
+ <script type="text/javascript" src="[% javascript_url FILTER mtime FILTER html %]"></script>
+[% END %]
diff --git a/template/en/default/global/help.html.tmpl b/template/en/default/global/help.html.tmpl
index 36439bc..c0ff819 100644
--- a/template/en/default/global/help.html.tmpl
+++ b/template/en/default/global/help.html.tmpl
@@ -23,8 +23,9 @@
[% IF cgi.param("help") %]
<script type="text/javascript"> <!--
- [% FOREACH h = help_html %]
- g_helpTexts["[% h.id FILTER js %]"] = "[%- h.html FILTER js -%]";
+ [% FOREACH help_name = help_html.keys %]
+ g_helpTexts["[% help_name FILTER js %]"] =
+ "[%- help_html.$help_name FILTER js -%]";
[% END %]
// -->
</script>
diff --git a/template/en/default/global/hidden-fields.html.tmpl b/template/en/default/global/hidden-fields.html.tmpl
index 24f15c4..c141c64 100644
--- a/template/en/default/global/hidden-fields.html.tmpl
+++ b/template/en/default/global/hidden-fields.html.tmpl
@@ -52,7 +52,7 @@
[% ELSE %]
[% FOREACH mvalue = cgi.param(field).slice(0) %]
<input type="hidden" name="[% field FILTER html %]"
- value="[% mvalue FILTER html FILTER html_linebreak %]">
+ value="[% mvalue FILTER html_linebreak %]">
[% END %]
[% END %]
[% END %]
diff --git a/template/en/default/global/messages.html.tmpl b/template/en/default/global/messages.html.tmpl
index 7351aa0..52502a1 100644
--- a/template/en/default/global/messages.html.tmpl
+++ b/template/en/default/global/messages.html.tmpl
@@ -144,7 +144,7 @@
[% ELSIF message_tag == "buglist_query_gone" %]
[% title = "Search is gone" %]
- [% link = "Go back to the search page." %]
+ [% link = "Un-forget the search" %]
OK, the <b>[% namedcmd FILTER html %]</b> search is gone.
[% ELSIF message_tag == "buglist_sorted_by_relevance" %]
@@ -455,10 +455,6 @@
[% ELSIF message_tag == "keyword_deleted" %]
[% title = "Keyword Deleted" %]
The <em>[% keyword.name FILTER html %]</em> keyword has been deleted.
- <b>After you have finished editing keywords, you need to
- <a href="sanitycheck.cgi?rebuildkeywordcache=1">rebuild the keyword
- cache</a></b> (on a very large installation of [% terms.Bugzilla %],
- this can take several minutes).
[% ELSIF message_tag == "keyword_updated" %]
[% title = "Keyword Updated" %]
@@ -467,13 +463,7 @@
been saved:
<ul>
[% IF changes.name.defined %]
- <li>
- Keyword renamed to <em>[% keyword.name FILTER html %]</em>.
- <b>After you have finished editing keywords, you need to
- <a href="sanitycheck.cgi?rebuildkeywordcache=1">rebuild
- the keyword cache</a></b> (on a very large installation
- of [% terms.Bugzilla %], this can take several minutes).
- </li>
+ <li>Keyword renamed to <em>[% keyword.name FILTER html %]</em>.</li>
[% END %]
[% IF changes.description.defined %]
<li>Description updated to <em>[% keyword.description FILTER html %]</em></li>
@@ -568,7 +558,7 @@
[% FOREACH param = param_changed %]
Changed <em>[% param FILTER html %]</em><br>
[% IF param == 'utf8' && Param('utf8') %]
- <strong>You must now re-run checksetup.pl.</strong><br>
+ <strong>You must now re-run <kbd>checksetup.pl</kbd>.</strong><br>
[% END %]
[% END %]
[% ELSE %]
@@ -658,7 +648,7 @@
[% ELSIF message_tag == "install_fk_invalid" %]
ERROR: There are invalid values for the [% column FILTER html %] column in the [% table FILTER html %]
table. (These values do not exist in the [% foreign_table FILTER html %] table, in the
- [% foreign_column FILTER html %] column.)
+ [%+ foreign_column FILTER html %] column.)
Before continuing with checksetup, you will need to fix these values,
either by deleting these rows from the database, or changing the values
@@ -725,6 +715,9 @@
Verify that the file permissions in your [% terms.Bugzilla %] directory are
suitable for your system. Avoid unnecessary write access.
+ [% ELSIF message_tag == "install_workflow_init" %]
+ Setting up the default status workflow...
+
[% ELSIF message_tag == "product_created" %]
[% title = "Product Created" %]
The product <em>[% product.name FILTER html %]</em> has been created. You will need to
@@ -836,6 +829,10 @@
No changes made to version <em>[% version.name FILTER html %]</em>.
[% END %]
+ [% ELSIF message_tag == "whine_query_failed" %]
+ The query '[% query_name FILTER html %]' from [% author.login FILTER html %]
+ failed: [% reason FILTER html %]
+
[% ELSIF message_tag == "workflow_updated" %]
The workflow has been updated.
[% END %]
diff --git a/template/en/default/global/per-bug-queries.html.tmpl b/template/en/default/global/per-bug-queries.html.tmpl
index 3c62e35..a7c073b 100644
--- a/template/en/default/global/per-bug-queries.html.tmpl
+++ b/template/en/default/global/per-bug-queries.html.tmpl
@@ -63,6 +63,7 @@
<input type="hidden" name="cmdtype" value="doit">
<input type="hidden" name="remtype" value="asnamed">
<input type="hidden" name="list_of_bugs" value="1">
+ <input type="hidden" name="token" value="[% issue_hash_token(['savedsearch']) FILTER html %]">
<select id="lob_action" name="action" onchange="update_text();">
<option value="add">Add</option>
[% IF lists_of_bugs.size %]
diff --git a/template/en/default/global/reason-descs.none.tmpl b/template/en/default/global/reason-descs.none.tmpl
new file mode 100644
index 0000000..426085f
--- /dev/null
+++ b/template/en/default/global/reason-descs.none.tmpl
@@ -0,0 +1,40 @@
+[%# 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 Everything Solved, Inc.
+ # Portions created by the Initial Developer are Copyright (C) 2010
+ # the Initial Developer. All Rights Reserved.
+ #
+ # Contributor(s):
+ # Max Kanat-Alexander <mkanat@bugzilla.org>
+ #%]
+
+[% SET reason_descs = {
+ ${constants.REL_ASSIGNEE} => "You are the assignee for the ${terms.bug}.",
+ ${constants.REL_REPORTER} => "You reported the ${terms.bug}.",
+ ${constants.REL_QA} => "You are the QA Contact for the ${terms.bug}.",
+ ${constants.REL_CC} => "You are on the CC list for the ${terms.bug}.",
+ ${constants.REL_GLOBAL_WATCHER} => "You are watching all $terms.bug changes.",
+} %]
+
+[% SET watch_reason_descs => {
+ ${constants.REL_ASSIGNEE} =>
+ "You are watching the assignee of the ${terms.bug}.",
+ ${constants.REL_REPORTER} =>
+ "You are watching the reporter of the ${terms.bug}.",
+ ${constants.REL_QA} =>
+ "You are watching the QA Contact of the ${terms.bug}.",
+ ${constants.REL_CC} =>
+ "You are watching someone on the CC list of the ${terms.bug}.",
+} %]
+
+[% Hook.process('end') %]
diff --git a/template/en/default/global/setting-descs.none.tmpl b/template/en/default/global/setting-descs.none.tmpl
index 661334c..e96e316 100644
--- a/template/en/default/global/setting-descs.none.tmpl
+++ b/template/en/default/global/setting-descs.none.tmpl
@@ -43,6 +43,9 @@
"quote_replies" => "Quote the associated comment when you click on its reply link",
"quoted_reply" => "Quote the full comment",
"simple_reply" => "Reference the comment number only",
+ "comment_box_position" => "Position of the Additional Comments box",
+ "before_comments" => "Before other comments",
+ "after_comments" => "After other comments",
"timezone" => "Timezone used to display dates and times",
"local" => "Same as the server",
}
diff --git a/template/en/default/global/site-navigation.html.tmpl b/template/en/default/global/site-navigation.html.tmpl
index df60b76..60a8ddf 100644
--- a/template/en/default/global/site-navigation.html.tmpl
+++ b/template/en/default/global/site-navigation.html.tmpl
@@ -37,7 +37,7 @@
[% END %]
- [%# *** Dependencies, Votes, Activity, Print-version *** %]
+ [%# *** Dependencies, Activity, Print-version *** %]
[% IF bug %]
<link rel="Show" title="Dependency Tree"
href="showdependencytree.cgi?id=[% bug.bug_id %]&amp;hide_resolved=1">
@@ -46,11 +46,6 @@
href="showdependencygraph.cgi?id=[% bug.bug_id %]">
[% END %]
- [% IF bug.use_votes %]
- <link rel="Show" title="Votes ([% bug.votes %])"
- href="votes.cgi?action=show_bug&amp;bug_id=[% bug.bug_id %]">
- [% END %]
-
<link rel="Show" title="[% terms.Bug %] Activity"
href="show_activity.cgi?id=[% bug.bug_id %]">
<link rel="Show" title="Printer-Friendly Version"
@@ -65,12 +60,6 @@
href="[% Param('mybugstemplate').replace('%userid%', user_login) %]">
[% END %]
- [% FOREACH q = user.queries %]
- <link rel="Saved&nbsp;Searches"
- title="[% q.name FILTER html %]"
- href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]">
- [% END %]
-
[% FOREACH q = user.queries_subscribed %]
<link rel="Saved&nbsp;Search"
title="[% q.name FILTER html %] ([% q.user.login FILTER html %])"
diff --git a/template/en/default/global/textarea.html.tmpl b/template/en/default/global/textarea.html.tmpl
index d20422e..c158615 100644
--- a/template/en/default/global/textarea.html.tmpl
+++ b/template/en/default/global/textarea.html.tmpl
@@ -31,6 +31,8 @@
# minrows will be used.
# cols: (required) Number of columns the textarea shall have.
# defaultcontent: (optional) Default content for the textarea.
+ # mandatory: (optional) Boolean specifying whether or not the textarea
+ # is mandatory.
#%]
<textarea [% IF name %]name="[% name FILTER html %]"[% END %]
@@ -39,6 +41,7 @@
[% IF style %] style="[% style FILTER html %]"[% END %]
[% IF classes %] class="[% classes FILTER html %]"[% END %]
[% IF wrap %] wrap="[% wrap FILTER html %]"[% END %]
+ [% IF disabled %] disabled="disabled"[% END %]
[% IF defaultrows && user.settings.zoom_textareas.value == 'off' %]
rows="[% defaultrows FILTER html %]"
[% ELSE %]
@@ -47,4 +50,7 @@
cols="[% cols FILTER html %]"
[% IF maxrows && user.settings.zoom_textareas.value == 'on' %]
onFocus="this.rows=[% maxrows FILTER html %]"
+ [% END %]
+ [% IF mandatory %]
+ aria-required="true"
[% END %]>[% defaultcontent FILTER html %]</textarea>
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 4698c94..2001f77 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -109,6 +109,11 @@
[% 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
@@ -145,8 +150,6 @@
delete
[% ELSIF action == "edit" %]
add, modify or delete
- [% ELSIF action == "move" %]
- move
[% ELSIF action == "run" %]
run
[% ELSIF action == "schedule" %]
@@ -155,6 +158,8 @@
use
[% ELSIF action == "approve" %]
approve
+ [% ELSE %]
+ [%+ Hook.process('auth_failure_action') %]
[% END %]
[% IF object == "administrative_pages" %]
@@ -214,6 +219,8 @@
versions
[% ELSIF object == "workflow" %]
the workflow
+ [% ELSE %]
+ [%+ Hook.process('auth_failure_object') %]
[% END %].
[% Hook.process("auth_failure") %]
@@ -250,9 +257,17 @@
<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' %]
- [%+ terms.Bug %] URLs should point to <code>show_bug.cgi</code>
- in a [% terms.Bugzilla %] installation.
+ [%+ 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 %]
@@ -505,7 +520,7 @@
it controls the visibility of the following fields:
[%+ fields.join(', ') FILTER html %].
[% END %]
- [% ' and ' IF fields.size AND vals.size %]
+ [% ' Also, ' IF fields.size AND vals.size %]
[% IF vals.size %]
it controls the visibility of the following field values:
<ul>
@@ -521,7 +536,8 @@
[% 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.
+ 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.
@@ -541,9 +557,9 @@
[% ELSIF error == "fieldvalue_not_deletable" %]
[% title = "Field Value Not Deletable" %]
- The value '[% value.name FILTER html %]' cannot be removed because
- it plays some special role for the '[% field.description FILTER html %]'
- field.
+ 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" %]
@@ -560,7 +576,7 @@
[% 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
+ [%+ field.description FILTER html %] field, because there are still
[%+ value.bug_count FILTER html %] [%+ terms.bugs %] using it.
[% ELSIF error == "fieldvalue_undefined" %]
@@ -574,7 +590,7 @@
[% ELSIF error == "file_too_large" %]
[% title = "File Too Large" %]
The file you are trying to attach is [% filesize FILTER html %]
- kilobytes (KB) in size. Non-patch attachments cannot be more than
+ 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") %]
@@ -625,6 +641,14 @@
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'} %]
@@ -676,10 +700,10 @@
[% ELSIF error == "freetext_too_long" %]
[% title = "Text Too Long" %]
- The text you entered is too long ([% text.length FILTER html %] characters,
- above the maximum length allowed of [% constants.MAX_FREETEXT_LENGTH FILTER none %]
- characters):
- <p><em>[% text FILTER html %]</em></p>
+ 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" %]
@@ -690,12 +714,6 @@
in the database which refer to it. All references to this group must
be removed before you can remove it.
- [% ELSIF error == "group_change_denied" %]
- [% title = "Cannot Add/Remove That Group" %]
- You tried to add or remove group id [% group_id FILTER html %]
- from [% terms.bug %] [%+ bug.id FILTER html %], but you do not
- have permissions to do so.
-
[% ELSIF error == "group_exists" %]
[% title = "The group already exists" %]
The group [% name FILTER html %] already exists.
@@ -716,16 +734,17 @@
[% ELSIF error == "group_invalid_removal" %]
- You tried to remove [% terms.bug %] [%+ bug.id FILTER html %]
- from group id [% group_id FILTER html %], but [% terms.bugs %] in the
- '[% product FILTER html %]' product can not be removed from that
- group.
-
- [% ELSIF error == "group_invalid_restriction" %]
- You tried to restrict [% terms.bug %] [%+ bug.id FILTER html %] to
- to group id [% group_id FILTER html %], but [% terms.bugs %] in the
- '[% product FILTER html %]' product can not be restricted to
- that group.
+ 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" %]
@@ -741,11 +760,6 @@
The group [% name FILTER html %] does not exist. Please specify
a valid group name. Create it first if necessary!
- [% ELSIF error == "illegal_at_least_x_votes" %]
- [% title = "Your Search Makes No Sense" %]
- The <em>At least ___ votes</em> field must be a simple number.
- You entered <tt>[% value FILTER html %]</tt>, which isn't.
-
[% ELSIF error == "illegal_attachment_edit" %]
[% title = "Unauthorized Action" %]
You are not authorized to edit attachment [% attach_id FILTER html %].
@@ -781,9 +795,9 @@
to <em>[% newvalue.join(', ') FILTER html %]</em>
[% END %]
, but only
- [% IF privs < 3 %]
+ [% IF privs < constants.PRIVILEGES_REQUIRED_EMPOWERED %]
the assignee
- [% IF privs < 2 %] or reporter [% END %]
+ [% 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.
@@ -902,8 +916,9 @@
[% 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>.
-
+ 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,
@@ -911,7 +926,7 @@
[% ELSIF error == "invalid_datasets" %]
[% title = "Invalid Datasets" %]
- Invalid datasets <em>[% datasets FILTER html %]</em>. Only digits,
+ Invalid datasets <em>[% datasets.join(":") FILTER html %]</em>. Only digits,
letters and colons are allowed.
[% ELSIF error == "invalid_format" %]
@@ -984,9 +999,24 @@
[%+ 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 may only use JSON-RPC with the POST
- HTTP method.
+ For security reasons, you must use HTTP POST to call the
+ '[% method FILTER html %]' method.
[% ELSIF error == "keyword_already_exists" %]
[% title = "Keyword Already Exists" %]
@@ -1145,11 +1175,6 @@
A valid resolution is required to mark [% terms.bugs %] as
[%+ status FILTER upper FILTER html %].
- [% ELSIF error == "move_bugs_disabled" %]
- [% title = BLOCK %][% terms.Bug %] Moving Disabled[% END %]
- Sorry, [% terms.bug %] moving has been disabled. If you need
- to move [% terms.abug %], please contact [% Param("maintainer") %].
-
[% ELSIF error == "missing_subcategory" %]
[% title = "Missing Subcategory" %]
You did not specify a subcategory for this series.
@@ -1168,6 +1193,10 @@
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'} %]
@@ -1232,10 +1261,6 @@
Either no products have been defined to enter [% terms.bugs %] against or you have not
been given access to any.
- [% ELSIF error == "no_valid_action" %]
- [% title = "No valid action specified" %]
- Cannot edit [% field_descs.$field FILTER html %]: no valid action was specified.
-
[% ELSIF error == "number_not_numeric" %]
[% title = "Numeric Value Required" %]
The value '[% num FILTER html %]' in the
@@ -1276,6 +1301,10 @@
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" %]
@@ -1293,6 +1322,14 @@
[% 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
@@ -1314,29 +1351,11 @@
[% END %]
does not exist or you don't have access to it.
- [% ELSIF error == "product_doesnt_exist" %]
- [% title = "Specified Product Does Not Exist" %]
- The product '[% product FILTER html %]' does not exist.
-
[% 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_illegal_votes" %]
- [% title = "Votes Must Be Non-negative" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- '[% votes FILTER html %]' is an invalid value for the
- <em>
- [% IF field == "votesperuser" %]
- Votes Per User
- [% ELSIF field == "maxvotesperbug" %]
- Maximum Votes Per [% terms.Bug %]
- [% ELSIF field == "votestoconfirm" %]
- Votes To Confirm
- [% END %]
- </em> field, which should contain a non-negative number.
-
[% ELSIF error == "product_name_already_in_use" %]
[% title = "Product name already exists" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
@@ -1401,15 +1420,6 @@
'versions.html' => 'Administering versions'} %]
You must enter a valid version to create a new product.
- [% ELSIF error == "product_not_specified" %]
- [% title = "No Product Specified" %]
- [% admindocslinks = {'products.html' => 'Administering products',
- 'components.html' => 'Administering components',
- 'milestones.html' => 'Administering milestones',
- 'versions.html' => 'Administering versions'} %]
- No product specified when trying to edit components, milestones, versions
- or product.
-
[% ELSIF error == "query_name_exists" %]
[% title = "Search Name Already In Use" %]
The name <em>[% name FILTER html %]</em> is already used by another
@@ -1455,10 +1465,24 @@
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 %].
@@ -1497,32 +1521,17 @@
<a href="http://www.mozilla.org">Upgrade today</a>. :-)
[% ELSIF error == "still_unresolved_bugs" %]
- [% IF dependency_count == 1 %]
- [% terms.Bug %]# <a href="show_bug.cgi?id=[% dependencies.0.bug_id FILTER none %]">[% dependencies.0.bug_id FILTER none %]</a>
- still has [% dependencies.0.dependencies FILTER html %] unresolved
- [% IF dependencies.0.dependencies == 1 %]
- dependency
- [% ELSE %]
- dependencies
- [% END %]. Show
- <a href="showdependencytree.cgi?id=[% dependencies.0.bug_id FILTER none %]&amp;hide_resolved=1">Dependency
- Tree</a>.
+ [% 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 %]
- There are [% dependency_count FILTER none %] open [% terms.bugs %] which
- have unresolved dependencies.
- <br>
- [% FOREACH bug = dependencies %]
- [% terms.Bug %]# <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]">[% bug.bug_id FILTER none %]</a>
- has [% bug.dependencies FILTER html %] open
- [% IF bug.dependencies == 1 %]
- dependency.
- [% ELSE %]
- dependencies.
- [% END %]
- (<a href="showdependencytree.cgi?id=[% bug.bug_id FILTER none %]&amp;hide_resolved=1">Dependency
- Tree</a>)<br>
- [% END %]
- [% END %]
+ 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" %]
@@ -1548,36 +1557,21 @@
[% 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&target_login=
- [%- target_login FILTER html %]&reason=
- [%- reason FILTER html %]">go back</a> and enter your password.
+ 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&target_login=
- [%- target_login FILTER html %]&reason=
- [%- reason FILTER html %]">start your session normally</a>.
+ <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 == "too_many_votes_for_bug" %]
- [% title = "Illegal Vote" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- You may only use at most [% max FILTER html %] votes for a single
- [%+ terms.bug %] in the
- <tt>[% product FILTER html %]</tt> product, but you are trying to
- use [% votes FILTER html %].
-
- [% ELSIF error == "too_many_votes_for_product" %]
- [% title = "Illegal Vote" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- You tried to use [% votes FILTER html %] votes in the
- <tt>[% product FILTER html %]</tt> product, which exceeds the maximum of
- [%+ max FILTER html %] votes for this product.
-
[% ELSIF error == "token_does_not_exist" %]
[% title = "Token Does Not Exist" %]
The token you submitted does not exist, has expired, or has
@@ -1593,10 +1587,12 @@
[% END %]
token too recently to request another. Please wait a while and try again.
- [% ELSIF error == "unknown_keyword" %]
- [% title = "Unknown Keyword" %]
- <code>[% keyword FILTER html %]</code> is not a known keyword.
- The legal keyword names are <a href="describekeywords.cgi">listed here</a>.
+ [% 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" %]
@@ -1665,11 +1661,6 @@
Sorry, but you are not allowed to (un)mark comments or attachments
as private.
- [% ELSIF error == "votes_must_be_nonnegative" %]
- [% title = "Votes Must Be Non-negative" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- Only use non-negative numbers for your [% terms.bug %] votes.
-
[% ELSIF error == "wrong_token_for_cancelling_email_change" %]
[% title = "Wrong Token" %]
That token cannot be used to cancel an email address change.
@@ -1764,7 +1755,7 @@
[% FOREACH q = Bugzilla.user.queries %]
[% IF q.name == namedcmd %]
- or <a href="query.cgi?[% q.url FILTER html %]">edit</a>
+ or <a href="query.cgi?[% q.url FILTER url_quote %]">edit</a>
[% END %]
[% END %]
@@ -1779,6 +1770,10 @@
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" %]
@@ -1795,12 +1790,15 @@
field
[% ELSIF class == "Bugzilla::Group" %]
group
- [% ELSIF class == "Bugzilla::Product" %]
- product
+ [% 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 %]
diff --git a/template/en/default/global/userselect.html.tmpl b/template/en/default/global/userselect.html.tmpl
index 35075ef..1d03950 100644
--- a/template/en/default/global/userselect.html.tmpl
+++ b/template/en/default/global/userselect.html.tmpl
@@ -12,32 +12,42 @@
#
# Contributor(s): Byron Jones <bugzilla@glob.com.au>
# Frédéric Buclin <LpSolit@gmail.com>
+ # Guy Pyrzak <guy.pyrzak@gmail.com>
+ # Reed Loden <reed@reedloden.com>
#%]
[%# INTERFACE:
# name: mandatory; field name
# id: optional; field id
# value: optional; default field value/selection
+ # classes: optional; an array of classes to be added
# onchange: optional; onchange attribute value
# disabled: optional; if true, the field is disabled
# accesskey: optional, input only; accesskey attribute value
# size: optional, input only; size attribute value
- # emptyok: optional, select only; if true, prepend menu option to start of select
+ # emptyok: optional, select only; if true, prepend menu option for "" to start of select
+ # hyphenok: optional, select only; if true, prepend menu option for "-" to start of select
# multiple: optional, do multiselect box, value is size (height) of box
# custom_userlist: optional, specify a limited list of users to use
+ # field_title: optional, extra information to display as a tooltip
#%]
[% IF Param("usemenuforusers") %]
<select name="[% name FILTER html %]"
[% IF id %] id="[% id FILTER html %]" [% END %]
+ [% IF classes %] class="[% classes.join(' ') FILTER html %]" [% END %]
[% IF onchange %] onchange="[% onchange FILTER html %]" [% END %]
[% IF disabled %] disabled="[% disabled FILTER html %]" [% END %]
[% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %]
[% IF multiple %] multiple="multiple" size="[% multiple FILTER html %]" [% END %]
+ [% IF field_title %] title="[% field_title FILTER html %]" [% END %]
>
[% IF emptyok %]
<option value=""></option>
[% END %]
+ [% IF hyphenok %]
+ <option value="-">-</option>
+ [% END %]
[% UNLESS custom_userlist %]
[% custom_userlist = user.get_userlist %]
@@ -69,15 +79,31 @@
[% END %]
</select>
[% ELSE %]
-<input
- name="[% name FILTER html %]"
- value="[% value FILTER html %]"
- [% IF onchange %] onchange="[% onchange FILTER html %]" [% END %]
- [% IF disabled %] disabled="[% disabled FILTER html %]" [% END %]
- [% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %]
- [% IF size %] size="[% size FILTER html %]" [% END %]
- [% IF id %] id="[% id FILTER html %]" [% END %]
->
+ [% IF feature_enabled('jsonrpc') && Param('ajax_user_autocompletion') && id %]
+ <div id="[% id FILTER html %]_autocomplete"
+ [% IF classes %] class="[% classes.join(' ') FILTER html %]" [% END %]>
+ [% END %]
+ <input
+ name="[% name FILTER html %]"
+ value="[% value FILTER html %]"
+ [% IF classes %] class="[% classes.join(' ') FILTER html %]" [% END %]
+ [% IF onchange %] onchange="[% onchange FILTER html %]" [% END %]
+ [% IF disabled %] disabled="[% disabled FILTER html %]" [% END %]
+ [% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %]
+ [% IF field_title %] title="[% field_title FILTER html %]" [% END %]
+ [% IF size %] size="[% size FILTER html %]" [% END %]
+ [% IF id %] id="[% id FILTER html %]" [% END %]
+ >
+ [% IF feature_enabled('jsonrpc') && Param('ajax_user_autocompletion') && id %]
+ <div id="[% id FILTER html %]_autocomplete_container"></div>
+ </div>
+ <script type="text/javascript">
+ if( typeof(YAHOO.bugzilla.userAutocomplete) !== 'undefined'
+ && YAHOO.bugzilla.userAutocomplete != null){
+ YAHOO.bugzilla.userAutocomplete.init( "[% id FILTER js %]",
+ "[% id FILTER js %]_autocomplete_container"
+ [% IF multiple %], true[% END%]);
+ }
+ </script>
+ [% END %]
[% END %]
-
-
diff --git a/template/en/default/global/value-descs.js.tmpl b/template/en/default/global/value-descs.js.tmpl
new file mode 100644
index 0000000..d432cf1
--- /dev/null
+++ b/template/en/default/global/value-descs.js.tmpl
@@ -0,0 +1,33 @@
+[%# 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 Everything Solved, Inc.
+ # Portions created by the Initial Developer are Copyright (C) 2010
+ # the Initial Developer. All Rights Reserved.
+ #
+ # Contributor(s):
+ # Max Kanat-Alexander <mkanat@bugzilla.org>
+ #%]
+
+[% PROCESS "global/field-descs.none.tmpl" %]
+
+BUGZILLA.value_descs = {
+ [% FOREACH vd_field = value_descs.keys %]
+ [% vd_field FILTER js %]: {
+ [% FOREACH vd_value = value_descs.${vd_field}.keys %]
+ '[% vd_value FILTER js %]':
+ '[% value_descs.${vd_field}.${vd_value} FILTER js %]'
+ [%~ ',' UNLESS loop.last %]
+ [% END %]
+ }[% ',' UNLESS loop.last %]
+ [% END %]
+};
diff --git a/template/en/default/global/variables.none.tmpl b/template/en/default/global/variables.none.tmpl
index dd7281e..faf1a54 100644
--- a/template/en/default/global/variables.none.tmpl
+++ b/template/en/default/global/variables.none.tmpl
@@ -40,3 +40,5 @@
"Bugzilla" => "Bugzilla"
}
%]
+
+[% Hook.process("end") %]