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' %] |