diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
index 1d6ef39337..03df656c0e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
@@ -1674,24 +1674,31 @@
-
+
-
Change expiration date to default for this category?
+
Would you like to apply the defaults for the new category?
+
+
+
+
+
+
+
+
-
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'str/members-menu.inc' %]
@@ -1989,8 +1996,8 @@
var TalkingTechItivaPhoneNotification = [% Koha.Preference('TalkingTechItivaPhoneNotification') || 0 | html %];
var PhoneNotification = [% Koha.Preference('PhoneNotification') || 0 | html %];
- [% Asset.js("js/members.js") | $raw %]
[% Asset.js("js/messaging-preference-form.js") | $raw %]
+ [% Asset.js("js/members.js") | $raw %]
[% PROCESS 'password_check.inc' new_password => 'password', category_selector => '#categorycode_entry', minPasswordLength => patron.category.effective_min_password_length, RequireStrongPassword => patron.category.effective_require_strong_password %]
[% INCLUDE 'select2.inc' %]
diff --git a/koha-tmpl/intranet-tmpl/prog/js/members.js b/koha-tmpl/intranet-tmpl/prog/js/members.js
index a5566e9e75..a20561cfe0 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/members.js
+++ b/koha-tmpl/intranet-tmpl/prog/js/members.js
@@ -88,24 +88,6 @@ function update_category_code(category_code) {
);
var hint_string = __("Minimum password length: %s").format(min_length);
hint.html(hint_string);
-
- // Change patron's expiration date
- $("#categorycode_entry").change(function () {
- $("#expirationDateModal").modal("show");
- // Handle confirmation Yes button click
- $("#expirationDateConfirmBtn").on("click", function () {
- var fp = $("#to").flatpickr();
- var expiryDate = $(
- "select" + category_selector + " option:selected"
- ).data("expiryDate");
- // Check if expiryDate is available and format it to YYYY-MM-DD
- if (expiryDate) {
- var formattedDate = expiryDate.split("T")[0];
- fp.setDate(formattedDate);
- }
- $("#expirationDateModal").modal("hide");
- });
- });
}
function select_user(borrowernumber, borrower, relationship) {
diff --git a/koha-tmpl/intranet-tmpl/prog/js/messaging-preference-form.js b/koha-tmpl/intranet-tmpl/prog/js/messaging-preference-form.js
index f59c6dc1f4..c6d97e7e19 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/messaging-preference-form.js
+++ b/koha-tmpl/intranet-tmpl/prog/js/messaging-preference-form.js
@@ -5,68 +5,98 @@ $(document).ready(function () {
});
if (window.location.href.indexOf("op=add") === -1) {
- message_prefs_dirty = true; // unless op=add consider the message prefs dirty
+ 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(
- __(
- "Change messaging preferences to default for this category?"
- )
- )
- ) {
- // Not loading messaging defaults. Hide loading indicator
- messaging_prefs_loading.hide();
- return;
- }
- }
- 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
+
+ // Show the combined modal and reset checkboxes to checked
+ $("#categoryChangeUpdateMessaging").prop("checked", true);
+ $("#categoryChangeUpdateExpiry").prop("checked", true);
+ $("#categoryChangeModal").modal("show");
+
+ // Remove any previously bound confirm handler to avoid stacking
+ $("#categoryChangeConfirmBtn")
+ .off("click")
+ .on("click", function () {
+ $("#categoryChangeModal").modal("hide");
+
+ // --- Update messaging preferences ---
+ if (
+ $("#categoryChangeUpdateMessaging").prop("checked") &&
+ message_prefs_dirty
+ ) {
+ var messaging_prefs_loading = $(
+ "#messaging_prefs_loading"
+ );
+ messaging_prefs_loading.show();
+
+ $.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) {
+ var checked =
+ item[
+ "transports_" +
+ transport
+ ] == 1;
+ $(
+ "#" + transport + attrid
+ ).prop("checked", checked);
+ toggle_digest(attrid);
+ }
+ );
+ 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
+ );
+ }
+ }
);
- toggle_digest(attrid);
- } else {
- $("#" + transport + attrid).prop(
- "checked",
- false
- );
- toggle_digest(attrid);
+ message_prefs_dirty = false;
}
+ ).always(function () {
+ messaging_prefs_loading.hide();
});
- if (item.digest && item.digest != " ") {
- $("#digest" + attrid).prop("checked", true);
- } else {
- $("#digest" + attrid).prop("checked", false);
+ }
+
+ // --- Update expiry date ---
+ if ($("#categoryChangeUpdateExpiry").prop("checked")) {
+ var fp = $("#to").flatpickr();
+ var expiryDate = $(
+ "select" + category_selector + " option:selected"
+ ).data("expiryDate");
+ if (expiryDate) {
+ var formattedDate = expiryDate.split("T")[0];
+ fp.setDate(formattedDate);
}
- 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();
- });
+ }
+ });
});
}
@@ -91,12 +121,11 @@ $(document).ready(function () {
.tooltip("enable");
}
}
- // At load time, we want digest disabled if no digest using transport is enabled
+
$(".pmp_email").each(function () {
toggle_digest(Number($(this).attr("id").replace("email", "")));
});
- // If user clears all digest using transports for a notice, disable digest checkbox
$(".pmp_email").click(function () {
toggle_digest(Number($(this).attr("id").replace("email", "")));
});