Bug 26602: Don't export "actions" column
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / classsources.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% SET footerjs = 1 %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha &rsaquo; Administration &rsaquo; Classification sources
6 [% IF op == 'add_source' %]
7 &rsaquo;
8     [% IF class_source %]Modify classification source[% ELSE %]Add classification source[% END %]
9 [% ELSIF op == 'add_sort_rule' %]
10 &rsaquo;
11     [% IF sort_rule %]Modify filing rule[% ELSE %]Add filing rule[% END %]
12 [% ELSIF op == 'add_split_rule' %]
13 &rsaquo;
14     [% IF split_rule %]Modify splitting rule[% ELSE %]Add splitting rule[% END %]
15 [% END %]
16
17 </title>
18 [% INCLUDE 'doc-head-close.inc' %]
19 <style>
20     #button_add,
21     .split_regex,
22     .split_callnumber
23     {
24         padding-left: 10em;
25     }
26 </style>
27 </head>
28
29 <body id="admin_classsources" class="admin">
30 [% INCLUDE 'header.inc' %]
31 [% INCLUDE 'prefs-admin-search.inc' %]
32
33 <div id="breadcrumbs">
34          <a href="/cgi-bin/koha/mainpage.pl">Home</a>
35 &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
36 &rsaquo; <a href="/cgi-bin/koha/admin/classsources.pl">Classification sources</a>
37 [% IF op == 'add_source' %]
38 &rsaquo; [% IF class_source %]Modify classification source[% ELSE %]Add classification source[% END %]
39 [% ELSIF op == 'add_sort_rule' %]
40 &rsaquo; [% IF sort_rule %]Modify filing rule[% ELSE %]Add filing rule[% END %]
41 [% ELSIF op == 'add_split_rule' %]
42 &rsaquo; [% IF split_rule %]Modify splitting rule[% ELSE %]Add splitting rule[% END %]
43 [% END %]
44 </div>
45
46 <div class="main container-fluid">
47     <div class="row">
48         <div class="col-sm-10 col-sm-push-2">
49             <main>
50
51 [% FOR m IN messages %]
52     <div class="dialog [% m.type | html %]">
53         [% SWITCH m.code %]
54         [% CASE 'error_on_update_source' %]
55             An error occurred when updating this classification source.
56         [% CASE 'success_on_update_source' %]
57             Classification source updated successfully.
58         [% CASE 'error_on_insert_source' %]
59             An error occurred when adding this classification source. Perhaps the code already exists?
60         [% CASE 'success_on_insert_source' %]
61             Classification source added successfully.
62         [% CASE 'error_on_delete_source' %]
63             An error occurred when deleting this classification source.
64         [% CASE 'success_on_delete_source' %]
65             Classification source deleted successfully.
66         [% CASE 'error_on_update_sort_rule' %]
67             An error occurred when updating this filing rule.
68         [% CASE 'success_on_update_sort_rule' %]
69             Filing rule updated successfully.
70         [% CASE 'error_on_insert_sort_rule' %]
71             An error occurred when adding this filing rule. Perhaps the code already exists?
72         [% CASE 'success_on_insert_sort_rule' %]
73             Filing rule added successfully.
74         [% CASE 'error_on_delete_sort_rule' %]
75             An error occurred when deleting this filing rule. Perhaps it is used by at least one classification source?
76         [% CASE 'success_on_delete_sort_rule' %]
77             Filing rule deleted successfully.
78         [% CASE 'error_on_update_split_rule' %]
79             An error occurred when updating this splitting rule.
80         [% CASE 'success_on_update_split_rule' %]
81             Splitting rule updated successfully.
82         [% CASE 'error_on_insert_split_rule' %]
83             An error occurred when adding this splitting rule. Perhaps the code already exists?
84         [% CASE 'success_on_insert_split_rule' %]
85             Splitting rule added successfully.
86         [% CASE 'error_on_delete_split_rule' %]
87             An error occurred when deleting this splitting rule. Perhaps it is used by at least one classification source?
88         [% CASE 'success_on_delete_split_rule' %]
89             Splitting rule deleted successfully.
90         [% CASE %]
91             [% m.code | html %]
92         [% END %]
93     </div>
94 [% END %]
95
96
97 [% IF op == 'add_source' %]
98   [% IF class_source %]
99 <h2>Modify classification source</h2>
100   [% ELSE %]
101 <h2>Add classification source</h2>
102   [% END %]
103 <form action="[% script_name | html %]" name="Aform" class="validated" method="post">
104   <input type="hidden" name="op" value="add_source_validate" />
105   <fieldset class="rows">
106     <ol>
107       <li>
108           [% IF class_source %]
109                   <span class="label">Classification source code: </span>
110             <input type="hidden" name="cn_source" value="[% class_source.cn_source | html %]" />
111             [% class_source.cn_source | html %]
112           [% ELSE %]
113               <label class="required" for="class_source">Classification source code: </label>
114               <input class="required" required="required" type="text" id="class_source" name="cn_source"  size="10" maxlength="10" />
115               <span class="required">Required</span>
116           [% END %]
117        </li>
118        <li><label class="required" for="description">Description: </label>
119            <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% class_source.description | html %]" />
120            <span class="required">Required</span>
121        </li>
122        <li><label for="used">Source in use?</label>
123            [% IF ( class_source.used ) %]<input type="checkbox" id="used" name="used" value="used" checked="checked" />[% ELSE %]
124                   <input type="checkbox" id="used" name="used" value="used" />[% END %]
125        </li>
126         <li>
127             <label class="required" for="class_sort_rule">Filing rule: </label>
128             <select class="required" required="required" id="class_sort_rule" name="class_sort_rule">
129                 [% FOREACH r IN sort_rules %]
130                     [% IF class_source.class_sort_rule == r.class_sort_rule %]
131                         <option value="[% r.class_sort_rule | html %]" selected="selected">[% r.description | html %] ([% r.class_sort_rule | html %])</option>
132                     [% ELSE %]
133                         <option value="[% r.class_sort_rule | html %]">[% r.description | html %] ([% r.class_sort_rule | html %])</option>
134                     [% END %]
135                 [% END %]
136             </select>
137             <span class="required">Required</span>
138         </li>
139         <li>
140             <label class="required" for="class_split_rule">Splitting rule: </label>
141             <select class="required" required="required" id="split_rule" name="class_split_rule">
142                 [% FOREACH r IN split_rules %]
143                     [% IF class_source.class_split_rule == r.class_split_rule %]
144                         <option value="[% r.class_split_rule | html %]" selected="selected">[% r.description | html %] ([% r.class_split_rule | html %])</option>
145                     [% ELSE %]
146                         <option value="[% r.class_split_rule | html %]">[% r.description | html %] ([% r.class_split_rule | html %])</option>
147                     [% END %]
148                 [% END %]
149             </select>
150             <span class="required">Required</span>
151         </li>
152     </ol>
153   </fieldset>
154   <fieldset class="action">
155     <input type="submit" value="Save" />
156     <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
157   </fieldset>
158 </form>
159 [% END %]
160
161 [% IF op == 'add_sort_rule' %]
162   [% IF sort_rule %]
163 <h2>Modify filing rule</h2>
164   [% ELSE %]
165 <h2>Add filing rule</h2>
166   [% END %]
167 <form action="[% script_name | html %]" name="Aform" class="validated" method="post">
168   <input type="hidden" name="op" value="add_sort_rule_validate" />
169   <fieldset class="rows">
170     <ol>
171       <li>
172           [% IF sort_rule %]
173                   <span class="label">Filing rule code: </span>
174             <input type="hidden" name="class_sort_rule" value="[% sort_rule.class_sort_rule | html %]" />
175             [% sort_rule.class_sort_rule | html %]
176           [% ELSE %]
177               <label for="class_sort_rule" class="required">Filing rule code: </label>
178               <input class="required" required="required" type="text" id="class_sort_rule" name="class_sort_rule"  size="10" maxlength="10" />
179               <span class="required">Required</span>
180           [% END %]
181        </li>
182        <li><label for="description" class="required">Description: </label>
183            <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% sort_rule.description | html %]" />
184            <span class="required">Required</span>
185        </li>
186        <li><label for="sort_routine" class="required">Filing routine: </label>
187            <select class="required" required="required" id="sort_routine" name="sort_routine">
188            [% FOREACH routine_name IN sort_routines %]
189              [% IF routine_name == sort_rule.sort_routine %]
190                  <option value="[% routine_name | html %]" selected="selected">[% routine_name | html %]</option>
191              [% ELSE %]
192                  <option value="[% routine_name | html %]">[% routine_name | html %]</option>
193              [% END %]
194            [% END %]
195            </select>
196            <span class="required">Required</span>
197        </li>
198     </ol>
199   </fieldset>
200     <fieldset class="action">
201         <input type="submit" value="Save" />
202         <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
203     </fieldset>
204 </form>
205 [% END %]
206
207 [% IF op == 'add_split_rule' %]
208   [% IF split_rule %]
209 <h2>Modify splitting rule</h2>
210   [% ELSE %]
211 <h2>Add splitting rule</h2>
212   [% END %]
213 <form action="[% script_name | html %]" name="Aform" class="validated" method="post">
214   <input type="hidden" name="op" value="add_split_rule_validate" />
215   <fieldset class="rows">
216     <ol>
217       <li>
218           [% IF split_rule %]
219             <span class="label">Splitting rule code: </span>
220             <input type="hidden" name="class_split_rule" value="[% split_rule.class_split_rule | html %]" />
221             [% split_rule.class_split_rule | html %]
222           [% ELSE %]
223               <label for="class_split_rule" class="required">Splitting rule code: </label>
224               <input class="required" required="required" type="text" id="class_split_rule" name="class_split_rule"  size="10" maxlength="10" />
225               <span class="required">Required</span>
226           [% END %]
227        </li>
228        <li><label for="description" class="required">Description: </label>
229            <input class="required" required="required" type="text" id="description" name="description" size="50" maxlength="250" value="[% split_rule.description | html %]" />
230            <span class="required">Required</span>
231        </li>
232        <li><label for="split_routine" class="required">Splitting routine: </label>
233            <select class="required" required="required" id="split_routine" name="split_routine">
234             [% FOREACH routine_name IN split_routines %]
235                 [% IF routine_name == split_rule.split_routine %]
236                     <option value="[% routine_name | html %]" selected="selected">[% routine_name | html %]</option>
237                 [% ELSE %]
238                     <option value="[% routine_name | html %]">[% routine_name | html %]</option>
239                 [% END %]
240             [% END %]
241            </select>
242            <span class="required">Required</span>
243        </li>
244         <li id="regex_block">
245             <label for="split_regex" class="required">Regular expression: </label>
246             <div>
247                 [% IF split_rule AND split_rule.regexs.size %]
248                     [% FOR re IN split_rule.regexs %]
249                         <div class="split_regex">
250                             <input type="text" name="split_regex" id="split_regex" value="[% re | html %]" />
251                             <a href="#" title="Delete" class="del_regex"><i class="fa fa-fw fa-trash"></i>Delete</a>
252                         </div>
253                     [% END %]
254                 [% ELSE %]
255                     <div class="split_regex">
256                         <input type="text" name="split_regex" id="split_regex" value="" />
257                         <a href="#" title="Delete" class="del_regex"><i class="fa fa-fw fa-trash"></i>Delete</a>
258                     </div>
259                 [% END %]
260             </div>
261             <div id="button_add">
262                 <a href="#" class="add_regex" title="Add a new regular expression"><i class="fa fa-fw fa-plus"></i> New</a>
263                 <span class="required">Required</span>
264             </div>
265             <label for="callnumbers">Test the regular expressions:</label>
266             <div id="test_split">
267                 <textarea name="callnumbers"></textarea>
268                 <button name="test_split_cns">Test</button>
269                 <div id="result_split_callnumbers"></div>
270             </div>
271         </li>
272     </ol>
273   </fieldset>
274     <fieldset class="action">
275         <input type="submit" value="Save" />
276         <a class="cancel" href="/cgi-bin/koha/admin/classsources.pl">Cancel</a>
277     </fieldset>
278 </form>
279 [% END %]
280
281 [% IF op == 'list' %]
282
283 <div id="toolbar" class="btn-toolbar">
284     <a class="btn btn-default" id="newsource" href="[% script_name | url %]?op=add_source"><i class="fa fa-plus"></i> New classification source</a>
285     <a class="btn btn-default" id="newrule" href="[% script_name | url %]?op=add_sort_rule"><i class="fa fa-plus"></i> New filing rule</a>
286     <a class="btn btn-default" id="newrule" href="[% script_name | url %]?op=add_split_rule"><i class="fa fa-plus"></i> New splitting rule</a>
287 </div>
288
289 <h2>Classification sources</h2>
290 <table>
291   <tr>
292     <th>Code</th>
293     <th>Description</th>
294     <th>In use</th>
295     <th>Filing rule</th>
296     <th>Splitting rule</th>
297     <th class="noExport">Actions</th>
298   </tr>
299   [% FOREACH class_source IN class_sources %]
300   <tr>
301     <td>[% class_source.cn_source | html %]</td>
302     <td>[% class_source.description |html | html %]</td>
303     <td>[% IF ( class_source.used ) %]Yes[% ELSE %]No[% END %]</td>
304     <td>[% class_source.class_sort_rule | html %]</td>
305     <td>[% class_source.class_split_rule | html %]</td>
306     <td class="actions">
307       <a class="btn btn-default btn-xs" href="[% script_name | url %]?op=add_source&amp;cn_source=[% class_source.cn_source | uri %]"><i class="fa fa-pencil"></i> Edit</a>
308       <a class="btn btn-default btn-xs delete_class_source" href="[% script_name | url %]?op=delete_source_confirmed&amp;cn_source=[% class_source.cn_source | uri%]"><i class="fa fa-trash"></i> Delete</a>
309     </td>
310   </tr>
311   [% END %]
312 </table>
313
314 <h2>Classification filing rules</h2>
315 <table>
316   <tr>
317     <th>Code</th>
318     <th>Description</th>
319     <th>Sorting routine</th>
320     <th class="noExport">Actions</th>
321   </tr>
322   [% FOREACH rule IN sort_rules %]
323   <tr>
324     <td>[% rule.class_sort_rule | html %]</td>
325     <td>[% rule.description |html | html %]</td>
326     <td>[% rule.sort_routine | html %]</td>
327     <td class="actions">
328       <a class="btn btn-default btn-xs" href="[% script_name | html %]?op=add_sort_rule&amp;class_sort_rule=[% rule.class_sort_rule |url %]"><i class="fa fa-pencil"></i> Edit</a>
329       <a class="btn btn-default btn-xs delete_sort_rule" href="[% script_name | html %]?op=delete_sort_rule&amp;class_sort_rule=[% rule.class_sort_rule |url %]"><i class="fa fa-trash"></i> Delete</a>
330     </td>
331   </tr>
332   [% END %]
333 </table>
334
335 <h2>Classification splitting rules</h2>
336 <table>
337   <tr>
338     <th>Code</th>
339     <th>Description</th>
340     <th>Splitting routine</th>
341     <th class="noExport">Actions</th>
342   </tr>
343   [% FOREACH rule IN split_rules %]
344   <tr>
345     <td>[% rule.class_split_rule | html %]</td>
346     <td>[% rule.description | html %]</td>
347     <td>[% rule.split_routine | html %]</td>
348     <td class="actions">
349       <a class="btn btn-default btn-xs" href="[% script_name | url %]?op=add_split_rule&amp;class_split_rule=[% rule.class_split_rule | uri %]"><i class="fa fa-pencil"></i> Edit</a>
350       <a class="btn btn-default btn-xs delete_split_rule" href="[% script_name | url %]?op=delete_split_rule&amp;class_split_rule=[% rule.class_split_rule | uri %]"><i class="fa fa-trash"></i> Delete</a>
351     </td>
352   </tr>
353   [% END %]
354 </table>
355
356
357 [% END %]
358
359             </main>
360         </div> <!-- /.col-sm-10.col-sm-push-2 -->
361
362         <div class="col-sm-2 col-sm-pull-10">
363             <aside>
364                 [% INCLUDE 'admin-menu.inc' %]
365             </aside>
366         </div> <!-- /.col-sm-2.col-sm-pull-10 -->
367      </div> <!-- /.row -->
368
369 [% MACRO jsinclude BLOCK %]
370     [% Asset.js("js/admin-menu.js") | $raw %]
371
372     <script>
373         function update_regex_block(){
374             if ( $("#split_routine option:selected").val() == 'RegEx' ) {
375                 $("#regex_block").show();
376                 $("#split_regex").attr('required', 'required');
377             } else {
378                 $("#regex_block").hide();
379                 $("#split_regex").removeAttr('required');
380             }
381         };
382         function update_delete_links_visibility() {
383             if( $("div.split_regex").length > 1 ) {
384                 $("div.split_regex").find('a.del_regex').show();
385             } else {
386                 $("div.split_regex").find('a.del_regex').hide();
387             }
388         }
389
390         function add_regex() {
391             var div_node = $("div.split_regex:last");
392             var div_clone = $(div_node).clone(true);
393             $(div_clone).find("input").val("");
394             $(div_node).after(div_clone);
395             update_delete_links_visibility();
396         }
397         function del_regex(a_node) {
398             $(a_node).parent('div').remove();
399             update_delete_links_visibility();
400         }
401
402         $(document).ready(function(){
403             update_regex_block();
404             update_delete_links_visibility();
405             $("#split_routine").on("change", function(){
406                 update_regex_block();
407             });
408
409             $(".delete_class_source").on("click", function(e){
410                 return confirm(_("Are you sure you want to delete this class source?"));
411             });
412             $(".delete_sort_rule").on("click", function(e){
413                 return confirm(_("Are you sure you want to delete this filing rule?"));
414             });
415             $(".delete_split_rule").on("click", function(e){
416                 return confirm(_("Are you sure you want to delete this splitting rule?"));
417             });
418
419             $(".add_regex").on("click", function(e){
420                 e.preventDefault();
421                 add_regex();
422             });
423             $(".del_regex").on("click", function(e){
424                 e.preventDefault();
425                 del_regex(this);
426             });
427
428             $("button[name='test_split_cns']").on("click", function(e){
429                 e.preventDefault();
430                 var regexs = [];
431                 $("input[name='split_regex']").each(function(){
432                     regexs.push($(this).val());
433                 });
434                 var callnumbers = $("textarea[name='callnumbers']").val();
435                 $.getJSON('/cgi-bin/koha/svc/split_callnumbers', {regexs: JSON.stringify(regexs), callnumbers: callnumbers}, function(answer){
436                     var callnumbers = answer['split_callnumbers'];
437                     $("#result_split_callnumbers").html('');
438                     var list_node = $('<ol></ol>');
439                     $(callnumbers).each(function(){
440                         var split_cn = this['split'].join('<br/>');
441                         var li_node = $('<li><label>'+this['inline']+'</label><div class="split_callnumber">'+split_cn+'</div></li>');
442                         $(list_node).append(li_node);
443                     });
444                     $("#result_split_callnumbers").append(list_node);
445                 }).fail(function(){alert("Something went wrong.")});
446             });
447         });
448
449     </script>
450 [% END %]
451 [% INCLUDE 'intranet-bottom.inc' %]