Updated functionalities 2
This commit is contained in:
@@ -21,6 +21,20 @@
|
||||
<form method="post">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
|
||||
{# ── Pause all emails banner ── #}
|
||||
{% set any_email_on = prefs_map.values() | selectattr('email_enabled') | list | length > 0
|
||||
or prefs_map | length == 0 %}
|
||||
<div class="alert alert-light border d-flex align-items-center justify-content-between py-2 mb-3">
|
||||
<div>
|
||||
<i class="bi bi-pause-circle me-2 text-secondary"></i>
|
||||
<strong>Pause all email notifications</strong>
|
||||
<span class="text-muted ms-2" style="font-size:.85rem;">— in-app notifications are unaffected</span>
|
||||
</div>
|
||||
<button type="button" id="pauseAllBtn" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-pause-fill me-1"></i>Pause All Emails
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-header bg-light">
|
||||
<div class="row fw-semibold text-muted" style="font-size:.8rem;">
|
||||
@@ -292,6 +306,42 @@
|
||||
badge.textContent = 'Live';
|
||||
}
|
||||
}
|
||||
|
||||
// ── Pause all emails button ──────────────────────────────────────────────
|
||||
var pauseBtn = document.getElementById('pauseAllBtn');
|
||||
if (pauseBtn) {
|
||||
pauseBtn.addEventListener('click', function () {
|
||||
var allEmailToggles = document.querySelectorAll('.email-toggle');
|
||||
var anyOn = Array.from(allEmailToggles).some(function (c) { return c.checked; });
|
||||
|
||||
allEmailToggles.forEach(function (emailChk) {
|
||||
var event = emailChk.dataset.event;
|
||||
var digestChk = document.getElementById('digest_' + event);
|
||||
var freqSelect = document.getElementById('freq_' + event);
|
||||
var badge = document.getElementById('badge-' + event);
|
||||
|
||||
if (anyOn) {
|
||||
// Pause: turn everything off
|
||||
emailChk.checked = false;
|
||||
digestChk.checked = false;
|
||||
digestChk.disabled = true;
|
||||
freqSelect.disabled = true;
|
||||
updateBadge(badge, false, false);
|
||||
} else {
|
||||
// Resume: re-enable email (digest stays off until user opts back in)
|
||||
emailChk.checked = true;
|
||||
digestChk.disabled = false;
|
||||
updateBadge(badge, true, false);
|
||||
}
|
||||
});
|
||||
|
||||
// Update button label to reflect new state
|
||||
var nowPaused = !anyOn ? false : true;
|
||||
pauseBtn.innerHTML = nowPaused
|
||||
? '<i class="bi bi-play-fill me-1"></i>Resume All Emails'
|
||||
: '<i class="bi bi-pause-fill me-1"></i>Pause All Emails';
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user