[%# 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): Terry Weissman <terry@mozilla.org>
  #                 Gervase Markham <gerv@gerv.net>
  #                 Toms Baugis <toms@myrealbox.com>
  #                 Olav Vitters <olav@bkor.dhs.org>
  #                 Max Kanat-Alexander <mkanat@bugzilla.org>
  #                 Elliotte Martin <emartin@everythingsolved.com>
  #%]

[% PROCESS global/header.html.tmpl
  title = "Full Text $terms.Bug Listing"
  h1 = ""
  style_urls = ["skins/standard/show_multiple.css",
                "skins/standard/buglist.css",
                "skins/standard/comments.css"]
  doc_section = "bug_page.html"
%]

[% PROCESS bug/time.html.tmpl %]
[% IF bugs.first %]
  [% ids = [] %]
  [% FOREACH bug = error_bugs %]
    [% PROCESS bug_display error=1 %]
    [% ids.push(bug.bug_id) %]
  [% END %]
  [% FOREACH bug = bugs %]
    [% PROCESS bug_display error=0 %]
        [% ids.push(bug.bug_id) %]
  [% END %]
  [% IF ids.size > 1 %]
    <div class="bz_query_buttons">
      <form method="post" action="buglist.cgi">
        <input type="hidden" name="bug_id" value="[% ids.join(",") | html %]">
        <input type="submit" id="short_format" value="Short Format">
      </form>
    </div>
  [% END %]
[% ELSE %]
  <p>
    You'd have more luck if you gave me some [% terms.bug %] numbers.
  </p>
[% END %]

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

[%###########################################################################%]
[%# Block for an individual bug                                             #%]
[%###########################################################################%]

[% BLOCK bug_display %]
  <h1>
    [% terms.Bug %] <a href="show_bug.cgi?id=[% bug.bug_id | html %]">[% bug.bug_id | html %]</a>
    [% IF Bugzilla.get_field('alias').enabled AND bug.alias %]
      (<a href="show_bug.cgi?id=[% bug.alias | url_quote %]">
        [% bug.alias | html %]</a>)
    [% END %]
    - <span id="short_desc">[% bug.short_desc | html %]</span>
  </h1>

  <table class="bugfields">
  [% IF error %]
    <tr>
      <td class="error">
        [% IF bug.error == "InvalidBugId" %]
          '[%+ bug.bug_id | html %]' is not a valid [% terms.bug %] number
          [%- IF Bugzilla.get_field('alias').enabled %] nor a known [% terms.bug %] alias[% END %].
        [% ELSIF bug.error == "NotPermitted" %]
          You are not allowed to view this [% terms.bug %].
        [% ELSIF bug.error == "NotFound" %]
          This [% terms.bug %] cannot be found.
        [% ELSE %]
          [%+ bug.error | html %]
        [% END %]
      </td>
    </tr>
  [% ELSE %]
    [%# The rightcell block (also called by the row block) automatically shows
      # the fields from rightcells %]
    [% rightcells = ['reporter', 'assigned_to'] %]
    [% IF Bugzilla.get_field('qa_contact').enabled %]
      [% rightcells.push('qa_contact') %]
    [% END %]
    [% IF bug.cc %]
      [% rightcells.push('cc') %]
    [% END %]
    [% IF bug.get_string('keywords') %]
      [% rightcells.push('keywords') %]
    [% END %]

    [%# Determine if the bug has a flag %]
    [% FOREACH type = bug.flag_types %]
      [% IF type.flags.size %]
        [% rightcells.push('flags') %]
        [% LAST %]
      [% END %]
    [% END %]

    <tr>
      <th>[% field_descs.product | html %]:</th>
      <td>
        [% IF Bugzilla.get_field('classification').enabled %]
          [% bug.classification_obj.name | html %]/
        [%- END -%]
        [%- bug.product_obj.name | html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    [% PROCESS row cell = "component" %]

    <tr>
      <th>[% field_descs.bug_status  | html %]:</th>
      <td>
        [% bug.bug_status_obj.name | html %]
        [%+ bug.resolution_obj.name | html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    <tr>
      <th>[% field_descs.bug_severity | html %]:</th>
      <td class="bz_[% bug.bug_severity_obj.name | css_class_quote -%]">
        [% bug.bug_severity_obj.name | html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    <tr>
      <th>[% field_descs.priority | html %]:</th>
      <td class="bz_[% bug.priority_obj.name | css_class_quote -%]">
        [% bug.priority_obj.name | html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    [% PROCESS row obj=1 cell="version" %]
    [% PROCESS row obj=1 cell="target_milestone" IF Bugzilla.get_field('target_milestone').enabled %]
    [% PROCESS row obj=1 cell="rep_platform" IF Bugzilla.get_field('rep_platform').enabled %]
    [% PROCESS row obj=1 cell="op_sys" IF Bugzilla.get_field('op_sys').enabled %]
    [% obj=0 %]

    [% IF bug.bug_file_loc %]
      <tr>
        <th>[% field_descs.bug_file_loc | html %]:</th>
        <td colspan="3">
          [% IF is_safe_url(bug.bug_file_loc) %]
            <a href="[% bug.bug_file_loc | html %]">
                     [% bug.bug_file_loc | html %]</a>
          [% ELSE %]
            [% bug.bug_file_loc | html %]
          [% END %]
        </td>
      </tr>
    [% END %]

    [% IF Bugzilla.get_field('status_whiteboard').enabled && bug.status_whiteboard.length %]
      [% PROCESS row cell = "status_whiteboard" fullrow = 1 %]
    [% END %]

    [% field_counter = 0 %]
    [% FOREACH field = Bugzilla.active_custom_fields %]
      [% IF (field.type == constants.FIELD_TYPE_MULTI_SELECT || field.type == constants.FIELD_TYPE_BUG_ID_REV)
        ? bug.${field.name}.size : bug.${field.name} %]
        [% field_counter = field_counter + 1 %]
        [%# Odd-numbered fields get an opening <tr> %]
        [% '<tr>' IF field_counter % 2 %]
        [% PROCESS bug/field.html.tmpl value=bug.${field.name} editable=0 %]
        [%# Even-numbered fields get a closing <tr> %]
        [% '</tr>' IF !(field_counter % 2) %]
      [% END %]
    [% END %]
    [%# And we have to finish the row if we ended on an odd number. %]
    [% '<th></th><td></td></tr>' IF field_counter % 2 %]

    [% IF (bug.dependson.size || bug.blocked.size) %]
      [% PROCESS dependencies name = "dependson" %]
      [% PROCESS dependencies name = "blocked"  %]
    [% END %]

    [% IF user.is_timetracker %]
      <tr>
        <th>Time tracking:</th>
        <td colspan="3">
          <table class="timetracking">
            <tr>
              <th>[% field_descs.estimated_time | html %]</th>
              <th>[% field_descs.actual_time | html %]</th>
              <th>[% field_descs.work_time | html %]</th>
              <th>[% field_descs.remaining_time | html %]</th>
              <th>[% field_descs.percentage_complete | html %]</th>
              <th>Gain</th>
            </tr>
            <tr>
              <td>[% PROCESS formattimeunit time_unit=bug.estimated_time %]</td>
              <td>[% PROCESS formattimeunit time_unit=(bug.remaining_time+bug.actual_time) %]</td>
              <td>[% PROCESS formattimeunit time_unit=bug.actual_time %]</td>
              <td>[% PROCESS formattimeunit time_unit=bug.remaining_time %]</td>
              <td>[% PROCESS calculatepercentage act=bug.actual_time rem=bug.remaining_time %]</td>
              <td>[% PROCESS formattimeunit time_unit=bug.estimated_time-(bug.actual_time+bug.remaining_time) %]</td>
            </tr>
          </table>
        </td>
      </tr>
      [% IF bug.deadline %]
        [% PROCESS row cell="deadline" %]
      [% END %]
    [% END %]

    [% IF bug.attachments.size %]
      <tr>
        <th>Attachments:</th>
        <td colspan="3">
          [% IF bug.show_attachment_flags %]
            <table>
              <tr>
                <th>Description</th>
                <th>Flags</th>
              </tr>
              [% FOREACH attachment = bug.attachments %]
                <tr>
                  <td>
                    <a href="attachment.cgi?id=[% attachment.id %]">
                      [% attachment.description | html %]
                    </a>[% "<br>" IF not loop.last() %]
                  </td>
                  <td>
                    [% IF attachment.flags.size == 0 %]
                      <i>none</i>
                    [% ELSE %]
                      [% FOREACH flag = attachment.flags %]
                        [% flag.setter.nick | html %]:
                        [%+ flag.type.name | html | no_break %][% flag.status %]
                        [% IF flag.status == "?" && flag.requestee %]
                          ([% flag.requestee.nick | html %])
                        [% END %][% ", " IF not loop.last() %]
                      [% END %]
                    [% END %]
                  </td>
                </tr>
              [% END %]
            </table>
          [% ELSE %]
            [% FOREACH attachment = bug.attachments %]
              <a href="attachment.cgi?id=[% attachment.id %]">
                [% attachment.description | html %]
              </a>[% "<br>" IF not loop.last() %]
            [% END %]
          [% END %]
        </td>
      </tr>
    [% END %]
  [% END %]

  [% Hook.process("last_row", "bug/show-multiple.html.tmpl") %]
  </table>

  <br />

  [% PROCESS bug/comments.html.tmpl
     comments = bug.comments %]

[% END %]


[%###########################################################################%]
[%# Block for standard table rows                                           #%]
[%###########################################################################%]

[% BLOCK row %]
  <tr>
    <th>[% field_descs.${cell} | html %]:</th>
    [% IF obj %]
      [% SET cell = cell _ "_obj" %]
      <td[% " colspan=3" IF fullrow %]>[% bug.$cell.name | html %]</td>
    [% ELSE %]
      <td[% " colspan=3" IF fullrow %]>[% bug.$cell | html %]</td>
    [% END %]
    [% PROCESS rightcell IF !fullrow %]
  </tr>
  [% fullrow = 0 %]
[% END %]

[%############################################################################%]
[%# Block for dependencies                                                   #%]
[%############################################################################%]

[% BLOCK dependencies %]
  <tr>
    <th>[% terms.Bug %] [%+ field_descs.${name} | html %]:</th>
    <td>
      [% FOREACH depbug = bug.${name} %]
        [% depbug | bug_link(depbug) | none %][% ", " IF not loop.last() %]
      [% END %]
    </td>

    [% PROCESS rightcell %]
  </tr>
[% END %]

[%############################################################################%]
[%# Block for cells shown right of the table                                 #%]
[%############################################################################%]

[% BLOCK rightcell %]
  [% IF rightcells %]
    [% name = rightcells.shift %]
    [% IF name == "cc" %]
      <th class="rightcell">[% field_descs.cc | html %]:</th>
      <td>
        [% FOREACH c = bug.cc %]
          [% c | email | html %][% ", " IF not loop.last() %]
        [% END %]
    [% ELSIF name == "reporter" || name == "assigned_to" || name == "qa_contact" %]
      <th class="rightcell">[% field_descs.${name} | html %]:</th>
      <td>[% bug.${name}.identity | email | html %]</td>
    [% ELSIF name == "flags" %]
        <th class="rightcell">Flags:</th>
        <td>
          [% FOREACH type = bug.flag_types %]
            [% FOREACH flag = type.flags %]
              [% flag.setter.nick | html %]:
              [%+ flag.type.name | html | no_break %][% flag.status %]
              [%+ IF flag.status == "?" && flag.requestee %]
                ([% flag.requestee.nick | html %])
              [% END %]<br>
            [% END %]
          [% END %]
        </td>
    [% ELSIF name == "keywords" %]
      <th class="rightcell">[% field_descs.keywords | html %]:</th>
      <td>[% bug.get_string('keywords') | html %]</td>
    [% ELSIF name != "" %]
      <th class="rightcell">[% field_descs.${name} | html %]:</th>
      <td>[% bug.${name} | html %]</td>
    [% ELSE %]
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    [% END %]
  [% END %]
[% END %]
