aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xattachment.cgi2
-rwxr-xr-xdescribecomponents.cgi5
-rwxr-xr-xduplicates.cgi4
-rwxr-xr-xpost_bug.cgi4
-rwxr-xr-xprocess_bug.cgi3
-rwxr-xr-xquips.cgi2
-rw-r--r--t/002goodperl.t28
-rw-r--r--template/en/default/global/user-error.html.tmpl21
-rwxr-xr-xuserprefs.cgi3
9 files changed, 60 insertions, 12 deletions
diff --git a/attachment.cgi b/attachment.cgi
index 43b2b4940..45538ae23 100755
--- a/attachment.cgi
+++ b/attachment.cgi
@@ -142,7 +142,7 @@ sub validateID
my ($bugid, $isprivate) = FetchSQLData();
ValidateBugID($bugid);
if (($isprivate > 0 ) && Param("insidergroup") && !(UserInGroup(Param("insidergroup")))) {
- ThrowUserError("You are not permitted access to this attachment.");
+ ThrowUserError("attachment_access_denied");
}
}
diff --git a/describecomponents.cgi b/describecomponents.cgi
index 9edb5dfa0..be3be4b9f 100755
--- a/describecomponents.cgi
+++ b/describecomponents.cgi
@@ -87,7 +87,10 @@ my $product = $::FORM{'product'};
# cannot get any other information about that product.
my $product_id = get_product_id($product);
-ThrowUserError("The product name is invalid.") unless $product_id;
+if (!$product_id) {
+ $::vars->{'product'} = $product;
+ ThrowUserError("invalid_product_name");
+}
# Make sure the user is authorized to access this product.
if (Param("usebuggroups") && GroupExists($product)) {
diff --git a/duplicates.cgi b/duplicates.cgi
index 285c65717..5196027ac 100755
--- a/duplicates.cgi
+++ b/duplicates.cgi
@@ -65,8 +65,8 @@ my $product_id;
if ($product) {
$product_id = get_product_id($product);
if (!$product_id) {
- ThrowUserError("The product <tt>" . html_quote($product) .
- "</tt> does not exist");
+ $vars->{'product'} = $product;
+ ThrowUserError("invalid_product_name");
}
}
diff --git a/post_bug.cgi b/post_bug.cgi
index bab55a9ac..b7fdf66d5 100755
--- a/post_bug.cgi
+++ b/post_bug.cgi
@@ -71,8 +71,8 @@ ValidateComment($comment);
my $product = $::FORM{'product'};
my $product_id = get_product_id($product);
if (!$product_id) {
- ThrowUserError("Sorry, the product <tt>" . html_quote($product) .
- "</tt> does not exist");
+ $vars->{'product'} = $product;
+ ThrowUserError("invalid_product_name");
}
# Set cookies
diff --git a/process_bug.cgi b/process_bug.cgi
index 59bb83e0e..ab65c0da5 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -558,8 +558,7 @@ if ($::FORM{'product'} ne $::dontchange) {
my $comp_id; # Remember, can't use this for mass changes
if ($::FORM{'component'} ne $::dontchange) {
if (!defined $prod_id) {
- ThrowUserError("You cannot change the component from a list of bugs " .
- "covering more than one product");
+ ThrowUserError("no_component_change_for_multiple_products");
}
$comp_id = get_component_id($prod_id,
$::FORM{'component'});
diff --git a/quips.cgi b/quips.cgi
index 7db312c61..f120e5a24 100755
--- a/quips.cgi
+++ b/quips.cgi
@@ -63,7 +63,7 @@ if ($action eq "add") {
}
if (Param('enablequips') ne "on") {
- ThrowUserError("This site does not permit the addition of new quips");
+ ThrowUserError("no_new_quips");
exit();
}
diff --git a/t/002goodperl.t b/t/002goodperl.t
index 1431e7fe8..973a5fb88 100644
--- a/t/002goodperl.t
+++ b/t/002goodperl.t
@@ -44,7 +44,7 @@ use lib 't';
use Support::Files;
-use Test::More tests => (scalar(@Support::Files::testitems) * 2);
+use Test::More tests => (scalar(@Support::Files::testitems) * 3);
my @testitems = @Support::Files::testitems; # get the files to test.
@@ -116,4 +116,30 @@ foreach my $file (@testitems) {
}
}
+# Check to see that all error messages use tags (for l10n reasons.)
+foreach my $file (@testitems) {
+ $file =~ s/\s.*$//; # nuke everything after the first space (#comment)
+ next if (!$file); # skip null entries
+ if (! open (FILE, $file)) {
+ ok(0,"could not open $file --WARNING");
+ next;
+ }
+ my $lineno = 0;
+ my $error = 0;
+
+ while (my $file_line = <FILE>) {
+ $lineno++;
+ if ($file_line =~ /Throw.*Error\("(.*?)"/) {
+ if ($1 =~ /\s/) {
+ ok(0,"$file has a Throw*Error call on line $lineno
+ which doesn't use a tag --ERROR");
+ $error = 1;
+ }
+ }
+ }
+
+ ok(1,"$file uses Throw*Error calls correctly") if !$error;
+
+ close(FILE);
+}
exit 0;
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 64b354219..4edacf2c8 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -75,6 +75,10 @@
Bug aliases cannot be longer than 20 characters.
Please choose a shorter alias.
+ [% ELSIF error == "attachment_access_denied" %]
+ [% title = "Access Denied" %]
+ You are not permitted access to this attachment.
+
[% ELSIF error == "buglist_parameters_required" %]
[% title = "Parameters Required" %]
[% url = "query.cgi" %]
@@ -155,6 +159,10 @@
[% title = "Invalid Bug ID" %]
The bug id [% bug_id FILTER html %] is invalid.
+ [% ELSIF error == "invalid_product_name" %]
+ [% title = "Invalid Product Name" %]
+ The product name '[% product FILTER html %]' is invalid or does not exist.
+
[% ELSIF error == "invalid_username" %]
[% title = "Invalid Username" %]
The name <tt>[% name FILTER html %]</tt> is not a valid username.
@@ -182,6 +190,11 @@
[% title = "No Bugs Chosen" %]
You apparently didn't choose any bugs to modify.
+ [% ELSIF error == "no_component_change_for_multiple_products" %]
+ [% title = "Action Not Permitted" %]
+ You cannot change the component for a list of bugs covering more than
+ one product.
+
[% ELSIF error == "no_dupe_stats" %]
[% title = "Cannot Find Duplicate Statistics" %]
There are no duplicate statistics for today ([% today %]) or yesterday.
@@ -200,6 +213,10 @@
There are no duplicate statistics for today ([% today %]), and an error
occurred opening yesterday's dupes file: [% error_msg FILTER html %].
+ [% ELSIF error == "no_new_quips" %]
+ [% title = "No New Quips" %]
+ This site does not permit the addition of new quips.
+
[% ELSIF error == "page_not_found" %]
[% title = "Page not found" %]
The page you requested cannot be found.
@@ -214,6 +231,10 @@
[% 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_tab" %]
+ [% title = "Unknown Tab" %]
+ <code>[% current_tab_name FILTER html %]</code> is not a legal tab name.
[% ELSE %]
[%# Cope with legacy calling convention, where "error" was the string
diff --git a/userprefs.cgi b/userprefs.cgi
index 33b377574..808aebf40 100755
--- a/userprefs.cgi
+++ b/userprefs.cgi
@@ -395,8 +395,7 @@ SWITCH: for ($current_tab_name) {
DoPermissions();
last SWITCH;
};
- ThrowUserError("Unknown tab <code>" . html_quote($current_tab_name)
- . "</code>");
+ ThrowUserError("current_tab_name");
}
# Generate and return the UI (HTML page) from the appropriate template.