[pve-devel] [PATCH manager v3 2/2] ui: backup job details: show notification-mode instead of legacy keys
Lukas Wagner
l.wagner at proxmox.com
Wed Jul 9 10:14:32 CEST 2025
The backup job details view was never updated after the overhaul of the
notification system. In this commit we remove the left-over
notification-policy/target handling and change the view so that we
display the current configuration based on notification-mode, mailto and
mailnotification.
Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
---
Notes:
Changes since v2:
- Instead of rendering the recipient email addresses
in the 'Notification' field, use a separate 'Recipients'
display field. The field is only displayed if the legacy-mode
(or auto with mailto set) is configured.
- Rephrase some strings to make the more concise. While
the previous ones fitted within the width of the dialog,
they were indeed quite long. Some translations might
exceed the width of the dialog, leading to bad UX.
Changes since v1:
- Rebased onto latest master (PVE 9)
www/manager6/dc/BackupJobDetail.js | 48 ++++++++++++++++++++----------
1 file changed, 32 insertions(+), 16 deletions(-)
diff --git a/www/manager6/dc/BackupJobDetail.js b/www/manager6/dc/BackupJobDetail.js
index 58cb7bef..464bb558 100644
--- a/www/manager6/dc/BackupJobDetail.js
+++ b/www/manager6/dc/BackupJobDetail.js
@@ -165,6 +165,7 @@ Ext.define('PVE.dc.BackupInfo', {
viewModel: {
data: {
retentionType: 'none',
+ hideRecipients: true,
},
formulas: {
hasRetention: (get) => get('retentionType') !== 'none',
@@ -206,28 +207,37 @@ Ext.define('PVE.dc.BackupInfo', {
column2: [
{
xtype: 'displayfield',
- name: 'notification-policy',
+ name: 'notification-mode',
fieldLabel: gettext('Notification'),
renderer: function (value) {
+ value = value ?? 'auto';
let record = this.up('pveBackupInfo')?.record;
+ let mailto = record?.mailto;
+ let mailnotification = record?.mailnotification ?? 'always';
- // Fall back to old value, in case this option is not migrated yet.
- let policy = value || record?.mailnotification || 'always';
-
- let when = gettext('Always');
- if (policy === 'failure') {
- when = gettext('On failure only');
- } else if (policy === 'never') {
- when = gettext('Never');
+ if ((value === 'auto' && mailto === undefined) || (value === 'notification-system')) {
+ return gettext('Use global notification settings');
+ } else if (mailnotification === 'always') {
+ return gettext('Always send email');
+ } else {
+ return gettext('Send email on failure');
+ }
+ },
+ },
+ {
+ xtype: 'displayfield',
+ name: 'mailto',
+ fieldLabel: gettext('Recipients'),
+ hidden: true,
+ bind: {
+ hidden: '{hideRecipients}',
+ },
+ renderer: function (value) {
+ if (!value) {
+ return gettext('No recipients configured');
}
- // Notification-target takes precedence
- let target =
- record?.['notification-target'] ||
- record?.mailto ||
- gettext('No target configured');
-
- return `${when} (${target})`;
+ return value;
},
},
{
@@ -382,6 +392,12 @@ Ext.define('PVE.dc.BackupInfo', {
vm.set('retentionType', 'none');
}
+ let notificationMode = values['notification-mode'] ?? 'auto';
+ let mailto = values.mailto;
+
+ let hideRecipients = (notificationMode === 'auto' && mailto === undefined) || (notificationMode === 'notification-system');
+ vm.set('hideRecipients', hideRecipients);
+
// selection Mode depends on the presence/absence of several keys
let selModeField = me.query('[isFormField][name=selMode]')[0];
let selMode = 'none';
--
2.39.5
More information about the pve-devel
mailing list