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

[%# INTERFACE:
  # searchtype: string. Type of search - either "series", "saved" or undef.
  # ...
  # defaultsavename: string. The default name for saving the query.
  #%]

[%############################################################################%]
[%# Template Initialization                                                  #%]
[%############################################################################%]

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

[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]

[% unfiltered_title = "$terms.Bug List" %]
[% IF searchname || defaultsavename %]
  [% unfiltered_title = unfiltered_title _ ": " _ (searchname OR defaultsavename) %]
[% END %]
[% title = unfiltered_title FILTER html %]

[% qorder = order FILTER uri IF order %]

[% javascript =  BLOCK %]
  [% IF quicksearch %]
    [% new_param = BLOCK ~%]
      quicksearch=[% quicksearch FILTER uri %]
      [%~ IF cgi.param('list_id') ~%]
        &list_id=[% cgi.param('list_id') FILTER uri %]
      [%~ END %]
    [% END %]
  [% ELSIF cgi.param('token') != '' %]
    [% new_param = cgi.canonicalise_query('token', 'cmdtype', 'remtype') %]
  [% ELSE %]
    [% new_param = cgi.canonicalise_query %]
  [% END %]

  [% IF new_param.length + 12 < constants.CGI_URI_LIMIT %]
    if (history && history.replaceState) {
      history.replaceState(null, "[% unfiltered_title FILTER js %]",
                           "buglist.cgi?[% new_param FILTER js %]");
      document.title = "[% unfiltered_title FILTER js %]";
    }
  [% END %]
  [% javascript FILTER none %]
[% END %]

[%############################################################################%]
[%# Page Header                                                              #%]
[%############################################################################%]

[% PROCESS global/header.html.tmpl
  title = title
  style = style
  atomlink = "buglist.cgi?$urlquerypart&title=$title&ctype=atom" 
  yui = [ 'autocomplete', 'calendar' ]
  javascript_urls = [ "js/util.js", "js/field.js", "js/TUI.js" ]
  style_urls = [ "skins/standard/buglist.css" ]
  doc_section = "query.html#list"
%]

<div class="bz_query_head">
  <span class="bz_query_timestamp">
    [% currenttime FILTER time('%a %b %e %Y %T %Z') FILTER html %]<br>
  </span>

  [% IF debug %]
    <div class="bz_query_debug">
      <p>Total execution time: [% query_time FILTER html %] seconds</p>
      [% FOREACH query = queries %]
        <p>[% query.sql FILTER html %]</p>
        <p>Execution time: [% query.time FILTER html %] seconds</p>
        [% IF query.explain %]
          <pre>[% query.explain FILTER html %]</pre>
        [% END %]
      [% END %]
    </div>
  [% END %]

  [% IF user.settings.display_quips.value == 'on' %]
    [% DEFAULT quip = "$terms.Bugzilla would like to put a random quip here, but no one has entered any." %]
    <span class="bz_quip">
      <a href="quips.cgi"><em>[% quip FILTER html %]</em></a>
    </span>
  [% END %]

</div>

[% IF toolong %]
  <h2 class="bz_smallminded">
    This list is too long for [% terms.Bugzilla %]'s little mind; the
    Next/Prev/First/Last buttons won't appear on individual [% terms.bugs %].
  </h2>
[% END %]

[% SET shown_types = [
  'notequals', 'regexp', 'notregexp', 'lessthan', 'lessthaneq', 
  'greaterthan', 'greaterthaneq', 'changedbefore', 'changedafter', 
  'changedfrom', 'changedto', 'changedby', 'notsubstring', 'nowords',
  'nowordssubstr', 'notmatches',
] %]
<a id="search_description_controller" class="bz_default_hidden"
   href="javascript:TUI_toggle_class('search_description')">Hide Search Description</a>
[%# Show the link if the browser supports JS %]
<script type="text/javascript">
  TUI_alternates['search_description'] = 'Show Search Description';
  YAHOO.util.Dom.removeClass('search_description_controller', 
                             'bz_default_hidden');
</script>

<ul class="search_description">
[% FOREACH desc_item = search_description %]
  <li>
    <strong>[% field_descs.${desc_item.field} FILTER html %]:</strong>
    [% IF shown_types.contains(desc_item.type) || debug %]
      ([% search_descs.${desc_item.type} FILTER html %])
    [% END %]
    [% FOREACH val IN desc_item.value.split(',') %]
      [%+ display_value(desc_item.field, val) FILTER html %][% ',' UNLESS loop.last %]
    [% END %]
    [% IF debug %]
      (<code>[% desc_item.term FILTER html %]</code>)
   [% END %]
  </li>
[% END %]
</ul>

<hr>

[%############################################################################%]
[%# Preceding Status Line                                                    #%]
[%############################################################################%]

[% IF bugs.size > 9 %]
  [% PROCESS num_results %]
[% END %]

[%############################################################################%]
[%# Start of Change Form                                                     #%]
[%############################################################################%]

[% IF dotweak %]
  <form name="changeform" method="post" action="process_bug.cgi">
[% END %]

[%############################################################################%]
[%# Bug Table                                                                #%]
[%############################################################################%]

[% PROCESS list/table.html.tmpl %]

[%############################################################################%]
[%# Succeeding Status Line                                                   #%]
[%############################################################################%]

[% PROCESS num_results %]

[% IF bugs.size == 0 %]
  <ul class="zero_result_links">
    <li>[% PROCESS enter_bug_link %]</li>
    [% IF one_product.defined %]
      <li><a href="enter_bug.cgi">File a new [% terms.bug %] in a
        different product</a></li>
    [% END %]
    <li><a href="[% PROCESS edit_search_url %]">Edit this search</a></li>
    <li><a href="query.cgi">Start a new search</a></li>
  </ul>
[% END %]

<br>

[%############################################################################%]
[%# Rest of Change Form                                                      #%]
[%############################################################################%]

[% IF dotweak %]
  [% PROCESS "list/edit-multiple.html.tmpl" %]
  </form>
  <hr>
[% END %]

[%############################################################################%]
[%# Navigation Bar                                                           #%]
[%############################################################################%]

<table>
  <tr>
    [% IF bugs.size > 0 %]
      <td valign="middle" class="bz_query_buttons">
        <form method="post" action="show_bug.cgi">
          [% id = buglist.join(",") %]
          <input type="hidden" name="id" value="[% id FILTER html %]">
          <input type="hidden" name="format" value="multiple">
          <input type="submit" id="long_format" value="Long Format">
        </form>
        <form method="post" action="show_bug.cgi">
            <input type="hidden" name="ctype" value="xml">
          [% FOREACH id = buglist %]
            <input type="hidden" name="id" value="[% id FILTER html %]">
          [% END %]
            <input type="hidden" name="excludefield" value="attachmentdata">
            <input type="submit" value="XML" id="xml">
        </form>

        [% IF user.is_timetracker %]
          <form method="post" action="summarize_time.cgi">
            <input type="hidden" name="id" value="[% buglist_joined FILTER html %]">
            <input type="submit" id="timesummary" value="Time Summary">
          </form>
          [% IF time_summary_limited %]
            <small>
              Time Summary will only include the [% terms.bugs %] shown above. In order to
              to see a time summary for all [% terms.bugs %] found by the search, you can 
              <a href="buglist.cgi?[% urlquerypart FILTER html %]
                       [%- "&order=$qorder" FILTER html IF order %]&limit=0">
                Show all search results</a>.</small>
          [% END %]
        [% END %]
      </td>
      
      <td>&nbsp;</td>
      
      <td valign="middle" class="bz_query_links">
        <a href="buglist.cgi?
        [% urlquerypart FILTER html %]&amp;ctype=csv&amp;human=1">CSV</a> |
        <a href="buglist.cgi?
        [% urlquerypart FILTER html %]&amp;title=
        [%- title FILTER html %]&amp;ctype=atom">Feed</a> |
        <a href="buglist.cgi?
        [% urlquerypart FILTER html %]&amp;ctype=ics">iCalendar</a> |
        <a href="colchange.cgi?
        [% urlquerypart FILTER html %]&amp;query_based_on=
          [% defaultsavename OR searchname FILTER uri %]">Change&nbsp;Columns</a> |

        [% IF bugs.size > 1 && caneditbugs && !dotweak %]
          <a href="buglist.cgi?[% urlquerypart FILTER html %]
            [%- "&order=$qorder" FILTER html IF order %]&amp;tweak=1"
            >Change&nbsp;Several&nbsp;[% terms.Bugs %]&nbsp;at&nbsp;Once</a>
          |
        [% END %]

        [% IF bugowners && user.id %]
          <a href="mailto:
            [% bugowners FILTER html %]">Send&nbsp;Mail&nbsp;to&nbsp;[% terms.Bug %]&nbsp;Assignees</a> |
        [% END %]

        [%# Links to more things users can do with this bug list. %]
        [% Hook.process("links") %]
      </td>
    [% END %]
    
    <td valign="middle" class="bz_query_edit">
      <a href="[% PROCESS edit_search_url %]">Edit&nbsp;Search</a>
    </td>
      
    [% IF searchtype == "saved" %]
      <td valign="middle" nowrap="nowrap" class="bz_query_forget">
        |
        <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
                [% searchname FILTER uri %]&amp;token=
                [% issue_hash_token([search_id, searchname]) FILTER uri %]">
          Forget&nbsp;Search&nbsp;'[% searchname FILTER html %]'</a>
      </td>
    [% ELSE %]
      <td>&nbsp;</td>
      
      <td valign="middle" class="bz_query_remember">
        <form method="get" action="buglist.cgi">
          <input type="submit" id="remember" value="Remember search"> as 
          <input type="hidden" name="newquery" 
                 value="[% urlquerypart FILTER html %][% "&order=$qorder" FILTER html IF order %]">
          <input type="hidden" name="cmdtype" value="doit">
          <input type="hidden" name="remtype" value="asnamed">
          <input type="hidden" name="token" value="[% issue_hash_token(['savedsearch']) FILTER html %]">
          <input type="text" id="save_newqueryname" name="newqueryname" size="20"
                 title="New query name" value="[% defaultsavename FILTER html %]"> 
        </form> 
      </td>
    [% END %]  
  </tr>
</table>

[% IF one_product.defined && bugs.size %]
  <p class="bz_query_single_product">
    [% PROCESS enter_bug_link %]
  </p>
[% END %]

[%############################################################################%]
[%# Page Footer                                                              #%]
[%############################################################################%]

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

[%##########%]
[%# Blocks #%]
[%##########%]

[% BLOCK edit_search_url %]
  [% editqueryname = searchname OR defaultsavename OR '' %]
  query.cgi?[% urlquerypart FILTER html %]
    [%- IF editqueryname != '' %]&amp;known_name=
      [%- editqueryname FILTER uri %]
    [% END %]
[% END %]

[% BLOCK enter_bug_link %]
  <a href="enter_bug.cgi
           [%- IF one_product.defined %]?product=
             [%- one_product.name FILTER uri %][% END %]">File
    a new [% terms.bug %]
   [% IF one_product.defined %]
     in the "[% one_product.name FILTER html %]" product
   [% END %]</a>
[% END %]

[% BLOCK num_results %]
  <span class="bz_result_count">
    [% IF bugs.size == 0 %]
      <span class="zero_results">[% terms.zeroSearchResults %].</span>
    [% ELSIF default_limited AND bugs.size >= Param('default_search_limit') %]
      This result was limited to [% Param('default_search_limit') FILTER html %]
      [%+ terms.bugs %].
      <a href="buglist.cgi?[% urlquerypart FILTER html %]
              [%- "&order=$qorder" FILTER html IF order %]&limit=0">See
        all search results for this query</a>.
      [% time_summary_limited = 1 %]
    [% ELSIF bugs.size == 1 %]
      One [% terms.bug %] found.
    [% ELSE %]
      [% bugs.size %] [%+ terms.bugs %] found.
    [% END %]
  </span>
[% END %]
