Commit ca0d3d36 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 316127: Implement an infrastructure to link to the documentation - Patch by…

Bug 316127: Implement an infrastructure to link to the documentation - Patch by Marc Schumann <wurblzap@gmail.com> r=vladd a=justdave
parent 947e7821
...@@ -195,6 +195,15 @@ sub check_urlbase { ...@@ -195,6 +195,15 @@ sub check_urlbase {
return ""; return "";
} }
sub check_url {
my ($url) = (@_);
return '' if $url eq ''; # Allow empty URLs
if ($url !~ m:/$:) {
return 'must be a legal URL, absolute or relative, ending with a slash.';
}
return '';
}
sub check_webdotbase { sub check_webdotbase {
my ($value) = (@_); my ($value) = (@_);
$value = trim($value); $value = trim($value);
......
...@@ -54,6 +54,13 @@ sub get_param_list { ...@@ -54,6 +54,13 @@ sub get_param_list {
}, },
{ {
name => 'docs_urlbase',
type => 't',
default => 'docs/html/',
checker => \&check_url
},
{
name => 'sslbase', name => 'sslbase',
type => 't', type => 't',
default => '', default => '',
......
...@@ -287,6 +287,17 @@ body ...@@ -287,6 +287,17 @@ body
} }
/* generic (end) */ /* generic (end) */
div#docslinks {
float: right;
border: 1px solid black;
padding: 1ex;
font-size: 80%;
}
#docslinks h2 {
margin: 0;
}
.bz_obsolete { text-decoration: line-through; } .bz_obsolete { text-decoration: line-through; }
.bz_inactive { text-decoration: line-through; } .bz_inactive { text-decoration: line-through; }
.bz_closed, .bz_closed,
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
[% PROCESS global/variables.none.tmpl %] [% PROCESS global/variables.none.tmpl %]
[% admindocslinks = {'extraconfig.html#bzldap' => 'Setting up LDAP authentication'} %]
[% SWITCH auth_err_tag %] [% SWITCH auth_err_tag %]
[% CASE "cannot_retreive_attr" %] [% CASE "cannot_retreive_attr" %]
The specified LDAP attribute [% info.attr FILTER html %] was not found. The specified LDAP attribute [% info.attr FILTER html %] was not found.
......
...@@ -32,6 +32,12 @@ ...@@ -32,6 +32,12 @@
urlbase => "The URL that is the common initial leading part of all $terms.Bugzilla " _ urlbase => "The URL that is the common initial leading part of all $terms.Bugzilla " _
"URLs.", "URLs.",
docs_urlbase => "The URL that is the common initial leading part of all " _
"$terms.Bugzilla documentation URLs. " _
"It may be an absolute URL, or a URL relative to urlbase " _
"above. " _
"Leave this empty to suppress links to the documentation.",
sslbase => "The URL that is the common initial leading part of all HTTPS " _ sslbase => "The URL that is the common initial leading part of all HTTPS " _
"(SSL) $terms.Bugzilla URLs.", "(SSL) $terms.Bugzilla URLs.",
...@@ -65,4 +71,4 @@ ...@@ -65,4 +71,4 @@
shutdownhtml => "If this field is non-empty, then $terms.Bugzilla will be completely " _ shutdownhtml => "If this field is non-empty, then $terms.Bugzilla will be completely " _
"disabled and this text will be displayed instead of all the " _ "disabled and this text will be displayed instead of all the " _
"$terms.Bugzilla pages." } "$terms.Bugzilla pages." }
%] %]
\ No newline at end of file
...@@ -39,6 +39,8 @@ ...@@ -39,6 +39,8 @@
[% error_message = BLOCK %] [% error_message = BLOCK %]
[% IF error == "action_unrecognized" %] [% IF error == "action_unrecognized" %]
[% docslinks = {'query.html' => "Searching for $terms.bugs",
'list.html' => "$terms.Bug lists"} %]
I don't recognize the value (<em>[% action FILTER html %]</em>) I don't recognize the value (<em>[% action FILTER html %]</em>)
of the <em>action</em> variable. of the <em>action</em> variable.
...@@ -70,6 +72,7 @@ ...@@ -70,6 +72,7 @@
the error [% bug.error FILTER html %]. the error [% bug.error FILTER html %].
[% ELSIF error == "chart_data_not_generated" %] [% ELSIF error == "chart_data_not_generated" %]
[% admindocslinks = {'extraconfig.html' => 'Setting up Charting'} %]
[% IF product %] [% IF product %]
Charts for the <em>[% product FILTER html %]</em> product are not Charts for the <em>[% product FILTER html %]</em> product are not
available yet because no charting data has been collected for it since it available yet because no charting data has been collected for it since it
...@@ -93,6 +96,7 @@ ...@@ -93,6 +96,7 @@
Unable to open the chart datafile <tt>[% filename FILTER html %]</tt>. Unable to open the chart datafile <tt>[% filename FILTER html %]</tt>.
[% ELSIF error == "chart_lines_not_installed" %] [% ELSIF error == "chart_lines_not_installed" %]
[% admindocslinks = {'installation.html#install-perlmodules' => 'Installing perl modules necessary for Charting'} %]
Charts will not work without the Chart::Lines Perl module being installed. Charts will not work without the Chart::Lines Perl module being installed.
Run checksetup.pl for installation instructions. Run checksetup.pl for installation instructions.
...@@ -104,6 +108,7 @@ ...@@ -104,6 +108,7 @@
and <code>[% type FILTER html %]</code> together. and <code>[% type FILTER html %]</code> together.
[% ELSIF error == "gd_not_installed" %] [% ELSIF error == "gd_not_installed" %]
[% admindocslinks = {'installation.html#install-perlmodules' => 'Installing perl modules necessary for Charting'} %]
Charts will not work without the GD Perl module being installed. Charts will not work without the GD Perl module being installed.
Run checksetup.pl for installation instructions. Run checksetup.pl for installation instructions.
...@@ -344,6 +349,11 @@ ...@@ -344,6 +349,11 @@
[% PROCESS global/header.html.tmpl %] [% PROCESS global/header.html.tmpl %]
[% END %] [% END %]
[% PROCESS global/docslinks.html.tmpl
docslinks = docslinks
admindocslinks = admindocslinks
%]
<tt> <tt>
<p> <p>
[% terms.Bugzilla %] has suffered an internal error. Please save this page and send [% terms.Bugzilla %] has suffered an internal error. Please save this page and send
......
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
# docslinks: hash. Hash keys will be used as text of the documentation links,
# hash values will be used as links to the document, relative to
# the main Bugzilla documentation directory.
# Example: If you want a 'FAQ' link to point to, the "faq-general"
# named anchor on faq.html, assign
# { 'FAQ' => "faq.html#faq-general" }
# to docslinks.
# You may only link to sections by their given ID; it is not allowed
# to link to a section which is not given an ID (thus getting
# assigned an automatically generated ID). Otherwise, the link
# would break on a recompilation of the documentation.
# admindocslinks: hash. Same as docslinks, but will only be displayed to
# members of the admin group.
#%]
[% IF Param('docs_urlbase') &&
docslinks.keys.size || (admindocslinks.keys.size && user.in_group('admin')) %]
<div id="docslinks">
<h2>Related documentation</h2>
<ul>
[% IF user.in_group('admin') %]
[% PROCESS docslinkslist docstype = admindocslinks %]
[% END %]
[% PROCESS docslinkslist docstype = docslinks %]
</ul>
</div>
[% END %]
[% BLOCK docslinkslist %]
[% FOREACH docslink = docstype.keys %]
<li>
<a href="[% Param('docs_urlbase') %]
[% docslink FILTER none %]">[% docstype.$docslink FILTER html %]</a>
</li>
[% END %]
[% END %]
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
# #
# Note that you must explicitly filter every single template variable # 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. # 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 # Extension- or custom-specific error handling can be easily added
# via hooks: just place your <extension>-errors.html.tmpl into # via hooks: just place your <extension>-errors.html.tmpl into
# template/en/extension/hook/global/user-error.html.tmpl/errors/ # template/en/extension/hook/global/user-error.html.tmpl/errors/
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
[% ELSIF error == "auth_failure" %] [% ELSIF error == "auth_failure" %]
[% title = "Authorization Required" %] [% title = "Authorization Required" %]
[% admindocslinks = {'group.html' => 'Group Security'} %]
Sorry, Sorry,
[% IF group %] [% IF group %]
you aren't a member of the '[% group FILTER html %]' group, you aren't a member of the '[% group FILTER html %]' group,
...@@ -196,10 +197,12 @@ ...@@ -196,10 +197,12 @@
[% ELSIF error == "bug_access_denied" %] [% ELSIF error == "bug_access_denied" %]
[% title = "Access Denied" %] [% title = "Access Denied" %]
[% admindocslinks = {'group.html' => 'Group Security'} %]
You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %]. You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
[% ELSIF error == "bug_access_query" %] [% ELSIF error == "bug_access_query" %]
[% title = "Access Denied" %] [% title = "Access Denied" %]
[% docslinks = {'myaccount.html' => 'Creating an account'} %]
You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %]. You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
To see this [% terms.bug %], you must To see this [% terms.bug %], you must
first <a href="show_bug.cgi?id= first <a href="show_bug.cgi?id=
...@@ -208,6 +211,8 @@ ...@@ -208,6 +211,8 @@
[% ELSIF error == "buglist_parameters_required" %] [% ELSIF error == "buglist_parameters_required" %]
[% title = "Parameters Required" %] [% title = "Parameters Required" %]
[% docslinks = {'query.html' => "Searching for $terms.bugs",
'list.html' => "$terms.Bug lists"} %]
You may not search, or create saved searches, without any search terms. You may not search, or create saved searches, without any search terms.
[% ELSIF error == "bugs_not_changed" %] [% ELSIF error == "bugs_not_changed" %]
...@@ -348,6 +353,7 @@ ...@@ -348,6 +353,7 @@
[% ELSIF error == "entry_access_denied" %] [% ELSIF error == "entry_access_denied" %]
[% title = "Permission Denied" %] [% title = "Permission Denied" %]
[% admindocslinks = {'group.html' => 'Group Security'} %]
Sorry, either the product <em>[% product FILTER html %]</em> Sorry, either the product <em>[% product FILTER html %]</em>
does not exist or you aren't authorized to does not exist or you aren't authorized to
enter [% terms.abug %] into it. enter [% terms.abug %] into it.
...@@ -420,11 +426,17 @@ ...@@ -420,11 +426,17 @@
again. again.
[% ELSIF error == "flag_not_multiplicable" %] [% ELSIF error == "flag_not_multiplicable" %]
[% docslinks = {'flags-overview.html' => 'An overview on Flags',
'flags.html' => 'Using Flags'} %]
You can't ask more than one person at a time for You can't ask more than one person at a time for
<em>[% type.name FILTER html %]</em>. <em>[% type.name FILTER html %]</em>.
[% ELSIF error == "flag_requestee_unauthorized" %] [% ELSIF error == "flag_requestee_unauthorized" %]
[% title = "Flag Requestee Not Authorized" %] [% 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 %] You asked [% requestee.identity FILTER html %]
for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %]
...@@ -438,6 +450,10 @@ ...@@ -438,6 +450,10 @@
[% ELSIF error == "flag_requestee_unauthorized_attachment" %] [% ELSIF error == "flag_requestee_unauthorized_attachment" %]
[% title = "Flag Requestee Not Authorized" %] [% 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 %] You asked [% requestee.identity FILTER html %]
for <code>[% flag_type.name FILTER html %]</code> on for <code>[% flag_type.name FILTER html %]</code> on
...@@ -449,19 +465,26 @@ ...@@ -449,19 +465,26 @@
[% ELSIF error == "flag_type_cc_list_invalid" %] [% ELSIF error == "flag_type_cc_list_invalid" %]
[% title = "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. The CC list [% cc_list FILTER html %] must be less than 200 characters long.
[% ELSIF error == "flag_type_description_invalid" %] [% ELSIF error == "flag_type_description_invalid" %]
[% title = "Flag Type Description Invalid" %] [% title = "Flag Type Description Invalid" %]
[% admindocslinks = {'flags-overview.html#flags-admin' => 'Administering Flags'} %]
The description must be less than 32K. The description must be less than 32K.
[% ELSIF error == "flag_type_name_invalid" %] [% ELSIF error == "flag_type_name_invalid" %]
[% title = "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 The name <em>[% name FILTER html %]</em> must be 1-50 characters long
and must not contain any spaces or commas. and must not contain any spaces or commas.
[% ELSIF error == "flag_update_denied" %] [% ELSIF error == "flag_update_denied" %]
[% title = "Flag Modification 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 You tried to [% IF status == "+" %] grant [% ELSIF status == "-" %] deny
[% ELSIF status == "X" %] clear [% ELSE %] request [% END %] [% ELSIF status == "X" %] clear [% ELSE %] request [% END %]
<code>[% name FILTER html %] <code>[% name FILTER html %]
...@@ -573,6 +596,7 @@ ...@@ -573,6 +596,7 @@
[% ELSIF error == "illegal_group_control_combination" %] [% ELSIF error == "illegal_group_control_combination" %]
[% title = "Your Group Control Combination Is Illegal" %] [% title = "Your Group Control Combination Is Illegal" %]
[% admindocslinks = {'group.html' => 'Assigning Group Controls to Products'} %]
Your group control combination for group &quot; Your group control combination for group &quot;
[% groupname FILTER html %]&quot; is illegal. [% groupname FILTER html %]&quot; is illegal.
...@@ -587,13 +611,18 @@ ...@@ -587,13 +611,18 @@
&lt;, &gt;, &amp;. &lt;, &gt;, &amp;.
[% ELSIF error == "illegal_series_creation" %] [% ELSIF error == "illegal_series_creation" %]
[% admindocslinks = {'group.html' => 'Group security'} %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You are not authorised to create series. You are not authorised to create series.
[% ELSIF error == "illegal_series_edit" %] [% ELSIF error == "illegal_series_edit" %]
[% admindocslinks = {'group.html' => 'Group security'} %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You are not authorised to edit this series. To do this, you must either You are not authorised to edit this series. To do this, you must either
be its creator, or an administrator. be its creator, or an administrator.
[% ELSIF error == "insufficient_data_points" %] [% ELSIF error == "insufficient_data_points" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
We don't have enough data points to make a graph (yet). We don't have enough data points to make a graph (yet).
[% ELSIF error == "invalid_attach_id" %] [% ELSIF error == "invalid_attach_id" %]
...@@ -732,6 +761,8 @@ ...@@ -732,6 +761,8 @@
[% ELSIF error == "milestone_already_exists" %] [% ELSIF error == "milestone_already_exists" %]
[% title = "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 ' The milestone '[% name FILTER html %]' already exists for product '
[%- product FILTER html %]'. [%- product FILTER html %]'.
...@@ -741,6 +772,8 @@ ...@@ -741,6 +772,8 @@
[% ELSIF error == "milestone_is_default" %] [% ELSIF error == "milestone_is_default" %]
[% title = "Default milestone not deletable" %] [% title = "Default milestone not deletable" %]
[% admindocslinks = {'products.html' => 'Administering products',
'milestones.html' => 'About Milestones'} %]
Sorry, but [% name FILTER html %] is the default milestone for Sorry, but [% name FILTER html %] is the default milestone for
product '[% product FILTER html %]', and so it can not be deleted. product '[% product FILTER html %]', and so it can not be deleted.
...@@ -786,6 +819,8 @@ ...@@ -786,6 +819,8 @@
[% ELSIF error == "missing_component" %] [% ELSIF error == "missing_component" %]
[% title = "Missing Component" %] [% title = "Missing Component" %]
[% admindocslinks = {'products.html' => 'Administering products',
'components.html' => 'Creating a component'} %]
Sorry, the product <em>[% product FILTER html %]</em> Sorry, the product <em>[% product FILTER html %]</em>
has to have at least one component in order for you to has to have at least one component in order for you to
enter [% terms.abug %] into it.<p> enter [% terms.abug %] into it.<p>
...@@ -817,6 +852,7 @@ ...@@ -817,6 +852,7 @@
[% ELSIF error == "missing_datasets" %] [% ELSIF error == "missing_datasets" %]
[% title = "No Datasets Selected" %] [% title = "No Datasets Selected" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You must specify one or more datasets to plot. You must specify one or more datasets to plot.
[% ELSIF error == "missing_email_type" %] [% ELSIF error == "missing_email_type" %]
...@@ -826,10 +862,12 @@ ...@@ -826,10 +862,12 @@
[% ELSIF error == "missing_frequency" %] [% ELSIF error == "missing_frequency" %]
[% title = "Missing Frequency" %] [% title = "Missing Frequency" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You did not specify a valid frequency for this series. You did not specify a valid frequency for this series.
[% ELSIF error == "missing_name" %] [% ELSIF error == "missing_name" %]
[% title = "Missing Name" %] [% title = "Missing Name" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You did not specify a name for this series. You did not specify a name for this series.
[% ELSIF error == "missing_query" %] [% ELSIF error == "missing_query" %]
...@@ -848,6 +886,7 @@ ...@@ -848,6 +886,7 @@
[% ELSIF error == "missing_version" %] [% ELSIF error == "missing_version" %]
[% title = "Missing Version" %] [% title = "Missing Version" %]
[% admindocslinks = {'versions.html' => 'Defining versions'} %]
Sorry, the product <em>[% product FILTER html %]</em> Sorry, the product <em>[% product FILTER html %]</em>
has to have at least one version in order for you to has to have at least one version in order for you to
enter [% terms.abug %] into it.<p> enter [% terms.abug %] into it.<p>
...@@ -861,6 +900,7 @@ ...@@ -861,6 +900,7 @@
[% ELSIF error == "need_quip" %] [% ELSIF error == "need_quip" %]
[% title = "Quip Required" %] [% title = "Quip Required" %]
[% docslinks = {'quips.html' => 'About quips'} %]
Please enter a quip in the text field. Please enter a quip in the text field.
[% ELSIF error == "new_password_missing" %] [% ELSIF error == "new_password_missing" %]
...@@ -869,6 +909,7 @@ ...@@ -869,6 +909,7 @@
[% ELSIF error == "no_axes_defined" %] [% ELSIF error == "no_axes_defined" %]
[% title = "No Axes Defined" %] [% title = "No Axes Defined" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
You didn't define any axes to plot. You didn't define any axes to plot.
[% ELSIF error == "no_bugs_chosen" %] [% ELSIF error == "no_bugs_chosen" %]
...@@ -886,27 +927,32 @@ ...@@ -886,27 +927,32 @@
[% ELSIF error == "no_dupe_stats" %] [% ELSIF error == "no_dupe_stats" %]
[% title = "Cannot Find Duplicate Statistics" %] [% title = "Cannot Find Duplicate Statistics" %]
[% admindocslinks = {'extraconfig.html' => 'Setting up the collecstats.pl job'} %]
There are no duplicate statistics for today ([% today FILTER html %]) There are no duplicate statistics for today ([% today FILTER html %])
or yesterday. or yesterday.
[% ELSIF error == "no_dupe_stats_error_today" %] [% ELSIF error == "no_dupe_stats_error_today" %]
[% title = "Error Reading Today's Dupes File" %] [% title = "Error Reading Today's Dupes File" %]
[% admindocslinks = {'extraconfig.html' => 'Setting up the collecstats.pl job'} %]
An error occurred opening today's dupes file: [% error_msg FILTER html %]. An error occurred opening today's dupes file: [% error_msg FILTER html %].
[% ELSIF error == "no_dupe_stats_error_whenever" %] [% ELSIF error == "no_dupe_stats_error_whenever" %]
[% title = "Error Reading Previous Dupes File" %] [% title = "Error Reading Previous Dupes File" %]
[% admindocslinks = {'extraconfig.html' => 'Setting up the collecstats.pl job'} %]
An error occurred opening [% changedsince FILTER html %] days ago An error occurred opening [% changedsince FILTER html %] days ago
([% whenever FILTER html %])'s dupes file: ([% whenever FILTER html %])'s dupes file:
[% error_msg FILTER html %]. [% error_msg FILTER html %].
[% ELSIF error == "no_dupe_stats_error_yesterday" %] [% ELSIF error == "no_dupe_stats_error_yesterday" %]
[% title = "Error Reading Yesterday's Dupes File" %] [% title = "Error Reading Yesterday's Dupes File" %]
[% admindocslinks = {'extraconfig.html' => 'Setting up the collecstats.pl job'} %]
There are no duplicate statistics for today ([% today FILTER html %]), There are no duplicate statistics for today ([% today FILTER html %]),
and an error and an error
occurred opening yesterday's dupes file: [% error_msg FILTER html %]. occurred opening yesterday's dupes file: [% error_msg FILTER html %].
[% ELSIF error == "no_new_quips" %] [% ELSIF error == "no_new_quips" %]
[% title = "No New Quips" %] [% title = "No New Quips" %]
[% admindocslinks = {'quips.html' => 'Controlling quip usage'} %]
This site does not permit the addition of new quips. This site does not permit the addition of new quips.
[% ELSIF error == "no_page_specified" %] [% ELSIF error == "no_page_specified" %]
...@@ -915,6 +961,9 @@ ...@@ -915,6 +961,9 @@
[% ELSIF error == "no_products" %] [% ELSIF error == "no_products" %]
[% title = "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 Either no products have been defined to enter [% terms.bugs %] against or you have not
been given access to any. been given access to any.
...@@ -975,42 +1024,51 @@ ...@@ -975,42 +1024,51 @@
[% ELSIF error == "prod_votes_per_bug_must_be_nonnegative" %] [% ELSIF error == "prod_votes_per_bug_must_be_nonnegative" %]
[% title = "Maximum Votes Must Be Non-negative" %] [% title = "Maximum Votes Must Be Non-negative" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
'[% maxvotesperbug FILTER html %]' is an invalid value for the '[% maxvotesperbug FILTER html %]' is an invalid value for the
<em>'Maximum Votes Per [% terms.Bug %]'</em> field, which should <em>'Maximum Votes Per [% terms.Bug %]'</em> field, which should
contain a non-negative number. contain a non-negative number.
[% ELSIF error == "prod_votes_per_user_must_be_nonnegative" %] [% ELSIF error == "prod_votes_per_user_must_be_nonnegative" %]
[% title = "Votes Per User Must Be Non-negative" %] [% title = "Votes Per User Must Be Non-negative" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
'[% votesperuser FILTER html %]' is an invalid value for the '[% votesperuser FILTER html %]' is an invalid value for the
<em>'Votes Per User'</em> field, which should contain a <em>'Votes Per User'</em> field, which should contain a
non-negative number. non-negative number.
[% ELSIF error == "prod_votes_to_confirm_must_be_nonnegative" %] [% ELSIF error == "prod_votes_to_confirm_must_be_nonnegative" %]
[% title = "Votes To Confirm Must Be Non-negative" %] [% title = "Votes To Confirm Must Be Non-negative" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
'[% votestoconfirm FILTER html %]' is an invalid value for the '[% votestoconfirm FILTER html %]' is an invalid value for the
<em>'Votes To Confirm'</em> field, which should contain a <em>'Votes To Confirm'</em> field, which should contain a
non-negative number. non-negative number.
[% ELSIF error == "prod_cant_delete_description" %] [% ELSIF error == "prod_cant_delete_description" %]
[% title = "Cannot delete product description" %] [% title = "Cannot delete product description" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
Cannot delete the description for product Cannot delete the description for product
'[% product FILTER html %]'. '[% product FILTER html %]'.
[% ELSIF error == "prod_cant_delete_name" %] [% ELSIF error == "prod_cant_delete_name" %]
[% title = "Cannot delete product name" %] [% title = "Cannot delete product name" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
Cannot delete the product name for product '[% product FILTER html %]'. Cannot delete the product name for product '[% product FILTER html %]'.
[% ELSIF error == "prod_name_already_in_use" %] [% ELSIF error == "prod_name_already_in_use" %]
[% title = "Product name already in use" %] [% title = "Product name already in use" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
The product name '[% product FILTER html %]' is already in use. The product name '[% product FILTER html %]' is already in use.
[% ELSIF error == "prod_name_diff_in_case" %] [% ELSIF error == "prod_name_diff_in_case" %]
[% title = "Product name differs only in case" %] [% title = "Product name differs only in case" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
The product name '[% product FILTER html %]' differs from existing The product name '[% product FILTER html %]' differs from existing
product '[% existing_product FILTER html %]' only in case. product '[% existing_product FILTER html %]' only in case.
[% ELSIF error == "prod_must_define_defaultmilestone" %] [% ELSIF error == "prod_must_define_defaultmilestone" %]
[% title = "Must define new default milestone" %] [% title = "Must define new default milestone" %]
[% admindocslinks = {'products.html' => 'Administering products',
'milestones.html' => 'About Milestones'} %]
[% IF classification %] [% IF classification %]
[% classification_url_part = BLOCK %]&amp;classification= [% classification_url_part = BLOCK %]&amp;classification=
[%- classification FILTER url_quote %] [%- classification FILTER url_quote %]
...@@ -1028,39 +1086,52 @@ ...@@ -1028,39 +1086,52 @@
[% ELSIF error == "product_blank_name" %] [% ELSIF error == "product_blank_name" %]
[% title = "Blank Product Name Not Allowed" %] [% title = "Blank Product Name Not Allowed" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
You must enter a name for the new product. You must enter a name for the new product.
[% ELSIF error == "product_disabled" %] [% ELSIF error == "product_disabled" %]
[% title = BLOCK %]Product closed for [% terms.Bugs %] Entry[% END %] [% title = BLOCK %]Product closed for [% terms.Bugs %] Entry[% END %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
Sorry, entering [% terms.bugs %] into the Sorry, entering [% terms.bugs %] into the
product <em>[% product FILTER html %]</em> has been disabled. product <em>[% product FILTER html %]</em> has been disabled.
[% ELSIF error == "product_edit_denied" %] [% ELSIF error == "product_edit_denied" %]
[% title = "Product Edit Access 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 You are not permitted to edit [% terms.bugs %] in product
[%+ product FILTER html %]. [%+ product FILTER html %].
[% ELSIF error == "product_has_bugs" %] [% ELSIF error == "product_has_bugs" %]
[% title = BLOCK %]Product has [% terms.Bugs %][% END %] [% title = BLOCK %]Product has [% terms.Bugs %][% END %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
There are [% nb FILTER html %] [%+ terms.bugs %] entered for this product! There are [% nb FILTER html %] [%+ terms.bugs %] entered for this product!
You must reassign those [% terms.bugs %] to another product before you You must reassign those [% terms.bugs %] to another product before you
can delete this one. can delete this one.
[% ELSIF error == "product_must_have_description" %] [% ELSIF error == "product_must_have_description" %]
[% title = "Product needs Description" %] [% title = "Product needs Description" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
You must enter a description for product '[% product FILTER html %]'. You must enter a description for product '[% product FILTER html %]'.
[% ELSIF error == "product_must_have_version" %] [% ELSIF error == "product_must_have_version" %]
[% title = "Product needs Version" %] [% title = "Product needs Version" %]
[% admindocslinks = {'products.html' => 'Administering products',
'versions.html' => 'Administering versions'} %]
You must enter a version for product '[% product FILTER html %]'. You must enter a version for product '[% product FILTER html %]'.
[% ELSIF error == "product_not_specified" %] [% ELSIF error == "product_not_specified" %]
[% title = "No Product 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 No product specified when trying to edit components, milestones, versions
or product. or product.
[% ELSIF error == "query_name_missing" %] [% ELSIF error == "query_name_missing" %]
[% title = "No Search Name Specified" %] [% title = "No Search Name Specified" %]
[% docslinks = {'list.html' => "About $terms.bug lists"} %]
You must enter a name for your search. You must enter a name for your search.
[% ELSIF error == "query_name_too_long" %] [% ELSIF error == "query_name_too_long" %]
...@@ -1087,6 +1158,7 @@ ...@@ -1087,6 +1158,7 @@
[% ELSIF error == "saved_search_used_by_whines" %] [% ELSIF error == "saved_search_used_by_whines" %]
[% title = "Saved Search In Use" %] [% title = "Saved Search In Use" %]
[% docslinks = {'whining.html' => 'About Whining'} %]
The saved search <em>[% search_name FILTER html %]</em> is being used The saved search <em>[% search_name FILTER html %]</em> is being used
by <a href="editwhines.cgi">Whining events</a> with the following subjects: by <a href="editwhines.cgi">Whining events</a> with the following subjects:
[%+ subjects FILTER html %] [%+ subjects FILTER html %]
...@@ -1099,6 +1171,7 @@ ...@@ -1099,6 +1171,7 @@
[% ELSIF error == "series_already_exists" %] [% ELSIF error == "series_already_exists" %]
[% title = "Series Already Exists" %] [% title = "Series Already Exists" %]
[% docslinks = {'reporting.html' => 'Reporting'} %]
A series named <em>[% series.category FILTER html %] / A series named <em>[% series.category FILTER html %] /
[%+ series.subcategory FILTER html %] / [%+ series.subcategory FILTER html %] /
[%+ series.name FILTER html %]</em> [%+ series.name FILTER html %]</em>
...@@ -1159,6 +1232,7 @@ ...@@ -1159,6 +1232,7 @@
[% ELSIF error == "too_many_votes_for_bug" %] [% ELSIF error == "too_many_votes_for_bug" %]
[% title = "Illegal Vote" %] [% title = "Illegal Vote" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
You may only use at most [% max FILTER html %] votes for a single You may only use at most [% max FILTER html %] votes for a single
[%+ terms.bug %] in the [%+ terms.bug %] in the
<tt>[% prod FILTER html %]</tt> product, but you are trying to <tt>[% prod FILTER html %]</tt> product, but you are trying to
...@@ -1166,6 +1240,7 @@ ...@@ -1166,6 +1240,7 @@
[% ELSIF error == "too_many_votes_for_product" %] [% ELSIF error == "too_many_votes_for_product" %]
[% title = "Illegal Vote" %] [% title = "Illegal Vote" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
You tried to use [% votes FILTER html %] votes, You tried to use [% votes FILTER html %] votes,
which exceeds the [% max FILTER html %] vote per [% terms.bug %] limit which exceeds the [% max FILTER html %] vote per [% terms.bug %] limit
for the <tt>[% prod FILTER html %]</tt> product. for the <tt>[% prod FILTER html %]</tt> product.
...@@ -1191,6 +1266,7 @@ ...@@ -1191,6 +1266,7 @@
[% ELSIF error == "version_already_exists" %] [% ELSIF error == "version_already_exists" %]
[% title = "Version Already Exists" %] [% title = "Version Already Exists" %]
[% admindocslinks = {'versions.html' => 'Administering versions'} %]
The version '[% name FILTER html %]' already exists for product ' The version '[% name FILTER html %]' already exists for product '
[%- product FILTER html %]'. [%- product FILTER html %]'.
...@@ -1215,16 +1291,19 @@ ...@@ -1215,16 +1291,19 @@
[% ELSIF error == "users_deletion_disabled" %] [% ELSIF error == "users_deletion_disabled" %]
[% title = "Deletion not activated" %] [% title = "Deletion not activated" %]
[% admindocslinks = {'useradmin.html' => 'User administration'} %]
Sorry, the deletion of user accounts is not allowed. Sorry, the deletion of user accounts is not allowed.
[% ELSIF error == "user_has_responsibility" %] [% ELSIF error == "user_has_responsibility" %]
[% title = "Can't Delete User Account" %] [% title = "Can't Delete User Account" %]
[% admindocslinks = {'useradmin.html' => 'User administration'} %]
The user you want to delete is set up for roles as default [% terms.bug %] The user you want to delete is set up for roles as default [% terms.bug %]
assignee or QA contact for at least one component. assignee or QA contact for at least one component.
For this reason, you cannot delete the account at this time. For this reason, you cannot delete the account at this time.
[% ELSIF error == "user_login_required" %] [% ELSIF error == "user_login_required" %]
[% title = "Login Name Required" %] [% title = "Login Name Required" %]
[% admindocslinks = {'useradmin.html' => 'User administration'} %]
You must enter a login name for the new user. You must enter a login name for the new user.
[% ELSIF error == "user_match_failed" %] [% ELSIF error == "user_match_failed" %]
...@@ -1234,6 +1313,7 @@ ...@@ -1234,6 +1313,7 @@
[% ELSIF error == "votes_must_be_nonnegative" %] [% ELSIF error == "votes_must_be_nonnegative" %]
[% title = "Votes Must Be Non-negative" %] [% title = "Votes Must Be Non-negative" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
Only use non-negative numbers for your [% terms.bug %] votes. Only use non-negative numbers for your [% terms.bug %] votes.
[% ELSIF error == "wrong_token_for_cancelling_email_change" %] [% ELSIF error == "wrong_token_for_cancelling_email_change" %]
...@@ -1280,6 +1360,11 @@ ...@@ -1280,6 +1360,11 @@
[% PROCESS global/header.html.tmpl %] [% PROCESS global/header.html.tmpl %]
[% END %] [% END %]
[% PROCESS global/docslinks.html.tmpl
docslinks = docslinks
admindocslinks = admindocslinks
%]
<table cellpadding="20"> <table cellpadding="20">
<tr> <tr>
<td bgcolor="#ff0000"> <td bgcolor="#ff0000">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment