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