From 61db0851d66d4587947ac9201662c6e416b11f74 Mon Sep 17 00:00:00 2001 From: Dylan Whyte Date: Tue, 3 Nov 2020 09:30:54 +0100 Subject: [PATCH] gui: Add button for changing backup group owner Extension of fix #2847 Adds an action button to the datastore content view, to change the owner of a backup. Signed-off-by: Dylan Whyte --- www/BackupGroupChangeOwner.js | 46 +++++++++++++++++++++++++++++++++++ www/Makefile | 1 + www/datastore/Content.js | 26 +++++++++++++++++++- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 www/BackupGroupChangeOwner.js diff --git a/www/BackupGroupChangeOwner.js b/www/BackupGroupChangeOwner.js new file mode 100644 index 00000000..0a7a7563 --- /dev/null +++ b/www/BackupGroupChangeOwner.js @@ -0,0 +1,46 @@ +Ext.define('PBS.BackupGroupChangeOwner', { + extend: 'Proxmox.window.Edit', + alias: 'widget.pbsBackupGroupChangeOwner', + + submitText: gettext("Change Owner"), + subject: gettext("Change Owner"), + + initComponent: function() { + let me = this; + + if (!me.datastore) { + throw "no datastore specified"; + } + if (!me.backup_type) { + throw "no backup_type specified"; + } + if (!me.backup_id) { + throw "no backup_id specified"; + } + + Ext.apply(me, { + url: `/api2/extjs/admin/datastore/${me.datastore}/change-owner`, + method: 'POST', + items: { + xtype: 'inputpanel', + onGetValues: function(values) { + values["backup-type"] = me.backup_type; + values["backup-id"] = me.backup_id; + return values; + }, + + column1: [ + { + xtype: 'textfield', + name: 'new-owner', + fieldLabel: gettext('Userid'), + minLength: 8, + allowBlank: false, + }, + ], + }, + }); + + me.callParent(); + }, +}); diff --git a/www/Makefile b/www/Makefile index b92568ac..9fd014b4 100644 --- a/www/Makefile +++ b/www/Makefile @@ -52,6 +52,7 @@ JSSRC= \ datastore/Prune.js \ datastore/Content.js \ datastore/Panel.js \ + BackupGroupChangeOwner.js \ ServerStatus.js \ ServerAdministration.js \ Dashboard.js \ diff --git a/www/datastore/Content.js b/www/datastore/Content.js index db912a83..7c6395c2 100644 --- a/www/datastore/Content.js +++ b/www/datastore/Content.js @@ -268,6 +268,24 @@ Ext.define('PBS.DataStoreContent', { } }, + onChangeOwner: function(view, rI, cI, item, e, rec) { + view = this.getView(); + + if (!rec || !rec.data || rec.parentNode.id !== 'root' || !view.datastore) { + return; + } + + let data = rec.data; + + let win = Ext.create('PBS.BackupGroupChangeOwner', { + datastore: view.datastore, + backup_type: data.backup_type, + backup_id: data.backup_id, + autoShow: true, + }); + win.on('destroy', this.reload, this); + }, + onPrune: function(view, rI, cI, item, e, rec) { view = this.getView(); @@ -582,7 +600,13 @@ Ext.define('PBS.DataStoreContent', { getTip: (v, m, rec) => Ext.String.format(gettext("Verify '{0}'"), v), getClass: (v, m, rec) => rec.data.leaf ? 'pmx-hidden' : 'pve-icon-verify-lettering', isDisabled: (v, r, c, i, rec) => !!rec.data.leaf, - }, + }, + { + handler: 'onChangeOwner', + getClass: (v, m, rec) => rec.parentNode.id ==='root' ? 'fa fa-user' : 'pmx-hidden', + getTip: (v, m, rec) => Ext.String.format(gettext("Change owner of '{0}'"), v), + isDisabled: (v, r, c, i, rec) => rec.parentNode.id !=='root', + }, { handler: 'onPrune', getTip: (v, m, rec) => Ext.String.format(gettext("Prune '{0}'"), v),