From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 1599362858 for ; Tue, 27 Oct 2020 11:56:31 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F373016EE3 for ; Tue, 27 Oct 2020 11:56:00 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 5E62016EDA for ; Tue, 27 Oct 2020 11:56:00 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 2A27D45F4B for ; Tue, 27 Oct 2020 11:56:00 +0100 (CET) From: Dylan Whyte To: pbs-devel@lists.proxmox.com Date: Tue, 27 Oct 2020 11:55:46 +0100 Message-Id: <20201027105546.759-1-d.whyte@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.021 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [parentnode.id] Subject: [pbs-devel] [PATCH proxmox-backup] gui: Add button for changing backup group owner X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Oct 2020 10:56:31 -0000 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 | 88 +++++++++++++++++++++++++++++++++++ www/DataStoreContent.js | 26 ++++++++++- www/Makefile | 1 + 3 files changed, 114 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..5db7d115 --- /dev/null +++ b/www/BackupGroupChangeOwner.js @@ -0,0 +1,88 @@ +Ext.define('PBS.ChangeOwnerInputPanel', { + extend: 'Proxmox.panel.InputPanel', + alias: 'widget.pbsChangeOwnerInputPanel', + mixins: ['Proxmox.Mixin.CBind'], + + onGetValues: function(values) { + var me = this; + + values["backup-type"] = me.backup_type; + values["backup-id"] = me.backup_id; + return values; + }, + + controller: { + xclass: 'Ext.app.ViewController', + + init: function(view) { + if (!view.url) { + throw "no url specified"; + } + if (!view.backup_type) { + throw "no backup_type specified"; + } + if (!view.backup_id) { + throw "no backup_id specified"; + } + + this.reload(); + }, + + reload: function() { + var view = this.getView(); + + let params = view.getValues(); + + Proxmox.Utils.API2Request({ + url: view.url, + method: "POST", + params: params, + }); + }, + }, + + column1: [ + { + xtype: 'textfield', + name: 'new-owner', + fieldLabel: gettext('Userid'), + minLength: 8, + allowBlank: false, + }, + ], + +}); + +Ext.define('PBS.BackupGroupChangeOwner', { + extend: 'Proxmox.window.Edit', + + method: 'POST', + submitText: "Change Owner", + + initComponent: function() { + var 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", + title: "Change Owner", + items: [{ + xtype: "pbsChangeOwnerInputPanel", + url: '/api2/extjs/admin/datastore/' + me.datastore + "/change-owner", + backup_type: me.backup_type, + backup_id: me.backup_id, + }], + }); + + me.callParent(); + }, +}); diff --git a/www/DataStoreContent.js b/www/DataStoreContent.js index 28dfd743..594b1540 100644 --- a/www/DataStoreContent.js +++ b/www/DataStoreContent.js @@ -267,6 +267,24 @@ Ext.define('PBS.DataStoreContent', { } }, + onChangeOwner: function(view, rI, cI, item, e, rec) { + view = this.getView(); + + if (!(rec && rec.data)) return; + let data = rec.data; + if (rec.parentNode.id !== 'root') return; + + if (!view.datastore) return; + + let win = Ext.create('PBS.BackupGroupChangeOwner', { + datastore: view.datastore, + backup_type: data.backup_type, + backup_id: data.backup_id, + }); + win.on('destroy', this.reload, this); + win.show(); + }, + onPrune: function(view, rI, cI, item, e, rec) { view = this.getView(); @@ -505,7 +523,13 @@ Ext.define('PBS.DataStoreContent', { tooltip: gettext('Verify'), getClass: (v, m, rec) => rec.data.leaf ? 'pmx-hidden' : 'fa fa-search', isDisabled: (v, r, c, i, rec) => !!rec.data.leaf, - }, + }, + { + handler: 'onChangeOwner', + tooltip: gettext('Change Owner'), + getClass: (v, m, rec) => rec.parentNode.id ==='root' ? 'fa fa-user' : 'pmx-hidden', + isDisabled: (v, r, c, i, rec) => rec.parentNode.id !=='root', + }, { handler: 'onPrune', tooltip: gettext('Prune'), diff --git a/www/Makefile b/www/Makefile index e04af930..b84fdf5d 100644 --- a/www/Makefile +++ b/www/Makefile @@ -40,6 +40,7 @@ JSSRC= \ VersionInfo.js \ SystemConfiguration.js \ Subscription.js \ + BackupGroupChangeOwner.js \ DataStorePrune.js \ DataStoreStatistic.js \ DataStoreContent.js \ -- 2.20.1