[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[% PROCESS global/header.html.tmpl
  title = "Full Text $terms.Bug Listing"
  h1 = ""
  style_urls = ["skins/standard/show_multiple.css",
                "skins/standard/buglist.css"]
  doc_section = "bug_page.html"
%]
[% PROCESS bug/time.html.tmpl %]
[% IF bugs.first %]
  [% ids = [] %]
  [% FOREACH bug = bugs %]
    [% PROCESS bug_display %]
    [% ids.push(bug.bug_id) UNLESS bug.error %]
  [% 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(",") FILTER 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 FILTER html %]">[% bug.bug_id FILTER html %]</a>
    [% IF bug.alias AND NOT bug.error %]
      (<a href="show_bug.cgi?id=[% bug.alias FILTER uri %]">
        [% bug.alias FILTER html %]</a>)
    [% END %]
  </h1>

  <table class="bugfields">
  [% IF bug.error %]
    <tr>
      <td class="error">
        [% IF bug.error == "InvalidBugId" %]
          '[%+ bug.bug_id FILTER html %]' is not a valid [% terms.bug %] number
          nor a known [% terms.bug %] alias.
        [% 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 FILTER 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 Param('useqacontact') %]
      [% rightcells.push('qa_contact') %]
    [% END %]
    [% rightcells.push('') %]
    [% IF bug.cc.size %]
      [% rightcells.push('cc') %]
    [% END %]
    [% IF bug.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 %]

    [% PROCESS row cell = "short_desc" fullrow = 1 %]

    <tr>
      <th>[% field_descs.product FILTER html %]:</th>
      <td>
        [% IF Param("useclassification") && bug.classification_id != 1 %]
          [[% bug.classification FILTER html %]]&nbsp;
        [% END %]
        [% bug.product FILTER html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    [% PROCESS row cell = "component" %]

    <tr>
      <th>[% field_descs.bug_status  FILTER html %]:</th>
      <td>
        [% display_value("bug_status", bug.bug_status) FILTER html %]
        [%+ display_value("resolution", bug.resolution) FILTER html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

    <tr>
      <th>[% field_descs.bug_severity FILTER html %]:</th>
      <td class="bz_[% bug.bug_severity FILTER css_class_quote -%]">
        [% display_value("bug_severity", bug.bug_severity) FILTER html %]
      </td>

      [% PROCESS rightcell %]
    </tr>

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

      [% PROCESS rightcell %]
    </tr>

    [% PROCESS row cell = "version" %]
    [% PROCESS row cell = "target_milestone"  IF Param('usetargetmilestone') %]
    [% PROCESS row cell = "rep_platform" %]
    [% PROCESS row cell = "op_sys"  %]

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

    [% IF bug.see_also.size %]
      <tr>
        <th>[% field_descs.see_also FILTER html %]:</th>
        <td colspan="3">
          [% FOREACH see_also = bug.see_also %]
            <a href="[% see_also.name FILTER html %]">[% see_also.name FILTER html %]</a>
            [% "<br>" IF not loop.last() %]
          [% END %]
        </td>
      </tr>
    [% END %]

    [% IF Param("usestatuswhiteboard") %]
      [% PROCESS row cell = "status_whiteboard" fullrow = 1 %]
    [% END %]

    [% USE Bugzilla %]
    [% field_counter = 0 %]
    [% FOREACH field = Bugzilla.active_custom_fields %]
        [% 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) %]
        [% IF extra_field_item %]
          [% field_counter = field_counter + 1 %]
          [% '<tr>' IF field_counter % 2 %]
          <th>[% extra_field_item.header FILTER none %]</th>
          <td>[% extra_field_item.data FILTER none %]</td>
          [% '</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 FILTER html %]</th>
              <th>[% field_descs.actual_time FILTER html %]</th>
              <th>[% field_descs.work_time FILTER html %]</th>
              <th>[% field_descs.remaining_time FILTER html %]</th>
              <th>[% field_descs.percentage_complete FILTER 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>
      [% PROCESS row cell="deadline" %]
    [% 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 FILTER 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 FILTER html %]:
                        [%+ flag.type.name FILTER html FILTER no_break %][% flag.status %]
                        [% IF flag.status == "?" && flag.requestee %]
                          ([% flag.requestee.nick FILTER 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 FILTER 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} FILTER html %]:</th>
    <td[% " colspan=3" IF fullrow %]>[% display_value(cell, bug.${cell}) FILTER html %]</td>
    [% PROCESS rightcell IF !fullrow %]
  </tr>
  [% fullrow = 0 %]
[% END %]


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

[% BLOCK dependencies %]
  <tr>
    <th>[% terms.Bug %] [%+ field_descs.${name} FILTER html %]:</th>
    <td>
      [% FOREACH depbug = bug.${name} %]
        [% depbug FILTER bug_link(depbug) FILTER 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 FILTER html %]:</th>
      <td>
        [% FOREACH c = bug.cc %]
          [% c FILTER email FILTER html %][% ", " IF not loop.last() %]
        [% END %]
    [% ELSIF name == "reporter" || name == "assigned_to" 
             || name == "qa_contact" %]
      <th class="rightcell">[% field_descs.${name} FILTER html %]:</th>
      <td>[% bug.${name}.identity FILTER email FILTER html %]</td>
    [% ELSIF name == "flags" %]
        <th class="rightcell">Flags:</th>
        <td>
          [% FOREACH type = bug.flag_types %]
            [% FOREACH flag = type.flags %]
                [% flag.setter.nick FILTER html %]:
                [%+ flag.type.name FILTER html FILTER no_break %][% flag.status %]
                [%+ IF flag.status == "?" && flag.requestee %]
                  ([% flag.requestee.nick FILTER html %])
                [% END %]<br>
            [% END %]
          [% END %]
        </td>
    [% ELSIF name != "" %]
      <th class="rightcell">[% field_descs.${name} FILTER html %]:</th>
      <td>[% display_value(name, bug.${name}) FILTER html %]</td>
    [% ELSE %]
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    [% END %]
  [% END %]
[% END %]
