| Line 0
          
      
      
        Link Here | 
            
              |  |  | 1 | [% USE raw %] | 
            
              | 2 | [% USE Asset %] | 
            
              | 3 | [% SET footerjs = 1 %] | 
            
              | 4 | [% USE AuthorisedValues %] | 
            
              | 5 | [% INCLUDE 'doc-head-open.inc' %] | 
            
              | 6 |   <title>Search filters › Administration › Koha</title> | 
            
              | 7 |   [% INCLUDE 'doc-head-close.inc' %] | 
            
              | 8 | </head> | 
            
              | 9 |  | 
            
              | 10 | <body id="admin_searchfilters" class="admin"> | 
            
              | 11 |   [% INCLUDE 'header.inc' %] | 
            
              | 12 |   [% INCLUDE 'prefs-admin-search.inc' %] | 
            
              | 13 |  | 
            
              | 14 | <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb"> | 
            
              | 15 |     <ol> | 
            
              | 16 |         <li> | 
            
              | 17 |             <a href="/cgi-bin/koha/mainpage.pl">Home</a> | 
            
              | 18 |         </li> | 
            
              | 19 |         <li> | 
            
              | 20 |             <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> | 
            
              | 21 |         </li> | 
            
              | 22 |         <li> | 
            
              | 23 |             <a href="#" aria-current="page"> | 
            
              | 24 |                 Search filters | 
            
              | 25 |             </a> | 
            
              | 26 |         </li> | 
            
              | 27 |     </ol> | 
            
              | 28 | </nav> | 
            
              | 29 |  | 
            
              | 30 | <div class="main container-fluid"> | 
            
              | 31 |     <div class="row"> | 
            
              | 32 |         <div class="col-sm-10 col-sm-push-2"> | 
            
              | 33 |             <main> | 
            
              | 34 |  | 
            
              | 35 |         [% IF filters_count %] | 
            
              | 36 |             <div id="search_filters_list"> | 
            
              | 37 |                 <h2>Search filters</h2> | 
            
              | 38 |  | 
            
              | 39 |                 <table id="search_filters_table"> | 
            
              | 40 |                     <thead> | 
            
              | 41 |                         <tr> | 
            
              | 42 |                             <th>Id</th> | 
            
              | 43 |                             <th>Name</th> | 
            
              | 44 |                             <th>Query</th> | 
            
              | 45 |                             <th>Limits</th> | 
            
              | 46 |                             <th>OPAC</th> | 
            
              | 47 |                             <th>Staff client</th> | 
            
              | 48 |                             <th> </th> | 
            
              | 49 |                         </tr> | 
            
              | 50 |                     </thead> | 
            
              | 51 |                 </table> | 
            
              | 52 |             </div> | 
            
              | 53 |         [% ELSE %] | 
            
              | 54 |             <div class="dialog message"> | 
            
              | 55 |                 There are no search filters defined. | 
            
              | 56 |             </div> | 
            
              | 57 |         [% END %] | 
            
              | 58 |  | 
            
              | 59 |             </main> | 
            
              | 60 |         </div> <!-- /.col-sm-10.col-sm-push-2 --> | 
            
              | 61 |  | 
            
              | 62 |         <div class="col-sm-2 col-sm-pull-10"> | 
            
              | 63 |             <aside> | 
            
              | 64 |                 [% INCLUDE 'admin-menu.inc' %] | 
            
              | 65 |             </aside> | 
            
              | 66 |         </div> <!-- /.col-sm-2.col-sm-pull-10 --> | 
            
              | 67 |      </div> <!-- /.row --> | 
            
              | 68 |  | 
            
              | 69 |     <div id="edit_search_filter_modal" class="modal" role="dialog" aria-hidden="true"> | 
            
              | 70 |         <div class="modal-dialog"> | 
            
              | 71 |         <div class="modal-content"> | 
            
              | 72 |             <div class="modal-header"> | 
            
              | 73 |                 <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button> | 
            
              | 74 |                 <h3 id="search_filters_label">Edit filter: <span id="filter_edit_modal_name"></span</h3> | 
            
              | 75 |             </div> | 
            
              | 76 |             <div class="modal-body"> | 
            
              | 77 |                 <input type="hidden" id="filter_edit_id" name="filter_edit_id"> | 
            
              | 78 |                 <label for="filter_edit_name">Name:</label> | 
            
              | 79 |                 <input id="filter_edit_name" name="filter_edit_name" type="text"> | 
            
              | 80 |                 <hr> | 
            
              | 81 |                 <h6>Visibility:<h6> | 
            
              | 82 |                 <label for="filter_edit_opac">Show in OPAC?</label> | 
            
              | 83 |                 <input type="checkbox" id="filter_edit_opac" name="filter_edit_opac"> | 
            
              | 84 |                 <label for="filter_edit_staff_client">Show in Staff client?</label> | 
            
              | 85 |                 <input type="checkbox" id="filter_edit_staff_client" name="filter_edit_staff_client"> | 
            
              | 86 |                 <hr> | 
            
              | 87 |                 <a id="replace_existing_filter" class="btn btn-default btn-xs" href="#">Update</a> | 
            
              | 88 |             </div> | 
            
              | 89 |             <div class="modal-footer"> | 
            
              | 90 |                 <a href="#" data-dismiss="modal" aria-hidden="true" class="cancel">Cancel</a> | 
            
              | 91 |             </div> | 
            
              | 92 |         </div> | 
            
              | 93 |         </div> | 
            
              | 94 |     </div> | 
            
              | 95 |  | 
            
              | 96 | [% MACRO jsinclude BLOCK %] | 
            
              | 97 |     [% Asset.js("js/admin-menu.js") | $raw %] | 
            
              | 98 |     [% Asset.css("css/humanmsg.css") | $raw %] | 
            
              | 99 |     [% Asset.js("lib/jquery/plugins/humanmsg.js") | $raw %] | 
            
              | 100 |     [% INCLUDE 'datatables.inc' %] | 
            
              | 101 |  | 
            
              | 102 |     <script> | 
            
              | 103 |         let filters_table; | 
            
              | 104 |         $(document).ready(function(){ | 
            
              | 105 |             filters_table = $("#search_filters_table").kohaTable({ | 
            
              | 106 |                 "ajax": { | 
            
              | 107 |                     "url": "/api/v1/search_filters" | 
            
              | 108 |                 }, | 
            
              | 109 |                 "columns": [ | 
            
              | 110 |                     { | 
            
              | 111 |                         "data": "search_filter_id", | 
            
              | 112 |                         "searchable": true, | 
            
              | 113 |                         "orderable": true | 
            
              | 114 |                     }, | 
            
              | 115 |                     { | 
            
              | 116 |                         "data": "name", | 
            
              | 117 |                         "searchable": true, | 
            
              | 118 |                         "orderable": true | 
            
              | 119 |                     }, | 
            
              | 120 |                     { | 
            
              | 121 |                         "data": "filter_query", | 
            
              | 122 |                         "searchable": true, | 
            
              | 123 |                         "orderable": true | 
            
              | 124 |                     }, | 
            
              | 125 |                     { | 
            
              | 126 |                         "data": "filter_limits", | 
            
              | 127 |                         "searchable": true, | 
            
              | 128 |                         "orderable": true | 
            
              | 129 |                     }, | 
            
              | 130 |                     { | 
            
              | 131 |                         "data": "opac", | 
            
              | 132 |                         "searchable": true, | 
            
              | 133 |                         "orderable": true | 
            
              | 134 |                     }, | 
            
              | 135 |                     { | 
            
              | 136 |                         "data": "staff_client", | 
            
              | 137 |                         "searchable": true, | 
            
              | 138 |                         "orderable": true | 
            
              | 139 |                     }, | 
            
              | 140 |                     { | 
            
              | 141 |                         "data": function( row, meta, val, type ) { | 
            
              | 142 |                             let filter = row; | 
            
              | 143 |                             let filter_buttons = '<a class="btn btn-default btn-xs edit_filter" onclick="edit_filter(this)"'; | 
            
              | 144 |                             filter_buttons += ' data-filter_id="'+ filter.search_filter_id; | 
            
              | 145 |                             filter_buttons += '" data-filter_name="'+ filter.name; | 
            
              | 146 |                             filter_buttons += '" data-filter_opac="'+ filter.opac; | 
            
              | 147 |                             filter_buttons += '" data-filter_staff_client="'+ filter.staff_client; | 
            
              | 148 |                             filter_buttons += '" ><i class="fa fa-pencil"></i> Edit filter</a>'; | 
            
              | 149 |                             filter_buttons += '<a class="btn btn-default btn-xs" href="/cgi-bin/koha/catalogue/search.pl?edit_filter='+filter.search_filter_id+'"><i class="fa fa-search"></i> Edit search</a>'; | 
            
              | 150 |                             filter_buttons += '<a class="btn btn-default btn-xs delete_filter" onclick="delete_filter(this)"'; | 
            
              | 151 |                             filter_buttons += ' data-filter_id="'+ filter.search_filter_id; | 
            
              | 152 |                             filter_buttons += '"><i class="fa fa-trash"></i> Delete</a>'; | 
            
              | 153 |                             return filter_buttons; | 
            
              | 154 |                         }, | 
            
              | 155 |                         "searchable": false, | 
            
              | 156 |                         "orderable": false | 
            
              | 157 |                     } | 
            
              | 158 |                 ] | 
            
              | 159 |             }); | 
            
              | 160 |         }); | 
            
              | 161 |  | 
            
              | 162 |         $("#replace_existing_filter").click(function(){ | 
            
              | 163 |             let name = $("#filter_edit_name").val(); | 
            
              | 164 |             let id = $("#filter_edit_id").val(); | 
            
              | 165 |             let opac = $("#filter_edit_opac").prop('checked'); | 
            
              | 166 |             let staff_client = $("#filter_edit_staff_client").prop('checked'); | 
            
              | 167 |             save_search_filter(name,id,opac,staff_client); | 
            
              | 168 |         }); | 
            
              | 169 |  | 
            
              | 170 |         function edit_filter(element){ | 
            
              | 171 |             let filter_id = $(element).data('filter_id'); | 
            
              | 172 |             let filter_name = $(element).data('filter_name'); | 
            
              | 173 |             let filter_opac = $(element).data('filter_opac'); | 
            
              | 174 |             let filter_staff_client = $(element).data('filter_staff_client'); | 
            
              | 175 |             $("#filter_edit_name").val(filter_name); | 
            
              | 176 |             $("#filter_edit_id").val(filter_id); | 
            
              | 177 |             $("#filter_edit_opac").prop('checked',filter_opac); | 
            
              | 178 |             $("#filter_edit_staff_client").prop('checked',filter_staff_client); | 
            
              | 179 |             $("#edit_search_filter_modal").modal('show'); | 
            
              | 180 |         }; | 
            
              | 181 |  | 
            
              | 182 |         function delete_filter(element){ | 
            
              | 183 |             let filter_id = $(element).data('filter_id'); | 
            
              | 184 |             let options = { | 
            
              | 185 |                 url: '/api/v1/search_filters/' + filter_id, | 
            
              | 186 |                 method: "DELETE", | 
            
              | 187 |                 contentType: "application/json", | 
            
              | 188 |             }; | 
            
              | 189 |             $.ajax(options) | 
            
              | 190 |                 .then(function(result) { | 
            
              | 191 |                     humanMsg.displayAlert( _("Filter successfully deleted."), { className: 'human Success' } ); | 
            
              | 192 |                     filters_table.DataTable().ajax.reload(); | 
            
              | 193 |                 }) | 
            
              | 194 |                 .fail(function(err) { | 
            
              | 195 |                     humanMsg.displayAlert( _("There was an error during saving:") + err.responseText, { className: 'humanError' } ); | 
            
              | 196 |                 }); | 
            
              | 197 |         } | 
            
              | 198 |  | 
            
              | 199 |  | 
            
              | 200 |         function save_search_filter(name,id,opac,staff){ | 
            
              | 201 |             let options = { | 
            
              | 202 |                 url: '/api/v1/search_filters/' + id, | 
            
              | 203 |                 method: "PUT", | 
            
              | 204 |                 contentType: "application/json", | 
            
              | 205 |                 data: JSON.stringify({ | 
            
              | 206 |                     name: name, | 
            
              | 207 |                     opac: opac, | 
            
              | 208 |                     staff_client: staff, | 
            
              | 209 |                 }) | 
            
              | 210 |             }; | 
            
              | 211 |             $.ajax(options) | 
            
              | 212 |                 .then(function(result) { | 
            
              | 213 |                     $("#edit_search_filter_modal").modal('hide'); | 
            
              | 214 |                     humanMsg.displayAlert( _("Saved filter: ") + name  , { className: 'human Success' } ); | 
            
              | 215 |                     filters_table.DataTable().ajax.reload(); | 
            
              | 216 |                 }) | 
            
              | 217 |                 .fail(function(err) { | 
            
              | 218 |                     humanMsg.displayAlert( _("There was an error during saving:") + err.responseText, { className: 'humanError' } ); | 
            
              | 219 |                 }); | 
            
              | 220 |         } | 
            
              | 221 |  | 
            
              | 222 |  | 
            
              | 223 |     </script> | 
            
              | 224 | [% END %] | 
            
              | 225 |  | 
            
              | 226 | [% INCLUDE 'intranet-bottom.inc' %] |