Bug 21216: Add filter/search options to notices table
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / tools / letter.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% USE Branches %]
5 [% USE ColumnsSettings %]
6 [% SET footerjs = 1 %]
7 [% INCLUDE 'doc-head-open.inc' %]
8 <title>Koha &rsaquo; Tools &rsaquo; Notices[% IF ( add_form or copy_form ) %][% IF ( modify ) %] &rsaquo; Modify notice[% ELSE %] &rsaquo; Add notice[% END %][% END %][% IF ( add_validate or copy_validate) %] &rsaquo; Notice added[% END %][% IF ( delete_confirm ) %] &rsaquo; Confirm deletion[% END %]</title>
9 [% INCLUDE 'doc-head-close.inc' %]
10 [% Asset.css("css/datatables.css") | $raw %]
11 <style type="text/css">#preview_template .modal-dialog { width : 80%; } .spinner { display: none; } @media (max-width: 767px) { #preview_template { margin: 0; width : auto; } }</style>
12 </head>
13
14 <body id="tools_letter" class="tools">
15 [% INCLUDE 'header.inc' %]
16 [% INCLUDE 'letters-search.inc' %]
17
18 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; [% IF ( add_form or copy_form) %][% IF ( modify ) %]<a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Modify notice[% ELSE %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Add notice[% END %][% ELSE %][% IF ( add_validate or copy_validate) %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Notice added[% ELSE %][% IF ( delete_confirm ) %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Confirm deletion[% ELSE %]Notices &amp; slips[% END %][% END %][% END %]</div>
19
20 <div id="preview_template" class="modal in" tabindex="-1" role="dialog" aria-labelledby="preview_template_label" aria-hidden="true">
21     <div class="modal-dialog modal-lg">
22     <div class="modal-content">
23     <div class="modal-header">
24         <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
25         <h3 id="preview_template_label">Preview notice template</h3>
26     </div>
27     <div class="modal-body">
28         <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
29     </div>
30     <div class="modal-footer">
31         <!-- TODO <a href="#" class="btn btn-default" id="preview_template_button" role="button" data-toggle="modal">Convert using the Template Toolkit syntax</a>-->
32         <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
33     </div>
34     </div>
35     </div>
36 </div>
37
38 [% IF add_form or copy_form %]
39     <div class="main container-fluid">
40         <div class="row">
41             <div class="col-md-8 col-md-offset-2">
42 [% ELSE %]
43     <div id="doc3" class="yui-t2">
44         <div id="bd">
45             <div id="yui-main">
46                 <div class="yui-b">
47 [% END %]
48
49 [% IF ( no_op_set ) %]
50     <h1>Notices &amp; slips</h1>
51     <form method="get" action="/cgi-bin/koha/tools/letter.pl" id="selectlibrary">
52       <input type="hidden" name="searchfield" value="[% searchfield | html %]" />
53     [% UNLESS independant_branch %]
54       <p>
55         Select a library :
56             <select name="branchcode" id="branch" style="width:20em;">
57                 <option value="*">All libraries</option>
58                 [% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode ) %]
59             </select>
60       </p>
61     [% END %]
62       <div id="toolbar" class="btn-toolbar">
63           <button type="submit" class="btn btn-default btn-sm" id="newnotice"><i class="fa fa-plus"></i> New notice</button>
64         <input type="hidden" id="op" name="op" />
65       </div>
66     </form>
67
68                 [% IF ( search ) %]
69         <p>You searched for <b>[% searchfield | html %]</b></p>
70                 [% END %]
71                 [% IF ( letter && !independant_branch) %]
72             [% select_for_copy = BLOCK %]
73             <select name="branchcode">
74                 [% FOREACH l IN Branches.all() %]
75                 <option value="[% l.branchcode | html %]">Copy to [% l.branchname | html %]</option>
76                 [% END %]
77             </select>
78             [% END %]
79         [% END %]
80         [% IF letter %]
81           <table id="lettert">
82             <thead>
83               <tr>
84                 <th>Library</th>
85                 <th>Module</th>
86                 <th>Code</th>
87                 <th>Name</th>
88                 <th class="nosort">Copy notice</th>
89                 <th class="nosort">Actions</th>
90               </tr>
91             </thead>
92             <tbody>
93               [% FOREACH lette IN letter %]
94                 [% can_edit = lette.branchcode || !independant_branch | html %]
95                 <tr>
96                   <td>[% IF lette.branchname %][% lette.branchname | html %][% ELSE %](All libraries)[% END %]</td>
97                   <td>
98                       [% SWITCH lette.module %]
99                           [% CASE 'acquisition' %]<span>Acquisition</span>
100                           [% CASE 'catalogue' %]<span>Catalog</span>
101                           [% CASE 'circulation' %]<span>Circulation</span>
102                           [% CASE 'orderacquisition' %]<span>Order acquisition</span>
103                           [% CASE 'claimacquisition' %]<span>Claim acquisition</span>
104                           [% CASE 'claimissues' %]<span>Claim serial issue</span>
105                           [% CASE 'reserves' %]<span>Holds</span>
106                           [% CASE 'members' %]<span>Patrons</span>
107                           [% CASE 'serial' %]<span>Serials (new issue)</span>
108                           [% CASE 'suggestions' %]<span>Suggestions</span>
109                           [% CASE %]<span>[% lette.module | html %]</span>
110                       [% END %]
111                   </td>
112                   <td>[% lette.code | html %]</td>
113                   <td>[% lette.name | html %]</td>
114                   <td class="actions">
115                     [% IF !independant_branch || !lette.branchcode %]
116                       <form method="post" action="/cgi-bin/koha/tools/letter.pl">
117                         <input type="hidden" name="op" value="copy_form" />
118                         <input type="hidden" name="oldbranchcode" value="[% lette.branchcode | html %]" />
119                         <input type="hidden" name="module" value="[% lette.module | html %]" />
120                         <input type="hidden" name="code" value="[% lette.code | html %]" />
121                         [% IF independant_branch %]
122                           <input type="hidden" name="branchcode" value="[% independant_branch | html %]" />
123                         [% ELSE %]
124                           [% select_for_copy | $raw %]
125                         [% END %]
126                         <button class="btn btn-default btn-xs"><i class="fa fa-clone"></i> Copy</button>
127                       </form>
128                     [% END %]
129                   </td>
130                   <td class="actions">
131                     [% IF can_edit %]
132                       <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;branchcode=[% lette.branchcode | html %]&amp;module=[% lette.module | html %]&amp;code=[% lette.code | html %]"><i class="fa fa-pencil"></i> Edit</a>
133                     [% END %]
134                     [% IF !lette.protected && can_edit %]
135                       <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/letter.pl?op=delete_confirm&amp;branchcode=[% lette.branchcode | html %]&amp;module=[% lette.module | html %]&amp;code=[% lette.code | html %]"><i class="fa fa-trash"></i> Delete</a>
136                     [% END %]
137                   </td>
138                 </tr>
139               [% END %]
140             </tbody>
141           </table>
142         [% ELSE %]
143           <div class="dialog message">
144           [% IF ( branchcode ) %]
145              <p>There are no notices for this library.</p>
146           [% ELSE %]
147               <p>There are no notices.</p>
148           [% END %]
149           </div>
150         [% END %]
151 [% END %]
152
153         
154 [% IF add_form or copy_form %]
155 <h1>[% IF ( modify ) %]Modify notice[% ELSE %]Add notice[% END %]</h1>
156
157     <div id="toolbar" class="btn-toolbar">
158         <div class="btn-group">
159             <button class="btn btn-default btn-sm" id="submit_form"><i class="fa fa-save"></i> Save</button>
160             <button class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
161             <span class="caret"></span>
162             </button>
163             <ul class="dropdown-menu">
164                 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
165             </ul>
166         </div>
167         <a class="btn btn-default btn-sm cancel" href="/cgi-bin/koha/tools/letter.pl"><i class="fa fa-remove"></i> Cancel</a>
168     </div>
169
170         <form id="add_notice" name="Aform" method="post" enctype="multipart/form-data" class="validate">
171         [% IF add_form %]
172           <input type="hidden" name="op" id="op" value="add_validate" />
173         [% ELSE %]
174           <input type="hidden" name="op" id="op" value="copy_validate" />
175         [% END %]
176
177                 <input type="hidden" name="checked" value="0" />
178                 [% IF ( modify ) %]
179                 <input type="hidden" name="add" value="0" />
180                 [% ELSE %]
181                 <input type="hidden" name="add" value="1" />
182                 [% END %]
183                 <fieldset class="rows">
184             <input type="hidden" name="oldbranchcode" value="[% oldbranchcode | html %]" />
185             <ol>
186             [% IF independant_branch %]
187                 <input type="hidden" name="branchcode" value="[% independant_branch | html %]" />
188             [% ELSE %]
189             <li>
190
191                 [% IF adding %]
192                     <label for="branch">Library:</label>
193                     <select name="branchcode" id="branch" style="width:20em;">
194                         <option value="">All libraries</option>
195                         [% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode ) %]
196                     </select>
197                 [% ELSE %]
198                     <span class="label">Library:</span>
199                     <input type="hidden" id="branch" name="branchcode" value="[% branchcode | html %]" />
200                     [% IF ( branchcode ) %]
201                        [% Branches.GetName( branchcode ) | html %]
202                     [% ELSE %]
203                         All libraries
204                     [% END %]
205                 [% END %]
206             </li>
207             [% END %]
208                         <li>
209                                 <label for="module">Koha module:</label>
210                                 <input type="hidden" name="oldmodule" value="[% module | html %]" />
211                 [% IF adding  %]
212                   <select name="module" id="newmodule">
213                 [% ELSE %]
214                   <select name="module" id="module">
215                 [% END %]
216                                     [% IF ( module == "acquisition" ) %]
217                                       <option value="acquisition" selected="selected">Acquisition</option>
218                                     [% ELSE %]
219                                       <option value="acquisition" >Acquisition</option>
220                                     [% END %]
221                                     [% IF ( module == "catalogue" ) %]
222                                       <option value="catalogue" selected="selected">Catalog</option>
223                                     [% ELSE %]
224                                       <option value="catalogue" >Catalog</option>
225                                     [% END %]
226                                     [% IF ( module == "circulation" ) %]
227                                       <option value="circulation" selected="selected">Circulation</option>
228                                     [% ELSE %]
229                                       <option value="circulation">Circulation</option>
230                                     [% END %]
231                                     [% IF ( module == "orderacquisition" ) %]
232                                       <option value="orderacquisition" selected="selected">Order acquisition</option>
233                                     [% ELSE %]
234                                       <option value="orderacquisition">Order acquisition</option>
235                                     [% END %]
236                                     [% IF ( module == "claimacquisition" ) %]
237                                       <option value="claimacquisition" selected="selected">Claim acquisition</option>
238                                     [% ELSE %]
239                                       <option value="claimacquisition">Claim acquisition</option>
240                                     [% END %]
241                                     [% IF ( module == "claimissues" ) %]
242                                       <option value="claimissues" selected="selected">Claim serial issue</option>
243                                     [% ELSE %]
244                                       <option value="claimissues">Claim serial issue</option>
245                                     [% END %]
246                                     [% IF ( module == "reserves" ) %]
247                                       <option value="reserves" selected="selected">Holds</option>
248                                     [% ELSE %]
249                                       <option value="reserves">Holds</option>
250                                     [% END %]
251                                     [% IF ( module == "members" ) %]
252                                       <option value="members" selected="selected">Patrons</option>
253                                     [% ELSE %]
254                                       <option value="members">Patrons</option>
255                                     [% END %]
256                                     [% IF ( module == "serial" ) %]
257                                       <option value="serial" selected="selected">Serials (new issue)</option>
258                                     [% ELSE %]
259                                       <option value="serial">Serials (new issue)</option>
260                                     [% END %]
261                                     [% IF ( module == "suggestions" ) %]
262                                       <option value="suggestions" selected="selected">Suggestions</option>
263                                     [% ELSE %]
264                                       <option value="suggestions">Suggestions</option>
265                                     [% END %]
266                 </select>
267             </li>
268             <li>
269               [% IF adding %]
270                   <label for="code" class="required">Code:</label>
271                   <input type="text" id="code" name="code" size="20" maxlength="20" value="" required="required"/>
272                   <span class="required">Required</span>
273               [% ELSE %]
274                   <span class="label">Code:</span>
275                   <input type="hidden" id="code" name="code" value="[% code | html %]" />
276                   [% code | html %]
277               [% END %]
278             </li>
279             <li>
280               <label for="name" class="required">Name:</label>
281               <input type="text" id="name" name="name" size="60" value="[% letter_name | html %]" required="required" />
282               <span class="required">Required</span>
283             </li>
284             [% IF code and preview_is_available%]
285                 <li>
286                     <label for="name">Data for preview:</label>
287                     [% SWITCH code %]
288                     [% CASE 'CHECKIN' %]
289                         <input type="text" id="data_preview" name="data_preview" value="" placeholder="barcode" />
290                     [% CASE 'CHECKOUT' %]
291                         <input type="text" id="data_preview" name="data_preview" value="" placeholder="barcode|borrowernumber" />
292                     [% CASE 'HOLD_SLIP' %]
293                         <input type="text" id="data_preview" name="data_preview" value="" placeholder="biblionumber|borrowernumber" />
294                     [% CASE %]
295                         Not supported yet.
296                     [% END %]
297                     </li>
298             [% END %]
299         </ol>
300     </fieldset>
301         [% IF Koha.Preference('TranslateNotices') %]
302         <div style="clear:both"></div>
303             <div id="tabs">
304                 <ul>
305                     <li><a href="#lang_default">Default</a></li>
306                     [% FOR language IN languages %]
307                         [% FOR sublanguage IN language.sublanguages_loop %]
308                             [% IF language.plural %]
309                                 <li><a href="#lang_[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
310                             [% ELSE %]
311                                 <li><a href="#lang_[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
312                             [% END %]
313                         [% END %]
314                     [% END %]
315                 </ul>
316         [% END %]
317
318         [% FOREACH lang IN letters.keys %]
319             <div id="lang_[% lang | html %]">
320         <div class="transport-types" style="clear:both">
321         [% FOR mtt IN letters.$lang.templates.keys.sort %]
322             [% SET letter = letters.$lang.templates.$mtt %]
323             <h3>
324                 [% SWITCH letter.message_transport_type %]
325                 [% CASE 'email' %]
326                   Email
327                 [% CASE 'print' %]
328                   Print
329                 [% CASE 'sms' %]
330                   SMS
331                 [% CASE 'feed' %]
332                   Feed
333                 [% CASE 'phone' %]
334                   Phone
335                 [% CASE %]
336                   [% letter.message_transport_type | html %]
337                 [% END %]
338             </h3>
339             [% IF letter.message_transport_type == "sms" and not Koha.Preference("SMSSendDriver") %]
340               <fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]" disabled="disabled">
341                 <div class="dialog message">You should enable the SMSSendDriver preference to use the SMS templates.</div>
342             [% ELSIF letter.message_transport_type == "phone" and not Koha.Preference("TalkingTechItivaPhoneNotification") %]
343               <fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]" disabled="disabled">
344                 <div class="dialog message">You should enable the TalkingTechItivaPhoneNotification preference to use the phone templates.</div>
345             [% ELSE %]
346               <fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]">
347             [% END %]
348               <ol>
349                 <li>
350                   <input type="hidden" name="message_transport_type" value="[% letter.message_transport_type | html %]" />
351                   <input type="hidden" name="lang" value="[% lang | html %]" />
352                   <label for="is_html_[% letter.message_transport_type | html %]_[% lang | html %]">HTML message:</label>
353                   [% IF letter.is_html %]
354                     <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" checked="checked" />
355                   [% ELSE %]
356                     <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" />
357                   [% END %]
358                 </li>
359                 <li>
360                   <label for="title_[% letter.message_transport_type | html %]_[% lang | html %]">Message subject:</label><input type="text" id="title_[% letter.message_transport_type | html %]_[% lang | html %]" name="title" size="60" value="[% letter.title | html %]" />
361                 </li>
362                 <li>
363                   <label for="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]">Message body:</label>
364                   [% IF letter.message_transport_type == 'sms' %]
365                     <span class="sms_counter" id="sms_counter_[% lang | html %]">[% IF letter.content && letter.content.length > 0 %][% letter.content.length | html %][% ELSE %]0[% END %]/160 characters</span>
366                   [% END %]
367                   <table>
368                     <tr>
369                       <td>
370                         <select name="SQLfieldname" id="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]" multiple="multiple" size="9">
371                           [% FOREACH SQLfieldname IN SQLfieldnames %]
372                             <option value="[% SQLfieldname.value | html %]">[% SQLfieldname.text | html %]</option>
373                           [% END %]
374                         </select>
375                       </td>
376                         <td class="actions">
377                             <button type="button" data-containerid="[% letter.message_transport_type | html %]_[% lang | html %]" class="btn btn-default btn-sm insert">Insert <i class="fa fa-long-arrow-right"></i></button>
378                         </td>
379                       <td><textarea name="content" data-lang="[% lang | html %]" class="content_[% letter.message_transport_type | html %]" id="content_[% letter.message_transport_type | html %]_[% lang | html %]" cols="80" rows="15">[% letter.content | html %]</textarea></td>
380                     </tr>
381                   </table>
382                 </li>
383                 [% IF preview_is_available %]
384                     <li>
385                         <a href="/cgi-bin/koha/svc/letters/preview" class="preview_template btn btn-default btn-xs" title="Preview this notice template" data-mtt="[% letter.message_transport_type | html %]" data-lang="[% lang | html %]"><i class="fa fa-eye"></i> Preview</a>
386                     </li>
387                 [% END %]
388               </ol>
389             </fieldset>
390             [% END %]
391             </div>
392         </div> <!-- / #transport-types -->
393         [% END %]
394         [% IF Koha.Preference('TranslateNotices') %]
395         </div>
396         [% END %]
397
398         [% IF code.search('DGST') %] <span class="overdue">Warning, this is a template for a Digest, as such, any references to branch data ( e.g. branches.branchname ) will refer to the borrower's home branch.</span> [% END %]
399
400         <input type="hidden" id="redirect" name="redirect" value="" />
401         <input type="hidden" name="searchfield" value="[% searchfield | html %]" />
402     </form>
403 [% END %]
404
405 [% IF ( add_validate or copy_validate) %]
406         Data recorded
407         <form action="[% action | html %]" method="post">
408         <input type="submit" value="OK" />
409         </form>
410 [% END %]
411
412 [% IF ( delete_confirm ) %]
413     <div class="dialog alert">
414         <h3>Delete notice?</h3>
415         <table>
416             <thead>
417             <tr>
418                 <th>Library</th>
419                 <th>Module</th>
420                 <th>Code</th>
421                 <th>Name</th>
422             </tr>
423             </thead>
424             <tr>
425                 <td>[% IF letter.branchcode %][% Branches.GetName( letter.branchcode ) | html %][% ELSE %](All libraries)[% END %]</td>
426                 <td>[% letter.module | html %]</td>
427                 <td>[% letter.code | html %]</td>
428                 <td>[% letter.name | html %]</td>
429             </tr>
430         </table>
431             <form action="[% action | html %]" method="post">
432             <input type="hidden" name="op" value="delete_confirmed">
433             <input type="hidden" name="branchcode" value="[% letter.branchcode | html %]" />
434             <input type="hidden" name="code" value="[% letter.code | html %]" />
435             <input type="hidden" name="module" value="[% letter.module | html %]" />
436             <button type="submit" class="approve"><i class="fa fa-check"></i> Yes, delete</button>
437         </form>
438
439         <form action="[% action | html %]" method="get">
440             <button type="submit" class="deny"><i class="fa fa-times"></i> No, do not delete</button>
441         </form>
442     </div>
443 [% END %]
444
445 [% IF ( delete_confirmed ) %]
446         Data deleted
447         <form action="[% action | html %]" method="post">
448         <input type="submit" value="OK" />
449         </form>
450 [% END %]
451
452 </div>
453 </div>
454 [% UNLESS add_form or copy_form %]
455     <div class="yui-b noprint">
456         [% INCLUDE 'tools-menu.inc' %]
457     </div>
458 [% END %]
459 </div>
460
461 [% MACRO jsinclude BLOCK %]
462     [% Asset.js("js/tools-menu.js") | $raw %]
463     [% INCLUDE 'datatables.inc' %]
464     [% INCLUDE 'columns_settings.inc' %]
465     [% Asset.js("lib/jquery/plugins/jquery.fixFloat.js") | $raw %]
466     [% Asset.js("lib/jquery/plugins/jquery.insertatcaret.js") | $raw %]
467     <script>
468         var no_op_set = '[% no_op_set | html %]';
469         var interface = '[% interface | html %]';
470         var theme = '[% theme | html %]';
471         var add_form = '[% add_form | html %]';
472         var copy_form = '[% copy_form | html %]';
473         var code = '[% code | html %]';
474         var new_lettercode = '[% new_lettercode | html %]';
475         var new_branchcode = '[% new_branchcode | html %]';
476         var MSG_CODE_EXISTS = _("A default letter with the code '%s' already exists.");
477         var MSG_CODE_EXISTS_FOR_LIBRARY = _("A letter with the code '%s' already exists for '%s'.");
478         var MSG_EMPTY_TITLE_AND_CONTENT = _("Please specify title and content for %s");
479         var MSG_EMPTY_TEMPLATES = _("Please fill at least one template.");
480         var MSG_LOADING = _("Loading");
481         var MSG_NO_NOTICE_FOUND = _("No matching notices found");
482         var columns_settings = [% ColumnsSettings.GetColumns( 'tools', 'notices', 'lettert', 'json' ) | $raw %];
483      </script>
484     [% Asset.js("js/letter.js") | $raw %]
485 [% END %]
486
487 [% INCLUDE 'intranet-bottom.inc' %]