Newer
Older
CMFCollector / CMFCollector / skins / collector / collector_contents.pt
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:metal="http://xml.zope.org/namespaces/metal"
      metal:use-macro="here/main_template/macros/master">

<span tal:condition="nothing">
  Template description: Batching view of the collector issues.
</span>

<body>

<div metal:fill-slot="header"
     tal:define="global collector_header_present python: 1">
  <div metal:use-macro="here/collector_macros/macros/collector_header">
    COLLECTOR HEADER
  </div>
</div>

<div metal:fill-slot="main">

<div tal:condition="not: collector_header_present|nothing">
  <!-- Master template has no "header" macro... -->
  <div metal:use-macro="here/collector_macros/macros/collector_header">
    COLLECTOR HEADER
  </div>
</div>

<!-- This is the desktop area -->
<div class="Desktop"
     tal:define="Batch python:modules['ZTUtils'].Batch;
                 pysutil modules/Products.PythonScripts.standard;
                 strmod modules/string;
                 cap nocall: strmod/capitalize;
                 split nocall: strmod/split;
                 DateTime nocall: modules/DateTime/DateTime;
                 BATCHSIZE_STR request/batch_size
                               | here/batch_size
                               | python: 10;
                 BATCHSIZE python: int(BATCHSIZE_STR);
                 TITLELEN python: 110;
                 DESCRLEN python: 200;
                 b_start python: request.get('b_start', 0);
                 searching
                    python: (request.get('searching') != 'yep'
                             and (request.set('status',
                                              ['Pending', 'Accepted'])));
                 items here/collector_search;
                 batch python: Batch(items, BATCHSIZE, int(b_start), orphan=0);
                 prev batch/previous;
                 next batch/next|nothing;
                 last_batch python: max(int(here.length()) - BATCHSIZE, 1)">

    <table class="FormLayout" cellspacing="0" border="0">
      <tr bgcolor="#ccffcc">
        <td colspan="3">
          <div metal:use-macro="here/collector_macros/macros/issue_batch_nav">
            ISSUE-BATCH NAVIGATION
          </div>
        </td>
      </tr>

      <tbody tal:repeat="itemnum python: range(len(batch))">

        <tr bgcolor="ALTERNATING"
            tal:attributes="bgcolor alternatingcolor"
            tal:define="global item python: batch[itemnum];
                        itemurl item/getURL;
                        itemtype item/Type|nothing;
                        icon item/getIcon|item/icon|nothing;
                        odd repeat/itemnum/odd;
                        global alternatingcolor python:
                                                ['#ffffff', '#eeeeee'][odd]">

          <td>
             <a href=""
                tal:attributes="href itemurl">
                <img src="" alt="Issue" border="0"
                     tal:condition="icon"
                     tal:attributes="src icon">
                <span tal:replace="itemtype"
                      tal:condition="not: icon"></span>
            </a>
          </td>

          <td>
            <a href="ITEMURL" tal:attributes="href itemurl">
              <span tal:replace="item/id">ID</span>
            </a>
          </td>

          <td>
            <a href="ITEMURL" tal:attributes="href itemurl">
              <b>
                <span tal:condition="item/Title"
                      tal:replace="python:
                                   item.Title[:TITLELEN]
                                   + (item.Title[TITLELEN:] and '...')">
                  TITLE
                </span>
              </b>
            </a>
          </td>

        </tr>

        <tr tal:attributes="bgcolor alternatingcolor"
            tal:define="crdate item/created;
                        moddate item/modified;
                        global numcmts python: int(item.action_number)-1;
                        datesdiff python: ((moddate - crdate) * 86400) > 30">
          <td> &nbsp; </td>
          <td> &nbsp; </td>

          <td>

            From
            <span tal:replace="item/submitter_id|nothing">SUBMITTER ID</span
              ><span tal:condition="numcmts">.</span>
            <span tal:condition="not: item/submitter_id|nothing">
              <em>???</em></span>

            <span tal:replace="python: here.aCompact(crdate)">CREATEDATE
              </span><span tal:condition="python: datesdiff"> ...
                <span tal:replace="python: here.aCompact(moddate)">
                  MODDATE</span>
            </span>
          </td>

        </tr>

        <tr tal:attributes="bgcolor alternatingcolor"
            tal:define="security python: item.security_related;
                        confidential python: split(item.status, '_')[-1]
                                              == 'confidential';
                        plrlcmts python: (numcmts != 1) and 's' or ''">
          <td> &nbsp; </td>
          <td> &nbsp; </td>
          <td NOWRAP>

            <!-- The color indicates whether the item is security-related, and
                  parenthesizing indicates that a security-related item has not
                  yet reached a completed state, ie is still confidential. -->
            <font color="SECURITY COLOR"
                  tal:attributes="color python: 
                                        (security and 'brown' or 'black')">
              <em>
                <span tal:content="python: (confidential and '(' or '')
                                           + cap(split(item.status,
                                                       '_')[0])
                                           + (confidential and ')' or '')">
                  STATUS</span>
              </em>
            </font>

            <span tal:replace="python: '%s/%s'
                                       % (item.topic, item.classification)">
              TOPIC/CLASSIFICATION
            </span>
            <span tal:replace="item/importance">
              Importance
            </span>

            <span tal:condition="numcmts">
              <span tal:replace="numcmts">NUM COMMENTS</span>
              followup<span tal:replace="plrlcmts">S?</span>
            </span>

            <span tal:condition="not: numcmts"
                  tal:replace="nothing">
            </span><span tal:condition="item/assigned_to|nothing">,
              Assigned: 
              <span tal:content="python: ', '.join(item.assigned_to)">
                SUPPORTERS
              </span>
            </span>
          </td>

        </tr>

        <tr tal:attributes="bgcolor alternatingcolor"
            tal:condition="item/Description">
          <td> &nbsp; </td>
          <td> &nbsp; </td>
          <td>
            <font color="gray"
                  tal:content="python: item.Description[:DESCRLEN]
                               + (item.Description[DESCRLEN:] and '...')">
              DESCRIPTION</font>
          </td>
        </tr>

      </tbody>

      <tr bgcolor="#ccffcc"
          tal:condition="batch">
        <td colspan="3">
          <div metal:use-macro="here/collector_macros/macros/issue_batch_nav">
            ISSUE-BATCH NAVIGATION
          </div>
        </td>
      </tr>
    </table>

    <form action="RETURNHERE" method="get"
          tal:attributes="action python: here.absolute_url()
                                         + '/collector_contents'"
          tal:define="uniquevals python:
                                 here.get_internal_catalog().uniqueValuesFor;
                      ordered nocall: here/collector_ordered_traits">
      <input type="hidden" name="searching" value="yep">

        <table>
          <tr>
            <td align="center">
              <input type="Submit" value="Search">
            </td>
            <td>
              <input type="reset" value="Reset">
            </td>
          </tr>
          <tr>
            <td COLSPAN="3">
              <strong>Any text:</strong>
              <input type="text" name="SearchableText" size="40"
                     value="TEXT"
                     tal:attributes="value request/SearchableText|nothing">
            </td>
            <td align="right">
              Show
              <input type="text" name="batch_size:number:ignore_empty" size="5"
                     value="TEXT"
                     tal:attributes="value request/batch_size|python: 10">
              issues per screen
            </td>
          </tr>
          <tr>
            <th align="center"> Status </th>
            <th align="center"> Requester</th>
            <th align="center"> Assigned </th>
            <th align="center"> Security Related </th>
          </tr>
          <tr>
            <td align="center">
              <select name="status:list:ignore_empty" multiple size="SIZE"
                    tal:define="values here/collector_issue_trim_states"
                    tal:attributes="size python: min(max(len(values), 3), 5)">
                <option value=""
                        tal:repeat="status values"
                        tal:attributes="value status;
                                        selected python: status
                                               in request.get('status', [])"
                        tal:content="status">
                </option>
             </select>
            </td>
            <td align="center">
              <select name="Creator:list:ignore_empty" multiple size="SIZE"
                      tal:define="values python: uniquevals('Creator')"
                      tal:attributes="size python: min(max(len(values), 3), 
                                                       5)">
                <option value=""
                        tal:repeat="creator values"
                        tal:attributes="
                            value creator;
                            selected python: creator
                                             in request.get('Creator', [])"
                        tal:content="creator">
                </option>
              </select>
            </td>
            <td align="center">
              <select name="supporters:list:ignore_empty" multiple size="SIZE"
                      tal:define="values python:
                                         ordered(uniquevals('assigned_to'),
                                                 here.supporters)"
                      tal:attributes="size python: min(max(len(values), 3),
                                                       5)">
                <option value=""
                        tal:repeat="supporter values"
                        tal:attributes="
                            value supporter;
                            selected python: supporter 
                                     in request.get('supporters', [])"
                        tal:content="supporter">
                </option>
              </select>
            </td>
            <td align="center">
              <select name="security_related:list:ignore_empty" size="3" multiple
                      tal:define="was python: request.get('security_related',
                                                          [])">
                <option value="No"
                        tal:attributes="selected python: 'No' in was">
                  No </option>
                <option value="Yes"
                        tal:attributes="selected python: 'Yes' in was">
                  Yes </option>
              </select>
            </td>

          </tr>
          <tr>
            <th align="center"> Topic </th>
            <th align="center"> Classification </th>
            <th align="center"> Importance </th>
            <th align="center"> Date Range </th>
          </tr>
          <tr>
            <td align="center">
              <select name="topics:list:ignore_empty" multiple size="SIZE"
                    tal:define="values python: ordered(uniquevals('topic'),
                                                       here.topics)"
                    tal:attributes="size python: min(max(len(values), 3), 5)">
                <option value=""
                        tal:repeat="topic values"
                        tal:attributes="
                            value topic;
                            selected python: topic
                                             in request.get('topics', [])"
                        tal:content="topic">
                </option>
             </select>
            </td>
            <td align="center">
              <select name="classifications:list:ignore_empty" multiple size="SIZE"
                      tal:define="values python: 
                                         ordered(uniquevals('classification'),
                                                 here.classifications)"
                      tal:attributes="size python: min(max(len(values), 3),
                                                       5)">
                <option value=""
                        tal:repeat="classification values"
                        tal:attributes="
                           value classification;
                           selected python: classification
                                            in request.get('classifications',
                                                           [])"
                        tal:content="classification">
                </option>
              </select>
            </td>
            <td align="center">
              <select name="importances:list:ignore_empty" multiple size="SIZE"
                      tal:define="values python: 
                                         ordered(uniquevals('importance'),
                                                 here.importances)"
                      tal:attributes="size python: min(max(len(values), 3), 
                                                       5)">
                <option value=""
                        tal:repeat="importance values"
                        tal:attributes="
                            value importance;
                            selected python: importance
                                             in request.get('importances',
                                                            [])"
                        tal:content="importance">
                </option>
             </select>
          </td>

            <td align="center">
              <input type="text" name="created:list:ignore_empty" size="28"
                     value="TEXT"
                     tal:attributes="value python: request.get('created',['1970/01/01 00:00:00 GMT',''])[0]">

              <br><input type="text" name="created:list:ignore_empty" size="28"
                     value="TEXT"
                     tal:attributes="value python: request.get('created',['',here.ZopeTime()])[1]">

              <input type="hidden" name="created_usage" value="range:min:max">

          </td>
        </tr>
      </table>

</form>

</div>
</div>
</body>
</html>