Bug 13613: Don't allow digest to be selected without a digest-able transport selected
[koha.git] / koha-tmpl / opac-tmpl / bootstrap / en / modules / opac-messaging.tt
1 [% USE Koha %]
2 [% INCLUDE 'doc-head-open.inc' %]
3 <title>Your messaging settings &rsaquo; [% IF ( LibraryNameTitle ) %][% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %][% ELSE %]Koha online[% END %] catalog</title>
4 [% INCLUDE 'doc-head-close.inc' %]
5 [% BLOCK cssinclude %][% END %]
6 </head>
7 [% INCLUDE 'bodytag.inc' bodyid='opac-messaging' %]
8 [% INCLUDE 'masthead.inc' %]
9
10 <div class="main">
11     <nav aria-label="breadcrumb">
12         <ul class="breadcrumb">
13             <li class="breadcrumb-item">
14                 <a href="/cgi-bin/koha/opac-main.pl">Home</a>
15             </li>
16             <li class="breadcrumb-item">
17                 <a href="/cgi-bin/koha/opac-user.pl">[% INCLUDE 'patron-title.inc' patron = logged_in_user %]</a>
18             </li>
19             <li class="breadcrumb-item" aria-current="IsPatronPage">
20                 <a href="#">Your messaging settings</a>
21             </li>
22         </ul>
23     </nav>
24
25     <div class="container-fluid">
26         <div class="row">
27             <div class="col col-lg-2 order-2 order-lg-1">
28                 <div id="navigation">
29                     [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
30                 </div>
31             </div>
32             <div class="col-md-12 col-lg-10 order-1">
33
34                 [% IF Koha.Preference( 'EnhancedMessagingPreferencesOPAC' )  %]
35                     <div id="usermessaging" class="maincontent">
36                         <h1>Your messaging settings</h1>
37                         [% IF ( settings_updated ) %]
38                         <div class="alert alert-success"><p><strong>Settings updated</strong></p></div>
39                         [% END %]
40                         <form action="/cgi-bin/koha/opac-messaging.pl" method="post" name="opacmessaging">
41                             <input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
42                             <input type="hidden" name="modify" value="yes" />
43
44                                 <table class="table table-bordered table-condensed table-striped">
45                                     <thead>
46                                         <tr>
47                                             <th>&nbsp;</th>
48                                             <th>Days in advance</th>
49                                             [% IF ( SMSSendDriver ) %]<th>SMS</th>[% END %]
50                                             [% IF ( TalkingTechItivaPhone ) %]<th>Phone</th>[% END %]
51                                             [% IF Koha.Preference('PhoneNotification') %]<th>Phone</th>[% END %]
52                                             <th>Email</th>
53                                             <th>Digests only <i id="info_digests" data-toggle="tooltip" title="You can ask for a digest to reduce the number of messages. Messages will be saved and sent as a single message." data-placement="right" class="fa fa-info-circle"></i></th>
54                                         </tr>
55                                     </thead>
56                                     <tbody>
57                                     [% FOREACH messaging_preference IN messaging_preferences %]
58                                         [% NEXT IF !Koha.Preference( 'ILLModule' ) && messaging_preference.message_name.match('^Ill_') %]
59                                         [% NEXT IF messaging_preference.Auto_Renewals && Koha.Preference('AutoRenewalNotices') != 'preferences' %]
60                                         <tr>
61                                             <td>[% IF ( messaging_preference.Item_Due ) %]Item due
62                                                 [% ELSIF ( messaging_preference.Advance_Notice ) %]Advance notice
63                                                 [% ELSIF ( messaging_preference.Hold_Filled ) %]Hold filled
64                                                 [% ELSIF ( messaging_preference.Item_Check_in ) %]Item check-in
65                                                 [% ELSIF ( messaging_preference.Item_Checkout ) %]
66                                                     [% IF Koha.Preference( 'RenewalSendNotice' ) %]
67                                                         Item checkout and renewal
68                                                     [% ELSE %]
69                                                         Item checkout
70                                                     [% END %]
71                                                 [% ELSIF ( messaging_preference.Ill_ready ) %]Interlibrary loan ready
72                                                 [% ELSIF ( messaging_preference.Ill_unavailable ) %]Interlibrary loan unavailable
73                                                 [% ELSIF ( messaging_preference.Auto_Renewals ) %]Auto renewal
74                                                 [% ELSE %]Unknown [% END %]</td>
75                                             [% IF ( messaging_preference.takes_days ) %]
76                                                 <td><select class="input-mini" name="[% messaging_preference.message_attribute_id | html %]-DAYS">
77                                                 [% FOREACH select_day IN messaging_preference.select_days %]
78                                                     [% IF ( select_day.selected ) %]
79                                                         <option value="[% select_day.day | html %]" selected="selected">[% select_day.day | html %]</option>
80                                                     [% ELSE %]
81                                                         <option value="[% select_day.day | html %]">[% select_day.day | html %]</option>
82                                                     [% END %]
83                                                 [% END %]
84                                                 </select></td>
85                                             [% ELSE %]
86                                                 <td>-</td>
87                                             [% END %]
88                                             [% IF ( SMSSendDriver ) %]
89                                                 [% IF ( messaging_preference.transport_sms ) %]
90                                                     <td class="selectcol">
91                                                         [% IF ( messaging_preference.transports_sms ) %]
92                                                         <input type="checkbox" class="sms" id="sms[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="sms" checked="checked" />
93                                                         [% ELSE %]
94                                                             <input type="checkbox" class="sms" id="sms[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="sms" />
95                                                         [% END %]
96                                                     </td>
97                                                 [% ELSE %]
98                                                     <td>-</td>
99                                                 [% END %]
100                                             [% END %]
101                                             [% IF Koha.Preference('PhoneNotification') %]
102                                                 [% IF ( messaging_preference.transport_phone ) %]
103                                                     <td class="selectcol">
104                                                         [% IF ( messaging_preference.transports_phone ) %]
105                                                             <input type="checkbox"
106                                                                    class="phone"
107                                                                    id="phone[% messaging_preference.message_attribute_id | html %]"
108                                                                    name="[% messaging_preference.message_attribute_id | html %]"
109                                                                    value="phone" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
110                                                         [% ELSE %]
111                                                             <input type="checkbox"
112                                                                    class="phone"
113                                                                    id="phone[% messaging_preference.message_attribute_id | html %]"
114                                                                    name="[% messaging_preference.message_attribute_id | html %]"
115                                                                    value="phone" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
116                                                         [% END %]
117                                                     </td>
118                                                 [% ELSE %]
119                                                     <td>-</td>
120                                                 [% END %]
121                                             [% END %]
122                                             [% IF ( TalkingTechItivaPhone ) %]
123                                                 [% IF ( messaging_preference.transport_itiva ) %]
124                                                 <td class="selectcol">
125                                                 [% IF ( messaging_preference.transports_itiva ) %]
126                                                 <input type="checkbox"
127                                                             class="itiva"
128                                                             id="itiva[% messaging_preference.message_attribute_id | html %]"
129                                                             name="[% messaging_preference.message_attribute_id | html %]"
130                                                             value="itiva" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
131                                                 [% ELSE %]
132                                                 <input type="checkbox"
133                                                             class="itiva"
134                                                             id="itiva[% messaging_preference.message_attribute_id | html %]"
135                                                             name="[% messaging_preference.message_attribute_id | html %]"
136                                                             value="itiva" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
137                                                 [% END %]
138                                                 </td>
139                                                 [% ELSE %]
140                                                     <td>-</td>
141                                                 [% END %]
142                                             [% END %]
143
144                                             [% IF ( messaging_preference.transport_email ) %]
145                                                 <td class="selectcol">
146                                                     [% IF ( messaging_preference.transports_email ) %]
147                                                         <input type="checkbox" class="email" id="email[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="email" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
148                                                     [% ELSE %]
149                                                         <input type="checkbox" class="email" id="email[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="email" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
150                                                     [% END %]
151                                                 </td>
152                                             [% ELSE %]
153                                                 <td>-</td>
154                                             [% END %]
155
156                                             [% IF ( messaging_preference.has_digest ) %]
157                                                 <td class="selectcol">
158                                                     [% IF ( messaging_preference.digest ) %]
159                                                         <input type="checkbox" id="digest[% messaging_preference.message_attribute_id | html %]" value="[% messaging_preference.message_attribute_id | html %]" name="digest" checked="checked" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
160                                                     [% ELSE %]
161                                                         <input type="checkbox" id="digest[% messaging_preference.message_attribute_id | html %]" value="[% messaging_preference.message_attribute_id | html %]" name="digest" onclick = "document.opacmessaging.none[% messaging_preference.message_attribute_id | html %].checked=false;" />
162                                                     [% END %]
163                                                 </td>
164                                             [% ELSE %]
165                                             <td>-</td>
166                                             [% END %]
167
168                                         </tr>
169                                     [% END # / FOREACH messaging_preferences%]
170                                 </tbody>
171                             </table>
172
173                             [% IF ( SMSSendDriver || Koha.Preference('TranslateNotices') ) %]
174                                 <fieldset class="rows">
175                                     <ol>
176                                         [% IF ( SMSSendDriver ) %]
177                                             <li>
178                                                 <strong>Notice:</strong> Some charges for text messages may be incurred when using this service. Please check with your mobile service provider if you have questions.
179                                             </li>
180                                             <li>
181                                                 <label for="SMSnumber">SMS number:</label>
182                                                 <input type="text" id="SMSnumber" name="SMSnumber" value="[% SMSnumber | html %]" pattern="^(\+[1-9]\d{0,2})?\d{1,12}$" />
183                                                 <span class="hint sms_number_help">Please enter numbers only. Prefix the number with + if including the country code.</span>
184                                             </li>
185
186                                             [% IF ( SMSSendDriver == 'Email' ) %]
187                                                 <li>
188                                                     <label for="sms_provider_id">SMS provider:</label>
189                                                     <select id="sms_provider_id" name="sms_provider_id">
190                                                         <option value="">Unknown</option>
191                                                         [% FOREACH s IN sms_providers %]
192                                                             [% IF s.id == sms_provider_id %]
193                                                                 <option value="[% s.id | html %]" selected="selected">[% s.name | html %]</option>
194                                                             [% ELSE %]
195                                                                 <option value="[% s.id | html %]">[% s.name | html %]</option>
196                                                             [% END %]
197                                                         [% END %]
198                                                     </select>
199                                                     <div class="hint">Please contact a library staff member if you are unsure of your mobile service provider, or you do not see your provider in this list.</div>
200                                                 </li>
201                                             [% END # /IF ( SMSSendDriver == 'Email' ) %]
202                                         [% END # /IF SMSSendDriver %]
203
204                                         [% IF Koha.Preference('TranslateNotices') %]
205                                             <li>
206                                                 <label for="lang">Preferred language for notices: </label>
207                                                 <select id="lang" name="lang">
208                                                     <option value="default">Default</option>
209                                                     [% FOR language IN languages %]
210                                                         [% FOR sublanguage IN language.sublanguages_loop %]
211                                                             [% IF language.plural %]
212                                                                 [% IF sublanguage.rfc4646_subtag == patron_lang %]
213                                                                     <option value="[% sublanguage.rfc4646_subtag | html %]" selected="selected">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
214                                                                 [% ELSE %]
215                                                                     <option value="[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
216                                                                 [% END %]
217                                                             [% ELSE %]
218                                                                 [% IF sublanguage.rfc4646_subtag == patron_lang %]
219                                                                     <option value="[% sublanguage.rfc4646_subtag | html %]" selected="selected">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
220                                                                 [% ELSE %]
221                                                                     <option value="[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
222                                                                 [% END %]
223                                                             [% END # /IF language.plural %]
224                                                         [% END # /FOR sublanguage %]
225                                                     [% END #/FOR language %]
226                                                 </select> <!-- /#lang -->
227                                             </li>
228                                         [% END #/IF Koha.Preference('TranslateNotices') %]
229                                     </ol>
230                                 </fieldset>
231                             [% END #/IF SMSSendDriver || Koha.Preference('TranslateNotices') %]
232
233                             <fieldset class="action">
234                                 <input type="submit" value="Submit changes" class="btn btn-primary" />
235                                 <a class="cancel" href="/cgi-bin/koha/opac-user.pl">Cancel</a>
236                             </fieldset>
237                         </form>
238                     </div> <!-- / #usermessaging -->
239                 [% ELSE %]
240                 <p><strong>You are not allowed to call this page directly</strong></p>
241                 [% END # /IF Koha.Preference( 'EnhancedMessagingPreferencesOPAC' ) %]
242            </div> <!-- / .col-lg-10 -->
243         </div> <!-- / .row -->
244     </div> <!-- / .container-fluid -->
245 </div> <!-- / .main -->
246
247 [% INCLUDE 'opac-bottom.inc' %]
248 [% BLOCK jsinclude %]
249     <script>
250         $(document).ready(function(){
251             $(".none").click(function(){
252                 if($(this).attr("checked")){
253                     var rowid = $(this).attr("id");
254                     newid = Number(rowid.replace("none",""))
255                     $("#sms"+newid).removeAttr("checked");
256                     $("#email"+newid).removeAttr("checked");
257                     $("#digest"+newid).removeAttr("checked");
258                     $("#rss"+newid).removeAttr("checked");
259                 }
260             });
261             $("#info_digests").tooltip();
262
263             // At load time, we want digest disabled if no digest using transport is enabled
264             $(".email").each(function(){
265                 var rowid = $(this).attr("id");
266                 id = Number(rowid.replace("email",""));
267                 if ( $("#email"+id).prop("checked") || $("#sms"+id).prop("checked") ) {
268                     $("#digest"+id).attr("disabled", false);
269                 } else {
270                     $("#digest"+id).attr("disabled", true);
271                 }
272             });
273
274             // If user clears all digest using transports for a notice, disable digest checkbox
275             $(".email").click(function(){
276                 var rowid = $(this).attr("id");
277                 id = Number(rowid.replace("email",""));
278                 if ( $("#email"+id).prop("checked") || $("#sms"+id).prop("checked") ) {
279                     $("#digest"+id).attr("disabled", false);
280                 } else {
281                     $("#digest"+id).attr("disabled", true).prop("checked",false);
282                 }
283             });
284             $(".sms").click(function(){
285                 var rowid = $(this).attr("id");
286                 id = Number(rowid.replace("sms",""));
287                 if ( $("#email"+id).prop("checked") || $("#sms"+id).prop("checked") ) {
288                     $("#digest"+id).attr("disabled", false);
289                 } else {
290                     $("#digest"+id).attr("disabled", true).prop("checked",false);
291                 }
292             });
293         });
294
295         function normalizeSMS(value){
296             let has_plus = value.charAt(0) === '+';
297             let new_value = value.replace(/\D/g,'');
298             if ( has_plus ) new_value = '+' + new_value;
299             return new_value;
300         }
301
302         var sms_input = document.getElementById('SMSnumber');
303
304         if (typeof sms_input !== 'undefined' && sms_input !== null) {
305             sms_input.addEventListener('keyup', function(){
306                 var field = sms_input.value;
307                 sms_input.value = normalizeSMS(field);
308             });
309
310             sms_input.addEventListener('paste', function(event) {
311                 let paste = (event.clipboardData || window.clipboardData).getData('text');
312                 setTimeout(function () {
313                 sms_input.value = normalizeSMS(paste);
314                 }, 100);
315             });
316         }
317     </script>
318 [% END %]