2 [% USE AdditionalContents %]
3 [% SET OpacNav = AdditionalContents.get( location => "OpacNav", lang => lang, library => logged_in_user.branchcode, blocktitle => 0 ) %]
4 [% SET OpacNavBottom = AdditionalContents.get( location => "OpacNavBottom", lang => lang, library => logged_in_user.branchcode, blocktitle => 0 ) %]
5 [% INCLUDE 'doc-head-open.inc' %]
6 <title>Your messaging settings › [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
7 [% INCLUDE 'doc-head-close.inc' %]
8 [% BLOCK cssinclude %][% END %]
10 [% INCLUDE 'bodytag.inc' bodyid='opac-messaging' %]
11 [% INCLUDE 'masthead.inc' %]
14 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumbs">
15 <ol class="breadcrumb">
16 <li class="breadcrumb-item">
17 <a href="/cgi-bin/koha/opac-main.pl">Home</a>
19 <li class="breadcrumb-item">
20 <a href="/cgi-bin/koha/opac-user.pl">[% INCLUDE 'patron-title.inc' patron = logged_in_user %]</a>
22 <li class="breadcrumb-item active">
23 <a href="#" aria-current="page">Your messaging settings</a>
26 </nav> <!-- /#breadcrumbs -->
28 <div class="container-fluid">
30 <div class="col col-lg-2 order-2 order-lg-1">
32 [% INCLUDE 'navigation.inc' IsPatronPage=1 %]
35 <div class="col-md-12 col-lg-10 order-1">
37 [% IF Koha.Preference( 'EnhancedMessagingPreferencesOPAC' ) %]
38 <div id="usermessaging" class="maincontent">
39 <h1>Your messaging settings</h1>
40 [% IF ( settings_updated ) %]
41 <div class="alert alert-success"><p><strong>Settings updated</strong></p></div>
43 <form action="/cgi-bin/koha/opac-messaging.pl" method="post" name="opacmessaging">
44 <input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
45 <input type="hidden" name="modify" value="yes" />
47 <table class="table table-bordered table-condensed table-striped">
48 <caption class="sr-only">Your messaging settings</caption>
52 <th>Days in advance</th>
53 [% IF ( SMSSendDriver ) %]<th>SMS</th>[% END %]
54 [% IF ( TalkingTechItivaPhone ) %]<th>Phone</th>[% END %]
55 [% IF Koha.Preference('PhoneNotification') %]<th>Phone</th>[% END %]
57 <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>
61 [% FOREACH messaging_preference IN messaging_preferences %]
62 [% NEXT IF !Koha.Preference( 'ILLModule' ) && messaging_preference.message_name.match('^Ill_') %]
63 [% NEXT IF messaging_preference.Auto_Renewals && Koha.Preference('AutoRenewalNotices') != 'preferences' %]
65 <td>[% IF ( messaging_preference.Item_Due ) %]Item due
66 [% ELSIF ( messaging_preference.Advance_Notice ) %]Advance notice
67 [% ELSIF ( messaging_preference.Hold_Filled ) %]Hold filled
68 [% ELSIF ( messaging_preference.Hold_Reminder ) %]Hold reminder
69 [% ELSIF ( messaging_preference.Item_Check_in ) %]Item check-in
70 [% ELSIF ( messaging_preference.Item_Checkout ) %]
71 [% IF Koha.Preference( 'RenewalSendNotice' ) %]
72 Item checkout and renewal
76 [% ELSIF ( messaging_preference.Ill_ready ) %]Interlibrary loan ready
77 [% ELSIF ( messaging_preference.Ill_unavailable ) %]Interlibrary loan unavailable
78 [% ELSIF ( messaging_preference.Auto_Renewals ) %]Auto renewal
79 [% ELSE %]Unknown [% END %]</td>
80 [% IF ( messaging_preference.takes_days ) %]
81 <td><select class="input-mini" name="[% messaging_preference.message_attribute_id | html %]-DAYS">
82 [% FOREACH select_day IN messaging_preference.select_days %]
83 [% IF ( select_day.selected ) %]
84 <option value="[% select_day.day | html %]" selected="selected">[% select_day.day | html %]</option>
86 <option value="[% select_day.day | html %]">[% select_day.day | html %]</option>
93 [% IF ( SMSSendDriver ) %]
94 [% IF ( messaging_preference.transport_sms ) %]
95 <td class="selectcol">
96 [% IF ( messaging_preference.transports_sms ) %]
97 <input type="checkbox" class="pmp_sms" id="sms[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="sms" checked="checked" />
99 <input type="checkbox" class="pmp_sms" id="sms[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="sms" />
106 [% IF Koha.Preference('PhoneNotification') %]
107 [% IF ( messaging_preference.transport_phone ) %]
108 <td class="selectcol">
109 [% IF ( messaging_preference.transports_phone ) %]
110 <input type="checkbox"
112 id="phone[% messaging_preference.message_attribute_id | html %]"
113 name="[% messaging_preference.message_attribute_id | html %]"
114 value="phone" checked="checked" />
116 <input type="checkbox"
118 id="phone[% messaging_preference.message_attribute_id | html %]"
119 name="[% messaging_preference.message_attribute_id | html %]"
127 [% IF ( TalkingTechItivaPhone ) %]
128 [% IF ( messaging_preference.transport_itiva ) %]
129 <td class="selectcol">
130 [% IF ( messaging_preference.transports_itiva ) %]
131 <input type="checkbox"
133 id="itiva[% messaging_preference.message_attribute_id | html %]"
134 name="[% messaging_preference.message_attribute_id | html %]"
135 value="itiva" checked="checked" />
137 <input type="checkbox"
139 id="itiva[% messaging_preference.message_attribute_id | html %]"
140 name="[% messaging_preference.message_attribute_id | html %]"
149 [% IF ( messaging_preference.transport_email ) %]
150 <td class="selectcol">
151 [% IF ( messaging_preference.transports_email ) %]
152 <input type="checkbox" class="pmp_email" id="email[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="email" checked="checked" />
154 <input type="checkbox" class="pmp_email" id="email[% messaging_preference.message_attribute_id | html %]" name="[% messaging_preference.message_attribute_id | html %]" value="email" />
161 [% IF ( messaging_preference.has_digest ) %]
162 <td class="selectcol">
163 [% IF ( messaging_preference.digest ) %]
164 <input type="checkbox" id="digest[% messaging_preference.message_attribute_id | html %]" value="[% messaging_preference.message_attribute_id | html %]" name="digest" checked="checked" data-toggle="tooltip" title="You must select a digestible transport to select digests" />
166 <input type="checkbox" id="digest[% messaging_preference.message_attribute_id | html %]" value="[% messaging_preference.message_attribute_id | html %]" name="digest" data-toggle="tooltip" title="You must select a digestible transport to select digests" />
174 [% END # / FOREACH messaging_preferences%]
178 [% IF ( SMSSendDriver || Koha.Preference('TranslateNotices') ) %]
179 <fieldset class="rows">
181 [% IF ( SMSSendDriver ) %]
183 <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.
186 <label for="SMSnumber">SMS number:</label>
187 <input type="text" id="SMSnumber" name="SMSnumber" value="[% SMSnumber | html %]" pattern="^(\+[1-9]\d{0,2})?\d{1,12}$" />
188 <span class="hint sms_number_help">Please enter numbers only. Prefix the number with + if including the country code.</span>
191 [% IF ( SMSSendDriver == 'Email' ) %]
193 <label for="sms_provider_id">SMS provider:</label>
194 <select id="sms_provider_id" name="sms_provider_id">
195 <option value="">Unknown</option>
196 [% FOREACH s IN sms_providers %]
197 [% IF s.id == sms_provider_id %]
198 <option value="[% s.id | html %]" selected="selected">[% s.name | html %]</option>
200 <option value="[% s.id | html %]">[% s.name | html %]</option>
204 <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>
206 [% END # /IF ( SMSSendDriver == 'Email' ) %]
207 [% END # /IF SMSSendDriver %]
209 [% IF Koha.Preference('TranslateNotices') %]
211 <label for="lang">Preferred language for notices: </label>
212 <select id="lang" name="lang">
213 <option value="default">Default</option>
214 [% FOR language IN languages %]
215 [% FOR sublanguage IN language.sublanguages_loop %]
216 [% IF language.plural %]
217 [% IF sublanguage.rfc4646_subtag == patron_lang %]
218 <option value="[% sublanguage.rfc4646_subtag | html %]" selected="selected">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
220 <option value="[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
223 [% IF sublanguage.rfc4646_subtag == patron_lang %]
224 <option value="[% sublanguage.rfc4646_subtag | html %]" selected="selected">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
226 <option value="[% sublanguage.rfc4646_subtag | html %]">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</option>
228 [% END # /IF language.plural %]
229 [% END # /FOR sublanguage %]
230 [% END #/FOR language %]
231 </select> <!-- /#lang -->
233 [% END #/IF Koha.Preference('TranslateNotices') %]
236 [% END #/IF SMSSendDriver || Koha.Preference('TranslateNotices') %]
238 <fieldset class="action">
239 <input type="submit" value="Submit changes" class="btn btn-primary" />
240 <a class="cancel" href="/cgi-bin/koha/opac-user.pl">Cancel</a>
243 </div> <!-- / #usermessaging -->
245 <p><strong>You are not allowed to call this page directly</strong></p>
246 [% END # /IF Koha.Preference( 'EnhancedMessagingPreferencesOPAC' ) %]
247 </div> <!-- / .col-lg-10 -->
248 </div> <!-- / .row -->
249 </div> <!-- / .container-fluid -->
250 </div> <!-- / .main -->
252 [% INCLUDE 'opac-bottom.inc' %]
253 [% BLOCK jsinclude %]
255 $(document).ready(function(){
256 $("#info_digests").tooltip();
258 function toggle_digest(id){
259 if ( $("#email"+id).prop("checked") || $("#sms"+id).prop("checked") ) {
260 $("#digest"+id).attr("disabled", false).tooltip('disable');
262 $("#digest"+id).attr("disabled", true).prop("checked",false).tooltip('enable');
266 // At load time, we want digest disabled if no digest using transport is enabled
267 $(".pmp_email").each(function(){
268 toggle_digest(Number($(this).attr("id").replace("email", "")));
271 // If user clears all digest using transports for a notice, disable digest checkbox
272 $(".pmp_email").click(function(){
273 toggle_digest(Number($(this).attr("id").replace("email", "")));
275 $(".pmp_sms").click(function(){
276 toggle_digest(Number($(this).attr("id").replace("sms", "")));
281 function normalizeSMS(value){
282 let has_plus = value.charAt(0) === '+';
283 let new_value = value.replace(/\D/g,'');
284 if ( has_plus ) new_value = '+' + new_value;
288 var sms_input = document.getElementById('SMSnumber');
290 if (typeof sms_input !== 'undefined' && sms_input !== null) {
291 sms_input.addEventListener('keyup', function(){
292 var field = sms_input.value;
293 sms_input.value = normalizeSMS(field);
296 sms_input.addEventListener('paste', function(event) {
297 let paste = (event.clipboardData || window.clipboardData).getData('text');
298 setTimeout(function () {
299 sms_input.value = normalizeSMS(paste);