]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 106640 - allow translation of system messages. Patch by gerv; r=burnus.
authorgerv%gerv.net <>
Sat, 27 Jul 2002 03:39:14 +0000 (03:39 +0000)
committergerv%gerv.net <>
Sat, 27 Jul 2002 03:39:14 +0000 (03:39 +0000)
CGI.pl
template/en/default/global/code-error.html.tmpl
template/en/default/global/user-error.html.tmpl

diff --git a/CGI.pl b/CGI.pl
index 4dfc772e8a973e0875fac851c1240d7747fa45bc..d3ca9f8f966d1e827d5d696c92f8c20e82c58694 100644 (file)
--- a/CGI.pl
+++ b/CGI.pl
@@ -865,7 +865,6 @@ sub PutFooter {
 # ThrowTemplateError instead.
 sub DisplayError {
   ($vars->{'error'}, $vars->{'title'}) = (@_);
-  $vars->{'title'} ||= "Error";
 
   print "Content-type: text/html\n\n" if !$vars->{'header_done'};
   $template->process("global/user-error.html.tmpl", $vars)
@@ -878,11 +877,10 @@ sub DisplayError {
 # $vars->{'variables'} is a reference to a hash of useful debugging info.
 sub ThrowCodeError {
   ($vars->{'error'}, $vars->{'variables'}, my $unlock_tables) = (@_);
-  $vars->{'title'} = "Code Error";
 
   SendSQL("UNLOCK TABLES") if $unlock_tables;
   
-  # We may optionally log something to file here.
+  # We may one day log something to file here.
   
   print "Content-type: text/html\n\n" if !$vars->{'header_done'};
   $template->process("global/code-error.html.tmpl", $vars)
@@ -892,9 +890,12 @@ sub ThrowCodeError {
 }
 
 # For errors made by the user.
+# The correct use of this function is to pass an error tag, defined in
+# user-error.html.tmpl, as the first parameter, and then, optionally,
+# undef as the second parameter and $unlock_tables as the third.
+# The second parameter will eventually go away.
 sub ThrowUserError {
   ($vars->{'error'}, $vars->{'title'}, my $unlock_tables) = (@_);
-  $vars->{'title'} ||= "Error";
 
   SendSQL("UNLOCK TABLES") if $unlock_tables;
   
@@ -905,18 +906,20 @@ sub ThrowUserError {
   exit;
 }
 
-# If the template system isn't working, we can't use a template.
-# This should only be called if a template->process() fails.
+# This function should only be called if a template->process() fails.
+# It tries another template first, because often one template being
+# broken or missing doesn't mean that they all are. But it falls back on
+# a print statement.
 # The Content-Type will already have been printed.
 sub ThrowTemplateError {
-    ($vars->{'error'}) = (@_);
-    $vars->{'title'} = "Template Error";
+    ($vars->{'template_error_msg'}) = (@_);
+    $vars->{'error'} = "template_error";
     
     # Try a template first; but if this one fails too, fall back
     # on plain old print statements.
     if (!$template->process("global/code-error.html.tmpl", $vars)) {
         my $maintainer = Param('maintainer');
-        my $error = html_quote($vars->{'error'});
+        my $error = html_quote($vars->{'template_error_msg'});
         my $error2 = html_quote($template->error());
         print <<END;
         <tt>
index 4b5ac2f67aa15bbc53299a133998ae7866602e80..64bf5064e3220a04cce812033c8a7d710f00126f 100644 (file)
 
 [%# INTERFACE:
   # header_done: boolean. True if the header has already been printed.
-  # error: string. The error message to be printed. May contain HTML.
+  # error: string. The tag of the error, or the error message to be displayed
+  # (deprecated). May contain HTML if it's an error message.
+  # title: string. If error is an error message, the title (deprecated.)
   # variables: hash. Useful data about the problem. The keys are the variable
   #  names, and the values the variable values.
   #%]
   
+[%# This is a list of all the possible code errors. Please keep them in
+  # alphabetical order by error tag, and leave a blank line between errors.
+  #%]  
+
+[% DEFAULT title = "Internal Error" %]
+  
+[% error_message = BLOCK %]
+  [% IF    error == "aaa_example_error_tag" %]
+    [% title = "Example Error" %]    
+    This is an example error. The title is set above. This text is the body
+    of the error. It can contain arbitrary <b>HTML</b>, and also references
+    to any [% parameters %] which you may have set before calling
+    ThrowCodeError.
+
+  [% ELSIF error == "another_error_tag" %]
+    This is another sample error, without a special title. This 
+    should be the usual usage for this file. This sample can be removed.
+
+  [% ELSIF error == "template_error" %]
+    [% template_error_msg %]
+
+  [% ELSE %]
+    [%# Cope with legacy calling convention, where "error" was the string
+      # to print. 
+      #%]
+        
+    [% error %]
+  [% END %]
+[% END %]
+
 [% UNLESS header_done %]
   [% PROCESS global/header.html.tmpl %]
 [% END %]
@@ -46,7 +78,7 @@
   <tr>
     <td bgcolor="#ff0000">
       <font size="+2">
-        [% error %]
+        [% error_message %]
       </font>
     </td>
   </tr>
index f24b5293f11e781387f75996a4464b9d355d8aab..b9654a1359ac0e537e7f2fd2b1d5769d53b8e879 100644 (file)
 
 [%# INTERFACE:
   # header_done: boolean. True if the header has already been printed.
-  # error: string. The error message to be displayed. May contain HTML.
+  # error: string. The tag of the error, or the error message to be displayed
+  # (deprecated). May contain HTML if it's an error message.
+  # title: string. If error is an error message, the title (deprecated.)
   #%]
+
+[%# This is a list of all the possible user errors. Please keep them in
+  # alphabetical order by error tag, and leave a blank line between errors.
+  #%]  
+  
+[% DEFAULT title = "Error" %]
   
+[% error_message = BLOCK %]
+  [% IF    error == "aaa_example_error_tag" %]
+    [% title = "Example Error" %]    
+    This is an example error. The title is set above. This text is the body
+    of the error. It can contain arbitrary <b>HTML</b>, and also references
+    to any [% parameters %] which you may have set before calling
+    ThrowUserError.
+
+  [% ELSIF error == "another_error_tag" %]
+    [% title = "Another Error" %]
+    This is another sample error. It can be removed.
+
+  [% ELSE %]
+    [%# Cope with legacy calling convention, where "error" was the string
+      # to print. 
+      #%]
+        
+    [% error %]
+  [% END %]
+[% END %]
+
 [% UNLESS header_done %]
   [% PROCESS global/header.html.tmpl %]
 [% END %]
@@ -32,7 +61,7 @@
   <tr>
     <td bgcolor="#ff0000">
       <font size="+2">
-        [% error %]
+        [% error_message %]
       </font>
     </td>
   </tr>