Bug 21813: In-page JavaScript causes error on patron entry page

This patch removes a block of JavaScript from memberentrygen.tt which
was being included in the page before jQuery is loaded. This causes a
JavaScript error.

To test, apply the patch, regenerate CSS, and clear your browser cache
if necessary.

 - In Administration -> Patron categories, confirm that you have two
    patron categories with different default messaging preferences
    defined.
 - Go to Patrons -> New patron
   - Create a new patron using one of the categories with messaging
     preferences.
   - Confirm that when you switch the category selection to the other
     patron category, the patron messaging preference checkboxes are
     changed to the default for that category.
     - A "Loading" indicator should appear above the checkboxes to show
      that an operation is in process. It should disappear when new
      default prefs are loaded.
   - Manually change one or more patron messaging preference checkboxes.
   - Switch the patron category again and confirm that you are prompted
     to confirm resetting the preferences to the default for that
     category.
 - Perform the same set of tests when editing a patron.
   - Defaults should not be loaded during the edit process.
 - Confirm that there are no other JavaScript errors in the console.
 - Test again with EnhancedMessagingPreferences disabled.

Signed-off-by: Pierre-Marc Thibault <pierre-marc.thibault@inLibro.com>

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
Owen Leonard 2018-11-12 17:35:25 +00:00 committed by Nick Clemens
parent b32756a5d7
commit 3607fdfe79
3 changed files with 61 additions and 46 deletions

View File

@ -3882,6 +3882,15 @@ span {
}
}
.form-message {
background-color: #FFF;
border: 1px solid #A4BEDD;
border-radius: 5px;
margin: 1em;
padding: .5em;
}
.modal-textarea {
width: 98%;
}

View File

@ -1083,52 +1083,9 @@
[% IF ( step_5 ) %][% IF ( EnhancedMessagingPreferences ) %]
<fieldset class="rows" id="memberentry_messaging_prefs">
<legend id="patron_messaging_prefs_lgd">Patron messaging preferences</legend>
[% IF ( opadd ) %]
<!-- handle changing prefs if creating new patron and changing
the patron category
-->
<script type="text/javascript">//<![CDATA[
$(document).ready(function(){
var message_prefs_dirty = false;
$('#memberentry_messaging_prefs > *').change(function() {
message_prefs_dirty = true;
});
$('#categorycode_entry').change(function() {
var categorycode = $(this).val();
if (message_prefs_dirty) {
if (!confirm(_("Change messaging preferences to default for this category?"))) {
return;
}
}
$.getJSON('/cgi-bin/koha/members/default_messageprefs.pl?categorycode=' + categorycode,
function(data) {
$.each(data.messaging_preferences, function(i, item) {
var attrid = item.message_attribute_id;
var transports = ['email', 'rss', 'sms'];
$.each(transports, function(j, transport) {
if (item['transports_' + transport] == 1) {
$('#' + transport + attrid).prop('checked', true);
} else {
$('#' + transport + attrid).prop('checked', false);
}
});
if (item.digest && item.digest != ' ') {
$('#digest' + attrid).prop('checked', true);
} else {
$('#digest' + attrid).prop('checked', false);
}
if (item.takes_days == '1') {
$('[name=' + attrid + '-DAYS]').val('' + item.days_in_advance);
}
});
message_prefs_dirty = false;
}
);
});
});
//]]>
</script>
[% END %]
<div id="messaging_prefs_loading" class="form-message" style="display:none">
<img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading new messaging defaults
</div>
<input type="hidden" name="setting_messaging_prefs" value="1" />
[% INCLUDE 'messaging-preference-form.inc' %]
[% IF ( SMSSendDriver ) %]
@ -1299,6 +1256,7 @@
var LABEL_CHANGE = _("Change");
var LABEL_SET_TO_PATRON = _("Set to patron");
var LABEL_AGE = _("Age");
var MSG_MESSAGING_DFEAULTS = _("Change messaging preferences to default for this category?");
[% IF quickadd && opadd && !check_member %]
$(document).ready(function () {

View File

@ -17,4 +17,52 @@ $(document).ready(function(){
}
});
$("#info_digests").tooltip();
var message_prefs_dirty = false;
$('#memberentry_messaging_prefs > *').change(function() {
message_prefs_dirty = true;
});
if( $("#messaging_prefs_loading").length ){ // This element only appears in the template if op=add
$('#categorycode_entry').change(function() {
var messaging_prefs_loading = $("#messaging_prefs_loading");
// Upon selecting a new patron category, show "Loading" message for messaging defaults
messaging_prefs_loading.show();
var categorycode = $(this).val();
if (message_prefs_dirty) {
if (!confirm( MSG_MESSAGING_DFEAULTS )) {
// Not loading messaging defaults. Hide loading indicator
messaging_prefs_loading.hide();
return;
}
}
$(".none").prop("checked", false); // When loading default prefs the "Do not notify" boxes should be cleared
var jqxhr = $.getJSON('/cgi-bin/koha/members/default_messageprefs.pl?categorycode=' + categorycode, function(data) {
$.each(data.messaging_preferences, function(i, item) {
var attrid = item.message_attribute_id;
var transports = ['email', 'rss', 'sms'];
$.each(transports, function(j, transport) {
if (item['transports_' + transport] == 1) {
$('#' + transport + attrid).prop('checked', true);
} else {
$('#' + transport + attrid).prop('checked', false);
}
});
if (item.digest && item.digest != ' ') {
$('#digest' + attrid).prop('checked', true);
} else {
$('#digest' + attrid).prop('checked', false);
}
if (item.takes_days == '1') {
$('[name=' + attrid + '-DAYS]').val('' + item.days_in_advance);
}
});
message_prefs_dirty = false;
})
.always(function() {
// Loaded messaging defaults. Hide loading indicator
messaging_prefs_loading.hide();
});
});
}
});