Source

trac-ticketlinks / trac / ticket / templates / query_results.html

Full commit
cmlenz 9652c61 
















cboos 5172e01 
cmlenz 9652c61 
cboos e910073 
cboos cbc9e1e 

cboos ce4dfe3 
rblank 93465ea 
rblank f6939ff 
osimons dc307fe 
rblank f6939ff 
cboos 6ae3131 
cmlenz 9652c61 
rblank 93465ea 





















cmlenz 9652c61 

rblank 93465ea 

cmlenz 9652c61 
jonas b298d8f 




cmlenz 9652c61 
cboos 9f83d8a 

cmlenz 9652c61 
cboos 9f83d8a 





rblank 93465ea 
cboos d758c82 
cboos 9f83d8a 

cboos de08e75 
cboos 358cc17 


rblank f6939ff 
Christian Boos e43ec53 
cboos 358cc17 
cboos 9f83d8a 







cboos 5172e01 
cboos 9f83d8a 









rblank d2e23ad 
cboos 9f83d8a 




cmlenz 9652c61 
cboos 9f83d8a 
ecarter 0d1e0f1 
cmlenz 9652c61 
cboos cbc9e1e 




cmlenz 9652c61 
rblank 93465ea 

cboos ce4dfe3 
cmlenz 9652c61 

cboos cbc9e1e 
<!--!
       groups    - a dict, where:
                     key       - is the value shared by all results in this group
                     value     - is the list of corresponding tickets

       headers   - a sequence of header structure:
                     .name     - field name for this header
                     .label    - what to display for this header

       fields    - dict of field name to field structure:
                     .label    - field label

       query     - the actual Query instance used to perform the query

-->
<div xmlns="http://www.w3.org/1999/xhtml"
     xmlns:py="http://genshi.edgewall.org/"
     xmlns:i18n="http://genshi.edgewall.org/i18n"
     xmlns:xi="http://www.w3.org/2001/XInclude">
  <h2 class="report-result" py:if="paginator.has_more_pages">
    Results <span class="numresults">(${paginator.displayed_items()})</span>
  </h2>
  <xi:include py:if="paginator.show_index" href="page_index.html" />
  <py:def function="group_heading(groupname, results)">
    <h2 class="report-result" py:if="groupname is not None">
      ${fields[query.group].label}:
      ${query.group in ['owner', 'reporter'] and authorinfo(groupname) or groupname or _('None')}
      <span class="numrows">(${ngettext('%(num)s match', '%(num)s matches', len(results))})</span>
    </h2>
  </py:def>
  <py:def function="column_headers()">
    <tr class="trac-columns">
      <th py:for="header in headers"
          class="$header.name${query.order == header.name and (query.desc and ' desc' or ' asc') or ''}">
        <?python asc = _('(ascending)'); desc = _('(descending)') ?>
        <a title="${_('Sort by %(col)s %(direction)s', col=header.label,
                      direction=(query.order == header.name and not query.desc and desc or asc))}"
           href="$header.href">${header.label}</a>
      </th>
    </tr>
  </py:def>
  ${groups and group_heading(*groups[0]) or None}
  <table class="listing tickets">
    <thead py:strip="group_index">
      ${column_headers()}
    </thead>
    <py:for each="group_index, (groupname, results) in enumerate(groups)">
      <tbody py:if="group_index">
        <tr py:if="groupname is not None" class="trac-group">
          <th colspan="${len(headers)}">
            ${group_heading(groupname, results)}
          </th>
        </tr>
        ${column_headers()}
      </tbody>
      <tbody>
        <tr py:if="not results" class="even">
          <td colspan="${len(headers)}">
            No tickets found
          </td>
        </tr>
        <py:for each="idx, result in enumerate(results)">
          <py:with vars="ticket_context = context('ticket', result.id)">
            <py:if test="'TICKET_VIEW' in perm(ticket_context.resource)">

              <tr class="${idx % 2 and 'odd' or 'even'} prio${result.priority_value}${
                'added' in result and ' added' or ''}${
                'changed' in result and ' changed' or ''}${
                'removed' in result and ' removed' or ''}">
                <py:for each="idx, header in enumerate(headers)" py:choose="">
                  <py:with vars="name = header.name; value = result[name]">
                    <td py:when="name == 'id'" class="id"><a href="$result.href" title="View ticket"
                        class="${classes(closed=result.status == 'closed')}">#$result.id</a></td>
                    <td py:otherwise="" class="$name" py:choose="">
                      <a py:when="name == 'summary'" href="$result.href" title="View ticket">$value</a>
                      <py:when test="isinstance(value, datetime)">${dateinfo(value)}</py:when>
                      <py:when test="name == 'reporter'">${authorinfo(value)}</py:when>
                      <py:when test="name == 'cc'">${format_emails(ticket_context, value)}</py:when>
                      <py:when test="name == 'owner' and value">${authorinfo(value)}</py:when>
                      <py:when test="name == 'milestone'"><a py:if="value" title="View milestone" href="${href.milestone(value)}">${value}</a></py:when>
                      <py:when test="header.wikify">${wiki_to_oneliner(ticket_context, unicode(value))}</py:when>
                      <py:otherwise>$value</py:otherwise>
                    </td>
                  </py:with>
                </py:for>
              </tr>

              <py:with vars="result_rows = [t for t in row if result[t]]">
                <tr py:if="result_rows" class="fullrow">
                  <td colspan="${len(headers)}">
                    <p class="meta" i18n:msg="author, date">Reported by <strong>${authorinfo(result.reporter)}</strong>,
                      ${dateinfo(result.time)} ago.</p>
                  </td>
                </tr>
                <py:choose>
                  <tr py:when="ticket_context.resource in context" class="fullrow">
                    <td colspan="${len(headers)}">
                      <p class="meta"><em>(this ticket)</em></p>
                    </td>
                  </tr>
                  <tr py:otherwise="" py:for="r in result_rows" class="fullrow">
                    <th class="meta">${fields.get(r, {'label': r or 'none'}).label}</th>
                    <td colspan="${len(headers)-1}" xml:space="preserve">
                      ${wiki_to_html(ticket_context, result[r])}
                    </td>
                  </tr>
                </py:choose>
              </py:with>
            </py:if>
          </py:with>
        </py:for>
        <tr py:if="group_index == len(groups)-1 and last_group_is_partial">
          <td colspan="${len(headers)}">
            <i>(more results for this group on next page)</i>
          </td>
        </tr>
      </tbody>
    </py:for>
  </table>
  <xi:include py:if="paginator.show_index" href="page_index.html" />
</div>