[%# The contents of this file are subject to the Mozilla Public
  # License Version 1.1 (the "License"); you may not use this file
  # except in compliance with the License. You may obtain a copy of
  # the License at http://www.mozilla.org/MPL/
  #
  # Software distributed under the License is distributed on an "AS
  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  # implied. See the License for the specific language governing
  # rights and limitations under the License.
  #
  # The Original Code is the Bugzilla Bug Tracking System.
  #
  # The Initial Developer of the Original Code is Netscape Communications
  # Corporation. Portions created by Netscape are
  # Copyright (C) 1998 Netscape Communications Corporation. All
  # Rights Reserved.
  #
  # Contributor(s): Gervase Markham <gerv@gerv.net>
  #%]

[%# INTERFACE:
  # header_done: boolean. True if the header has already been printed.
  # error: string. The tag of the error.
  # 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.
  #
  # 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.
  #%]

[% PROCESS "global/field-descs.none.tmpl" %]

[% 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" %]
    [% title = "Local Storage Disabled" %]
    You cannot store attachments locally. This feature is disabled.

  [% ELSIF error == "attachment_url_disabled" %]
    [% title = "Attachment URL Disabled" %]
    You cannot attach a URL. This feature is currently disabled.

  [% ELSIF error == "auth_invalid_email" %]
    [% title = "Invalid Email Address" %]
    We received an email address (<b>[% addr FILTER html %]</b>)
    that didn't pass our syntax checking for a legal email address,
    when trying to create or update your account.
    [% IF default %]
      A legal address must contain exactly one '@',
      and at least one '.' after the @.
    [% ELSE %]
      [%+ Param('emailregexpdesc') %]
    [% END %]
    It also must not contain any illegal characters.

  [% ELSIF error == "authres_unhandled" %]
    The result value of [% value FILTER html %] was not handled by
    the login code.

  [% ELSIF error == "bad_page_cgi_id" %]
    [% title = "Invalid Page ID" %]
    The ID <code>[% page_id FILTER html %]</code> is not a
    valid page identifier.

  [% ELSIF error == "bad_arg" %]
    Bad argument <code>[% argument FILTER html %]</code> sent to
    <code>[% function FILTER html %]</code> function.

  [% ELSIF error == "bug_error" %]
    Trying to retrieve [% terms.bug %] [%+ bug.bug_id FILTER html %] returned 
    the error [% bug.error FILTER html %].
    
  [% ELSIF error == "chart_data_not_generated" %]
    [% admindocslinks = {'extraconfig.html' => 'Setting up Charting'} %]
    [% IF product %]
      Charts for the <em>[% product FILTER html %]</em> product are not
      available yet because no charting data has been collected for it since it
      was created.
    [% ELSE %]
      No charting data has been collected yet.
    [% END %]
    Please wait a day and try again.
    If you're seeing this message after a day, then you should contact
    <a href="mailto:[% Param('maintainer') %]">[% Param('maintainer') %]</a>
    and reference this error.

  [% ELSIF error == "chart_datafile_corrupt" %]
    The chart data file [% file FILTER html %] is corrupt.
        
  [% ELSIF error == "chart_dir_nonexistent" %]
    One of the directories <tt>[% dir FILTER html %]</tt> and 
    <tt>[% graph_dir FILTER html %]</tt> does not exist.
  
  [% ELSIF error == "chart_file_open_fail" %]
    Unable to open the chart datafile <tt>[% filename FILTER html %]</tt>.
  
  [% ELSIF error == "column_not_null_without_default" %]
    Failed adding the column [% name FILTER html %]:
    You cannot add a NOT NULL column with no default to an existing table
    unless you specify something for the <code>$init_value</code> argument.

  [% ELSIF error == "column_not_null_no_default_alter" %]
    You cannot alter the [% name FILTER html %] column to be NOT NULL 
    without specifying a default or something for $set_nulls_to, because
    there are NULL values currently in it.

  [% ELSIF error == "comment_extra_data_not_allowed" %]
    You tried to set the <code>extra_data</code> field to 
    '[% extra_data FILTER html %]' but comments of type [% type FILTER html %]
    do not accept an <code>extra_data</code> argument.

  [% ELSIF error == "comment_extra_data_required" %]
    Comments of type [% type FILTER html %] require an <code>extra_data</code>
    argument to be set.

  [% ELSIF error == "comment_extra_data_not_numeric" %]
    You tried to set the <code>extra_data</code> field to
    '[% extra_data FILTER html %]' but comments of type [% type FILTER html %]
    require a numeric <code>extra_data</code> argument.

  [% ELSIF error == "comment_type_invalid" %]
    '[% type FILTER html %]' is not a valid comment type.

  [% ELSIF error == "db_rename_conflict" %]
    Name conflict: Cannot rename [% old FILTER html %] to
    [% new FILTER html %] because [% new FILTER html %] already exists.

  [% ELSIF error == "cookies_need_value" %]
    Every cookie must have a value.

  [% ELSIF error == "env_no_email" %]
    [% terms.Bugzilla %] did not receive an email address from the 
    environment.
    [% IF Param("auth_env_email") %]
      This means that the '[% Param("auth_env_email") FILTER html %]'
      environment variable was empty or did not exist.
    [% ELSE %]
      You need to set the "auth_env_email" parameter to the name of
      the environment variable that will contain the user's email
      address.
    [% END %]

  [% ELSIF error == "extension_must_be_subclass" %]
    <code>[% package FILTER html %]</code> from 
    <code>[% filename FILTER html %]</code> is not a subclass of
    <code>[% class FILTER html %]</code>.

  [% ELSIF error == "extension_must_return_name" %]
    <code>[% extension FILTER html %]</code> returned
    <code>[% returned FILTER html %]</code>, which is not a valid name
    for an extension. Extensions must return their name, not <code>1</code>
    or a number. See the documentation of
    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/Extension.html">Bugzilla::Extension</a>
    for details.

  [% ELSIF error == "extension_no_name" %]
    We did not find a <code>NAME</code> method in 
    <code>[% package FILTER html %]</code> (loaded from
    <code>[% filename FILTER html %]</code>). This means that
    the extension has one or more of the following problems:

    <ul>
      <li><code>[% filename FILTER html %]</code> did not define a
        <code>[% package FILTER html %]</code> package.</li>
      <li><code>[% package FILTER html %]</code> did not define a
        <code>NAME</code> method (or the <code>NAME</code> method
        returned an empty string).</li>
    </ul>

  [% ELSIF error == "extern_id_conflict" %]
    The external ID '[% extern_id FILTER html %]' already exists
    in the database for '[% username FILTER html %]', but your
    account source says that '[% extern_user FILTER html %]' has that ID.

  [% ELSIF error == "field_choice_must_use_type" %]
    When you call a class method on <code>Bugzilla::Field::Choice</code>,
    you must call <code>Bugzilla::Field::Choice-&gt;type('some_field')</code>
    to generate the right class (you can't call class methods directly
    on Bugzilla::Field::Choice).

  [% ELSIF error == "field_not_custom" %]
    '[% field.description FILTER html %]' ([% field.name FILTER html %])
    is not a custom field.

  [% ELSIF error == "field_type_mismatch" %]
    Cannot seem to handle <code>[% field FILTER html %]</code>
    and <code>[% type FILTER html %]</code> together.

  [% ELSIF error == "field_type_not_specified" %]
    [% title = "Field Type Not Specified" %]
    You must specify a type when creating a custom field.

  [% ELSIF error == "illegal_content_type_method" %]
    Your form submission got corrupted somehow.  The <em>content
    method</em> field, which specifies how the content type gets determined,
    should have been either <em>autodetect</em>, <em>list</em>,
    or <em>manual</em>, but was instead
    <em>[% contenttypemethod FILTER html %]</em>.

  [% ELSIF error == "illegal_field" %]
    A legal [% field FILTER html %] was not set.

  [% ELSIF error == "inactive_group" %]
    Attempted to add [% terms.abug %] to group ID [% group_id FILTER html %],
    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.
          
  [% ELSIF error == "invalid_customfield_type" %]
    [% title = "Invalid Field Type" %]
    The type <em>[% type FILTER html %]</em> is not a valid field type.

  [% ELSIF error == "invalid_dimensions" %]
    [% title = "Invalid Dimensions" %]
    The width or height specified is not a positive integer.

  [% ELSIF error == "invalid_feature" %]
    [% title = "Invalid Feature Name" %]
    [% feature FILTER html %] is not a valid feature name. See
    <code>OPTIONAL_MODULES</code> in 
    <code>Bugzilla::Install::Requirements</code> for valid names.

  [% ELSIF error == "invalid_flag_association" %]
    [% title = "Invalid Flag Association" %]
    Some flags do not belong to
    [% IF attach_id %]
      attachment [% attach_id FILTER html %].
    [% ELSE %]
      [%+ terms.bug %] [%+ bug_id FILTER html %].
    [% END %]

  [% ELSIF error == "invalid_series_id" %]
    [% title = "Invalid Series" %]
    The series_id [% series_id FILTER html %] is not valid. It may be that
    this series has been deleted.

  [% ELSIF error == "invalid_webservergroup" %]
    There is no such group: [% group FILTER html %]. Check your $webservergroup
    setting in [% constants.bz_locations.localconfig FILTER html %].

  [% ELSIF error == "mismatched_bug_ids_on_obsolete" %]
    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 %].

  [% ELSIF error == "feature_disabled" %]
    The [% install_string("feature_$feature") FILTER html %] feature is not
    available in this [% terms.Bugzilla %]. 
    [% IF user.in_group('admin') %]
      If you would like to enable this feature, please run 
      <kbd>checksetup.pl</kbd> to see how to install the necessary
      requirements for this feature.
    [% END %]

  [% ELSIF error == "flag_unexpected_object" %]
    [% title = "Object Not Recognized" %]
    Flags cannot be set for objects of type [% caller FILTER html %].
    They can only be set for [% terms.bugs %] and attachments.

  [% ELSIF error == "flag_requestee_disabled" %]
    [% title = "Flag not Requestable from Specific Person" %]
    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
    to create new flags.

  [% ELSIF error == "flag_type_nonexistent" %]
    There is no flag type with the ID <em>[% id FILTER html %]</em>.

  [% ELSIF error == "flag_type_target_type_invalid" %]
    The target type was neither <em>[% terms.bug %]</em> nor <em>attachment</em>
    but rather <em>[% target_type FILTER html %]</em>.
  
  [% ELSIF error == "invalid_field_name" %]
    Can't use [% field FILTER html %] as a field name.

  [% ELSIF error == "invalid_keyword_id" %]
    The keyword ID <em>[% id FILTER html %]</em> couldn't be
    found.

  [% ELSIF error == "invalid_user" %]
    [% title = "Invalid User" %]
    There is no user account
    [% IF user_id %]
      with ID <em>[% user_id FILTER html %]</em>.
    [% ELSIF user_login %]
      with login name <em>[% user_login FILTER html %]</em>.
    [% ELSE %]
      given.
    [% END %]

  [% ELSIF error == "jobqueue_insert_failed" %]
   [% title = "Job Queue Failure" %]
    Inserting a <code>[% job FILTER html %]</code> job into the Job 
    Queue failed with the following error: [% errmsg FILTER html %]

  [% ELSIF error == "jobqueue_no_job_mapping" %]
    <code>Bugzilla::JobQueue</code> has not been configured to handle
    the job "[% job FILTER html %]".  You need to add this job type
    to the <code>JOB_MAP</code> constant in <code>Bugzilla::JobQueue</code>.

  [% ELSIF error == "ldap_bind_failed" %]
    Failed to bind to the LDAP server. The error message was: 
    <code>[% errstr FILTER html %]</code>

  [% ELSIF error == "ldap_cannot_retreive_attr" %]
    The specified LDAP attribute [% attr FILTER html %] was not found.

  [% ELSIF error == "ldap_connect_failed" %]
    Could not connect to the LDAP server(s) <code>[% server FILTER html %]</code>.

  [% ELSIF error == "ldap_start_tls_failed" %]
    Could not start TLS with LDAP server: <code>[% error FILTER html %]</code>.

  [% ELSIF error == "ldap_search_error" %]
    An error occurred while trying to search LDAP for 
    &quot;[% username FILTER html %]&quot;: 
    [% IF errstr %]
      <code>[% errstr FILTER html %]</code>
    [% ELSE %]
      Unable to find user in LDAP
    [% END %]

  [% ELSIF error == "ldap_server_not_defined" %]
    The LDAP server for authentication has not been defined.

  [% 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 %]

  [% ELSIF error == "missing_bug_id" %]
    No [% terms.bug %] ID was given.
    
  [% ELSIF error == "missing_series_id" %]
    Having inserted a series into the database, no series_id was returned for
    it. Series: [% series.category FILTER html %] / 
    [%+ series.subcategory FILTER html %] / 
    [%+ series.name FILTER html %].
    
  [% 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 == "param_invalid" %]
    [% title = "Invalid Parameter" %]
    <code>[% param FILTER html %]</code> is not a valid parameter
    for the [% function FILTER html %] function.

  [% ELSIF error == "param_must_be_numeric" %]
    [% title = "Invalid Parameter" %]
    Invalid parameter <code>[% param FILTER html %]</code> passed to 
    <code>[% function FILTER html %]</code>: It must be numeric.

  [% ELSIF error == "param_required" %]
    [% title = "Missing Parameter" %]
    The function <code>[% function FILTER html %]</code> requires
    a <code>[% param FILTER html %]</code> argument, and that
    argument was not set.

  [% ELSIF error == "params_required" %]
    [% title = "Missing Parameter" %]
    The function <code>[% function FILTER html %]</code> requires
    that you set one of the following parameters:
    <code>[% params.join(', ') FILTER html %]</code>

  [% ELSIF error == "product_empty_group_controls" %]
    [% title = "Missing Group Controls" %]
    New settings must be defined to edit group controls for
    the [% group.name FILTER html %] group.

  [% ELSIF error == "product_illegal_group_control" %]
    [% title = "Illegal Group Control" %]
    '[% value FILTER html %]' is not a legal value for
    the '[% field FILTER html %]' field.

  [% ELSIF error == "protection_violation" %]
    The function <code>[% function FILTER html %]</code> was called

    [% IF argument %]
        with the argument <code>[% argument FILTER html %]</code>
    [% END %]

    from
   
    [% IF caller %]
        <code>[%+ caller FILTER html %]</code>, which is
    [% END %]

    outside the package. This function may only be called from
    a subclass of <code>[% superclass FILTER html %]</code>.

  [% ELSIF error == "radius_preparation_error" %]
    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
    [%+ ELSIF fld == "y" %]the vertical axis
    [%+ ELSIF fld == "z" %]the multiple tables/images
    [%+ ELSE %]a report axis[% END %] field.

  [% ELSIF error == "setting_info_invalid" %]
    To create a new setting, you must supply a setting name, a list of 
    value/sortindex pairs, and the default value.

  [% ELSIF error == "setting_name_invalid" %]
    The setting name <em>[% name FILTER html %]</em> is not a valid
    option. Setting names must begin with a letter, and contain only
    letters, digits, or the symbols '_', '-', '.', or ':'.

  [% ELSIF error == "setting_subclass_invalid" %]
    There is no such Setting subclass as
    <code>[% subclass FILTER html %]</code>.

  [% ELSIF error == "setting_value_invalid" %]
    The value "<code>[% value FILTER html %]</code>" is not in the list of
    legal values for the <em>[% name FILTER html %]</em> setting.

  [% ELSIF error == "token_generation_error" %]
    Something is seriously wrong with the token generation system.

  [% ELSIF error == "template_error" %]
    [% template_error_msg FILTER html %]

  [% ELSIF error == "template_invalid" %]
    Template with invalid file name found in hook call: [% name FILTER html %].

  [% ELSIF error == "unable_to_retrieve_password" %]
     I was unable to retrieve your old password from the database.

  [% 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.

  [% ELSIF error == "usage_mode_invalid" %]
    '[% invalid_usage_mode FILTER html %]' is not a valid usage mode.

  [% ELSIF error == "must_be_patch" %]
    [% title = "Attachment Must Be Patch" %]
    Attachment #[% attach_id FILTER html %] must be a patch.

  [% ELSIF error == "not_in_transaction" %]
    Attempted to end transaction without starting one first.

  [% ELSIF error == "comma_operator_deprecated" %]
    [% title = "SQL query generator internal error" %]
    There is an internal error in the SQL query generation code,
    creating queries with implicit JOIN.

  [% ELSIF error == "invalid_post_bug_submit_action" %]
    Invalid setting for post_bug_submit_action

  [% ELSE %]
    [%# Try to find hooked error messages %]
    [% error_message = Hook.process("errors") %]
    [% IF NOT error_message %]
      [% title = "Internal error" %]
      An internal error has occurred, but [% terms.Bugzilla %] doesn't know
      what <code>[% error FILTER html %]</code> means.

      If you are a [% terms.Bugzilla %] end-user seeing this message, please save
      this page and send it to [% Param('maintainer') %].
    [% ELSE %]
      [% error_message FILTER none %]
    [% END %]
  [% END %]
[% END %]

[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
[% USE Bugzilla %]
[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
  [% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
    [% error_message FILTER none %]
  [% ELSE %]
    [% error_message FILTER txt %]
  [% END %]
  [% RETURN %]
[% END %]

[% UNLESS header_done %]
  [% PROCESS global/header.html.tmpl %]
[% END %]

[% PROCESS global/docslinks.html.tmpl
   docslinks      = docslinks
   admindocslinks = admindocslinks
%]

<tt>
  <p>
    [% terms.Bugzilla %] has suffered an internal error. Please save this page and send
    it to [% Param("maintainer") %] with details of what you were doing at
    the time this message appeared.
  </p>
  <script type="text/javascript"> <!--
    document.write("<p>URL: " + 
                    document.location.href.replace(/&/g,"&amp;")
                                          .replace(/</g,"&lt;")
                                          .replace(/>/g,"&gt;") + "</p>");
  // -->
  </script>
</tt>

<table cellpadding="20">
  <tr>
    <td bgcolor="#ff0000">
      <font size="+2">
        [% error_message FILTER none %]
      </font>
    </td>
  </tr>
</table>

[% IF variables %]
  <pre>
Variables:
  [% FOREACH key = variables.keys %]
    [%+ key FILTER html %]: [%+ variables.$key FILTER html %]
  [% END %]
  </pre>
[% END %]

[% PROCESS global/footer.html.tmpl %]
