From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 7073E1FF189 for <inbox@lore.proxmox.com>; Fri, 4 Apr 2025 14:22:06 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 758241E155; Fri, 4 Apr 2025 14:21:54 +0200 (CEST) Message-ID: <dbb6b10e-89b0-465a-b51f-582ef72e9ec2@proxmox.com> Date: Fri, 4 Apr 2025 14:21:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>, Markus Frank <m.frank@proxmox.com> References: <20250403103442.136958-1-m.frank@proxmox.com> <20250403103442.136958-10-m.frank@proxmox.com> Content-Language: en-US From: Daniel Kral <d.kral@proxmox.com> In-Reply-To: <20250403103442.136958-10-m.frank@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.039 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL_4 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH manager v15 09/12] ui: add edit window for dir mappings X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> One comment inline. On 4/3/25 12:34, Markus Frank wrote: > Signed-off-by: Markus Frank <m.frank@proxmox.com> > --- > v15: > * removed announce-submounts > > www/manager6/Makefile | 1 + > www/manager6/window/DirMapEdit.js | 202 ++++++++++++++++++++++++++++++ > 2 files changed, 203 insertions(+) > create mode 100644 www/manager6/window/DirMapEdit.js > > diff --git a/www/manager6/Makefile b/www/manager6/Makefile > index c94a5cdf..4b8677e3 100644 > --- a/www/manager6/Makefile > +++ b/www/manager6/Makefile > @@ -138,6 +138,7 @@ JSSRC= \ > window/TreeSettingsEdit.js \ > window/PCIMapEdit.js \ > window/USBMapEdit.js \ > + window/DirMapEdit.js \ > window/GuestImport.js \ > ha/Fencing.js \ > ha/GroupEdit.js \ > diff --git a/www/manager6/window/DirMapEdit.js b/www/manager6/window/DirMapEdit.js > new file mode 100644 > index 00000000..b635f34d > --- /dev/null > +++ b/www/manager6/window/DirMapEdit.js > @@ -0,0 +1,202 @@ > +Ext.define('PVE.window.DirMapEditWindow', { > + extend: 'Proxmox.window.Edit', > + > + mixins: ['Proxmox.Mixin.CBind'], > + > + cbindData: function(initialConfig) { > + let me = this; > + me.isCreate = !me.name; > + me.method = me.isCreate ? 'POST' : 'PUT'; > + me.hideMapping = !!me.entryOnly; > + me.hideComment = me.name && !me.entryOnly; > + me.hideNodeSelector = me.nodename || me.entryOnly; > + me.hideNode = !me.nodename || !me.hideNodeSelector; > + return { > + name: me.name, > + nodename: me.nodename, > + }; > + }, > + > + submitUrl: function(_url, data) { > + let me = this; > + let name = me.isCreate ? '' : me.name; > + return `/cluster/mapping/dir/${name}`; > + }, > + > + title: gettext('Add Dir mapping'), > + > + onlineHelp: 'resource_mapping', > + > + method: 'POST', > + > + controller: { > + xclass: 'Ext.app.ViewController', > + > + onGetValues: function(values) { > + let me = this; > + let view = me.getView(); > + values.node ??= view.nodename; > + > + let name = values.name; > + let description = values.description; > + let deletes = values.delete; > + > + delete values.description; > + delete values.name; > + delete values.delete; > + > + let map = []; > + if (me.originalMap) { > + map = PVE.Parser.filterPropertyStringList(me.originalMap, (e) => e.node !== values.node); > + } > + if (values.path) { > + // TODO: Remove this when property string supports quotation of properties > + if (!/^\/[^;,=()]+/.test(values.path)) { > + let errMsg = 'these symbols are currently not allowed in path: ;,=()'; This error message duplicates the one in the verify_path in the backend and should also be capitalized at the start. Couldn't we verify this in the API handler and return the error from there to not duplicate this code (esp. if it gets out of sync)? On another note, this should also tell the user that the path must be a absolute path (which it does in the regex but doesn't say so in the error message). > + Ext.Msg.alert(gettext('Error'), errMsg); > + throw errMsg; > + } > + map.push(PVE.Parser.printPropertyString(values)); > + } > + values = { map }; > + > + if (description) { > + values.description = description; > + } > + if (deletes && !view.isCreate) { > + values.delete = deletes; > + } > + if (view.isCreate) { > + values.id = name; > + } > + > + return values; > + }, > + > + onSetValues: function(values) { > + let me = this; > + let view = me.getView(); > + me.originalMap = [...values.map]; > + let configuredNodes = []; > + PVE.Parser.filterPropertyStringList(values.map, (e) => { > + configuredNodes.push(e.node); > + if (e.node === view.nodename) { > + values = e; > + } > + return false; > + }); > + > + me.lookup('nodeselector').disallowedNodes = configuredNodes; > + > + return values; > + }, > + > + init: function(view) { > + let me = this; > + > + if (!view.nodename) { > + //throw "no nodename given"; > + } > + }, > + }, > + > + items: [ > + { > + xtype: 'inputpanel', > + onGetValues: function(values) { > + return this.up('window').getController().onGetValues(values); > + }, > + > + onSetValues: function(values) { > + return this.up('window').getController().onSetValues(values); > + }, > + > + columnT: [ > + { > + xtype: 'displayfield', > + reference: 'directory-hint', > + columnWidth: 1, > + value: 'Make sure the directory exists.', > + cbind: { > + disabled: '{hideMapping}', > + hidden: '{hideMapping}', > + }, > + userCls: 'pmx-hint', > + }, > + ], > + > + column1: [ > + { > + xtype: 'pmxDisplayEditField', > + fieldLabel: gettext('Name'), > + cbind: { > + editable: '{!name}', > + value: '{name}', > + submitValue: '{isCreate}', > + }, > + name: 'name', > + allowBlank: false, > + }, > + { > + xtype: 'pveNodeSelector', > + reference: 'nodeselector', > + fieldLabel: gettext('Node'), > + name: 'node', > + cbind: { > + disabled: '{hideNodeSelector}', > + hidden: '{hideNodeSelector}', > + }, > + allowBlank: false, > + }, > + ], > + > + column2: [ > + { > + xtype: 'fieldcontainer', > + defaultType: 'radiofield', > + layout: 'fit', > + cbind: { > + disabled: '{hideMapping}', > + hidden: '{hideMapping}', > + }, > + items: [ > + { > + xtype: 'textfield', > + name: 'path', > + reference: 'path', > + value: '', > + emptyText: gettext('/some/path'), > + cbind: { > + nodename: '{nodename}', > + disabled: '{hideMapping}', > + }, > + allowBlank: false, > + fieldLabel: gettext('Path'), > + }, > + ], > + }, > + ], > + > + columnB: [ > + { > + xtype: 'fieldcontainer', > + defaultType: 'radiofield', > + layout: 'fit', > + cbind: { > + disabled: '{hideComment}', > + hidden: '{hideComment}', > + }, > + items: [ > + { > + xtype: 'proxmoxtextfield', > + fieldLabel: gettext('Comment'), > + submitValue: true, > + name: 'description', > + deleteEmpty: true, > + }, > + ], > + }, > + ], > + }, > + ], > +}); _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel