Bug 10855: Search subscriptions by additional fields
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / serials / serials-search.tt
index 558f988..31eea9a 100644 (file)
@@ -1,36 +1,44 @@
+[% USE Branches %]
 [% INCLUDE 'doc-head-open.inc' %]
 [% USE KohaDates %]
+[% USE AuthorisedValues %]
 <title>Koha &rsaquo; Serials [% biblionumber %]</title>
-<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
 [% INCLUDE 'doc-head-close.inc' %]
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
-[% INCLUDE 'datatables-strings.inc' %]
-<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
+[% INCLUDE 'calendar.inc' %]
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
+[% INCLUDE 'datatables.inc' %]
 <script type="text/javascript">
 //<![CDATA[
  $(document).ready(function() {
     var osrlt = $("#osrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
+        "sPaginationType": "four_button",
         "aoColumnDefs": [
-            { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
-        ],
-        "sPaginationType": "four_button"
+            { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
+            { "sType": "title-string", "aTargets" : [ "title-string" ] },
+            { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
+        ]
     } ) );
 
     var csrlt = $("#csrlt").dataTable($.extend(true, {}, dataTablesDefaults, {
+        // FIXME sort function of additional_fields!
+        "sPaginationType": "four_button",
         "aoColumnDefs": [
-            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
-        ],
-        "sPaginationType": "four_button"
+            { 'bSortable': false, 'aTargets': [ 'NoSort' ] },
+            { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
+        ]
     } ) );
 
-    osrlt.fnAddFilters("filter", 750);
-    csrlt.fnAddFilters("filter", 750);
+    osrlt.fnAddFilters("dt-filter", 750);
+    csrlt.fnAddFilters("dt-filter", 750);
 
     $('#serialstabs').tabs();
-
+    $("#reopensub").click(function(){
+      return confirm(_("Are you sure you want to reopen this subscription?"));
+    });
  });
  //]]>
 </script>
+<style type="text/css">input.dt-filter { width : 100%; font-size : 85%; }</style>
 </head>
 <body id="ser_serials-home" class="ser">
 [% INCLUDE 'header.inc' %]
               <ol>
                 <li>
                   <label for="issn">ISSN:</label>
-                  <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter %]" />
+                  <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter | html %]" />
                 </li>
                 <li>
                   <label for="title">Title:</label>
-                  <input type="text" id="title" name="title_filter" value="[% title_filter %]" />
+                  <input type="text" id="title" name="title_filter" value="[% title_filter | html %]" />
                 </li>
                 [% IF ( marcflavour == "UNIMARC" ) %]
                 <li>
                   <label for="ean">EAN:</label>
-                  <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter %]" />
+                  <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter | html %]" />
                 </li>
                 [% END %]
+                <li>
+                  <label for="callnumber">Call number:</label>
+                  <input type="text" id="callnumber" name="callnumber_filter" value="[% callnumber_filter | html %]" />
+                </li>
                 <li>
                   <label for="publisher">Publisher:</label>
-                  <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter %]" />
+                  <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter | html %]" />
                 </li>
                 <li>
                   <label for="bookseller">Vendor:</label>
-                  <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter %]" />
+                  <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter | html %]" />
                 </li>
                 <li>
                   <label for="branch">Library:</label>
                     [% END %]
                   </select>
                 </li>
+                [% IF locations %]
+                  <li>
+                    <label for="location">Location:</label>
+                    <select name="location_filter">
+                      <option value="">All</option>
+                      [% FOR loc IN locations %]
+                        [% IF loc.selected %]
+                          <option value="[% loc.authorised_value %]" selected="selected">[% loc.lib %]</option>
+                        [% ELSE %]
+                          <option value="[% loc.authorised_value %]">[% loc.lib %]</option>
+                        [% END %]
+                      [% END %]
+                    </select>
+                  </li>
+                [% END %]
+                <li>
+                  <label for="to">Expires before:</label>
+                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
+                </li>
+                [% FOR field IN additional_fields_for_subscription %]
+                  <li>
+                    <label for="additional_field_[% field.id %]"> [% field.name %]: </label>
+                    [% IF field.authorised_value_choices %]
+                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
+                        <option value="">All</option>
+                        [% FOREACH av IN field.authorised_value_choices %]
+                          <option value="[% av.authorised_value %]">[% av.lib %]</option>
+                        [% END %]
+                      </select>
+                    [% ELSE %]
+                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_fields.${field.name} %]" name="additional_field_[% field.id %]_filter" />
+                    [% END %]
+                  </li>
+                [% END %]
               </ol>
               <input type="hidden" name="searched" value="1" />
               <fieldset class="action">
         [% IF ( total ) %]
           <div id="serialstabs" class="toptabs" style="clear:both;">
             <ul class="ui-tabs-nav">
-              <li><a href="#opened">Opened ([% openedsubscriptions.size || 0 %])</a></li>
+              <li><a href="#opened">Open ([% openedsubscriptions.size || 0 %])</a></li>
               <li><a href="#closed">Closed ([% closedsubscriptions.size || 0 %])</a></li>
             </ul>
             <div id="opened">
                   <thead>
                     <tr>
                         <th>ISSN</th>
-                        <th>Title</th>
-                        <th> Notes </th>
+                        <th class="anti-the">Title</th>
+                        <th>Notes</th>
                         <th>Library</th>
+                        <th>Location</th>
                         <th>Call number</th>
-                        <th>Expiration date</th>
-                        [% IF ( routing && CAN_user_serials_routing ) %]
-                          <th>Routing list</th>
+                        <th class="title-string">Expiration date</th>
+                        [% FOR field IN additional_fields_for_subscription %]
+                          <th>[% field.name %]</th>
                         [% END %]
-                        <th>&nbsp;</th>
-                        <th>&nbsp;</th>
+                        <th class="NoSort">Actions</th>
                     </tr>
                   </thead>
                   <tfoot>
                     <tr>
-                      <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
-                      <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
-                      <td><input type="text" class="filter" data-column_num="2" placeholder="Search notes" /></td>
-                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
-                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td>
-                      <td><input type="text" class="filter" data-column_num="5" placeholder="Search expiration date" /></td>
-                      [% IF ( routing && CAN_user_serials_routing ) %]<td></td>[% END %]
-                      <td></td>
+                      <td><input type="text" class="dt-filter" data-column_num="0" placeholder="Search ISSN" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="1" placeholder="Search title" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="2" placeholder="Search notes" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search library" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="6" placeholder="Search expiration date" /></td>
+                      [% FOR field IN additional_fields_for_subscription %]
+                        <td><input type="text" class="dt-filter" data-column_num="[% loop.count + 6 %]" placeholder="Search [% field.name %]" /></td>
+                      [% END %]
                       <td></td>
                     </tr>
                   </tfoot>
                   <tbody>
                     [% FOREACH subscription IN openedsubscriptions %]
+                    [% UNLESS subscription.cannotdisplay %]
                       <tr>
                         <td>
                         [% IF ( subscription.issn ) %][% subscription.issn %]
                         </td>
                         <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a>
                         </td>
-                        <td>[% IF ( subscription.notes ) %][% subscription.notes %][% END %]
+                        <td>[% IF ( subscription.publicnotes ) %][% subscription.publicnotes %][% END %]
                         [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %]
                         </td>
                         <td>
-                          [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %]
+                          [% IF ( subscription.branchcode ) %][% Branches.GetName( subscription.branchcode ) %][% END %]
                         </td>
                         <td>
-                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
+                          [% IF ( subscription.location ) %][% AuthorisedValues.GetByCode( 'LOC', subscription.location ) %][% END %]
                         </td>
                         <td>
-                          [% IF ( subscription.enddate ) %][% subscription.enddate | $KohaDates %][% END %]
+                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
                         </td>
-                        [% IF ( routing && CAN_user_serials_routing ) %]
                         <td>
-                          [% IF ( subscription.cannotedit ) %]
-                            &nbsp;
-                          [% ELSE %]
-                            [% IF ( subscription.routingedit ) %]
-                              <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit</a>
-                              ([% subscription.routingedit %])
+                            [% IF ( subscription.enddate ) %]
+                                <span title="[% subscription.enddate %]">[% subscription.enddate | $KohaDates %]</span>
                             [% ELSE %]
-                              <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=new">New</a>
+                                <span title="0000-00-00"></span>
                             [% END %]
-                          [% END %]
                         </td>
+
+                        [% FOR field IN additional_fields_for_subscription %]
+                          [% IF field.authorised_value_category %]
+                            <td>[% AuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
+                          [% ELSE %]
+                            <td>[% subscription.additional_fields.${field.name} %]</td>
+                          [% END %]
                         [% END %]
-                        <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
-                        </td>
+
                         <td>
-                        [% IF ( subscription.cannotedit ) %]
-                          &nbsp;
-                        [% ELSE %]
-                          [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>[% END %]
-                        [% END %]
+                            <div class="dropdown">
+                                <a class="btn btn-mini dropdown-toggle" id="subactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
+                                   Actions <b class="caret"></b>
+                                </a>
+                                <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="subactions[% subscription.subscriptionid %]">
+
+                                    [% IF ( routing && CAN_user_serials_routing ) %]
+                                        [% IF ( subscription.cannotedit ) %]
+                                        [% ELSE %]
+                                            [% IF ( subscription.routingedit ) %]
+                                                <li>
+                                                    <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="icon-pencil"></i> Edit routing list ([% subscription.routingedit %])</a>
+                                                </li>
+                                            [% ELSE %]
+                                                <li>
+                                                    <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=new"> <i class="icon-plus"></i> New routing list</a>
+                                                </li>
+                                            [% END %]
+                                        [% END %]
+                                    [% END # IF ( routing && CAN_user_serials_routing ) %]
+
+                                    <li>
+                                        <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="icon-list-alt"></i> Issue history</a>
+                                    </li>
+                                    [% IF ( CAN_user_serials_receive_serials ) %]
+                                        <li>
+                                            <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7"> <i class="icon-inbox"></i> Serial receive</a>
+                                        </li>
+                                    [% END %]
+                                </ul>
+                            </div>
                         </td>
+
                       </tr>
+                      [% END %]
                     [% END %]
                   </tbody>
                 </table>
               [% ELSE %]
-                There is no opened subscription for your search.
+                <div class="dialog message">
+                  <p>Your search returned no open subscriptions.</p>
+                </div>
               [% END %]
             </div>
             <div id="closed">
               [% IF closedsubscriptions %]
                 <table id="csrlt">
+                <!-- FIXME add additional_fields for closed subs -->
                   <thead>
                     <tr>
                         <th>ISSN</th>
-                        <th>Title</th>
-                        <th> Notes </th>
+                        <th class="anti-the">Title</th>
+                        <th>Notes</th>
                         <th>Library</th>
+                        <th>Location</th>
                         <th>Call number</th>
-                        <th>&nbsp;</th>
-                        <th>&nbsp;</th>
+                        [% FOR field IN additional_fields_for_subscription %]
+                          <th>[% field.name %]</th>
+                        [% END %]
+                        <th class="NoSort">Actions</th>
                     </tr>
                   </thead>
                   <tfoot>
                     <tr>
-                      <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
-                      <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
-                      <td><input type="text" class="filter" data-column_num="2" placeholder="Search notes" /></td>
-                      <td><input type="text" class="filter" data-column_num="3" placeholder="Search library" /></td>
-                      <td><input type="text" class="filter" data-column_num="4" placeholder="Search callnumber" /></td>
-                      <td></td>
+                      <td><input type="text" class="dt-filter" data-column_num="0" placeholder="Search ISSN" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="1" placeholder="Search title" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="2" placeholder="Search notes" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search library" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
+                      <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
+                      [% FOR field IN additional_fields_for_subscription %]
+                        <td><input type="text" class="dt-filter" data-column_num="[% loop.count + 5 %]" placeholder="Search [% field.name %]" /></td>
+                      [% END %]
                       <td></td>
                     </tr>
                   </tfoot>
                   <tbody>
                     [% FOREACH subscription IN closedsubscriptions %]
+                    [% UNLESS subscription.cannotdisplay %]
                       <tr>
                         <td>
                           [% IF ( subscription.issn ) %]
                           [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %]
                         </td>
                         <td>
-                          [% IF ( subscription.branchname ) %][% subscription.branchname %][% END %]
+                          [% IF ( subscription.branchcode ) %][% Branches.GetName( subscription.branchcode ) %][% END %]
                         </td>
                         <td>
-                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
+                          [% IF ( subscription.location ) %][% AuthorisedValues.GetByCode( 'LOC', subscription.location ) %][% END %]
                         </td>
                         <td>
-                          [% UNLESS subscription.cannotedit %]
-                            <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=reopen&routing=[% subscription.routing %]&amp;searched=1&amp;title_filter=[% title_filter %]&amp;ISSN_filter=[% ISSN_filter %]&amp;EAN_filter=[% EAN_filter %]&amp;published_filter=[% publisher_filter %]&amp;bookseller_filter=[% bookseller_filter %]&amp;branch_filter=[% branch_filter %]" onclick="return confirm(_('Are you sure you want to reopen this subscription?'));">Reopen</a>
+                          [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
+                        </td>
+                        [% FOR field IN additional_fields_for_subscription %]
+                          [% IF field.authorised_value_category %]
+                            <td>[% KohaAuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
                           [% ELSE %]
-                            Cannot edit
+                            <td>[% subscription.additional_fields.${field.name} %]</td>
                           [% END %]
-                        </td>
+                        [% END %]
                         <td>
-                          <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
+                            <div class="dropdown">
+                                <a class="btn btn-mini dropdown-toggle" id="closedsubactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
+                                   Actions <b class="caret"></b>
+                                </a>
+                                <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="closedsubactions[% subscription.subscriptionid %]">
+
+                                    [% IF ( routing && CAN_user_serials_routing ) %]
+                                        [% UNLESS ( subscription.cannotedit ) %]
+                                            <li>
+                                                <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=reopen&amp;routing=[% subscription.routing %]&amp;searched=1&amp;title_filter=[% title_filter | uri %]&amp;ISSN_filter=[% ISSN_filter | uri %]&amp;EAN_filter=[% EAN_filter | uri %]&amp;published_filter=[% publisher_filter | uri %]&amp;bookseller_filter=[% bookseller_filter | uri %]&amp;branch_filter=[% branch_filter | uri %]" id="reopensub"> <i class="icon-repeat"></i> Reopen</a>
+                                            </li>
+                                        [% END %]
+                                    [% END # IF ( routing && CAN_user_serials_routing ) %]
+
+                                    <li>
+                                        <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="icon-list-alt"></i> Issue history</a>
+                                    </li>
+
+                                </ul>
+                            </div>
                         </td>
                       </tr>
                     [% END %]
+                    [% END %]
                   </tbody>
                 </table>
               [% ELSE %]
-                There is no closed subscription for your search.
+                <div class="dialog message">
+                  <p>Your search returned no closed subscriptions.</p>
+                </div>
               [% END %]
             </div>
           </div>
+        [% ELSE %]
+            <div class="dialog message">
+              <p>Your search returned no results.</p>
+            </div>
         [% END %]
       [% END %]
     </div>
               <ol>
                 <li>
                   <label for="issn">ISSN:</label>
-                  <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter %]" />
+                  <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter | html %]" />
                 </li>
                 <li>
                   <label for="title">Title:</label>
-                  <input type="text" id="title" name="title_filter" value="[% title_filter %]" />
+                  <input type="text" id="title" name="title_filter" value="[% title_filter | html %]" />
                 </li>
                 [% IF ( marcflavour == "UNIMARC" ) %]
                 <li>
                   <label for="ean">EAN:</label>
-                  <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter %]" />
+                  <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter | html %]" />
                 </li>
                 [% END %]
+                <li>
+                  <label for="callnumber">Call number:</label>
+                  <input type="text" id="callnumber" name="callnumber_filter" value="[% callnumber_filter | html %]" />
+                </li>
                 <li>
                   <label for="publisher">Publisher:</label>
-                  <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter %]" />
+                  <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter | html %]" />
                 </li>
                 <li>
                   <label for="bookseller">Vendor:</label>
-                  <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter %]" />
+                  <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter | html %]" />
                 </li>
                 <li>
                   <label for="branch">Library:</label>
                     [% END %]
                   </select>
                 </li>
+                [% IF locations %]
+                  <li>
+                    <label for="location">Location:</label>
+                    <select name="location_filter">
+                      <option value="">All</option>
+                      [% FOR loc IN locations %]
+                        [% IF loc.selected %]
+                          <option value="[% loc.authorised_value %]" selected="selected">[% loc.lib %]</option>
+                        [% ELSE %]
+                          <option value="[% loc.authorised_value %]">[% loc.lib %]</option>
+                        [% END %]
+                      [% END %]
+                    </select>
+                  </li>
+                [% END %]
+                <li>
+                  <label for="to">Expires before:</label>
+                  <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
+                </li>
+
+                [% FOR field IN additional_fields_for_subscription %]
+                  <li>
+                    <label for="additional_field_[% field.id %]ID"> [% field.name %]: </label>
+                    [% IF field.authorised_value_choices %]
+                      <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
+                        <option value="">All</option>
+                        [% FOREACH av IN field.authorised_value_choices %]
+                          [% IF av.authorised_value == additional_field_filters.${field.name} %]
+                            <option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
+                          [% ELSE %]
+                            <option value="[% av.authorised_value %]">[% av.lib %]</option>
+                          [% END %]
+                        [% END %]
+                      </select>
+                    [% ELSE %]
+                      <input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name} %]" name="additional_field_[% field.id %]_filter" />
+                    [% END %]
+                  </li>
+                [% END %]
               </ol>
               <input type="hidden" name="searched" value="1" />
               <fieldset class="action">