Remove pveACMEPluginView and use the ACMEPluginView from the
proxmox-widget-toolkit instead. This leaves pveACMEPluginEditor unused,
so remove it as well.

Signed-off-by: Filip Schauer <[email protected]>
---
 www/manager6/dc/ACMEClusterView.js | 100 +------------
 www/manager6/dc/ACMEPluginEdit.js  | 223 -----------------------------
 2 files changed, 2 insertions(+), 321 deletions(-)
 delete mode 100644 www/manager6/dc/ACMEPluginEdit.js

diff --git a/www/manager6/dc/ACMEClusterView.js 
b/www/manager6/dc/ACMEClusterView.js
index d02aeef0..3d7adbf8 100644
--- a/www/manager6/dc/ACMEClusterView.js
+++ b/www/manager6/dc/ACMEClusterView.js
@@ -119,103 +119,6 @@ Ext.define('PVE.dc.ACMEAccountView', {
     },
 });
 
-Ext.define('PVE.dc.ACMEPluginView', {
-    extend: 'Ext.grid.Panel',
-    alias: 'widget.pveACMEPluginView',
-
-    title: gettext('Challenge Plugins'),
-
-    controller: {
-       xclass: 'Ext.app.ViewController',
-
-       addPlugin: function() {
-           let me = this;
-           Ext.create('PVE.dc.ACMEPluginEditor', {
-               isCreate: true,
-               apiCallDone: function() {
-                   me.reload();
-               },
-           }).show();
-       },
-
-       editPlugin: function() {
-           let me = this;
-           let view = me.getView();
-           let selection = view.getSelection();
-           if (selection.length < 1) return;
-           let plugin = selection[0].data.plugin;
-           Ext.create('PVE.dc.ACMEPluginEditor', {
-               url: `/cluster/acme/plugins/${plugin}`,
-               apiCallDone: function() {
-                   me.reload();
-               },
-           }).show();
-       },
-
-       reload: function() {
-           let me = this;
-           let view = me.getView();
-           view.getStore().rstore.load();
-       },
-    },
-
-    minHeight: 150,
-    emptyText: gettext('No Plugins configured'),
-
-    columns: [
-       {
-           dataIndex: 'plugin',
-           text: gettext('Plugin'),
-           renderer: Ext.String.htmlEncode,
-           flex: 1,
-       },
-       {
-           dataIndex: 'api',
-           text: 'API',
-           renderer: Ext.String.htmlEncode,
-           flex: 1,
-       },
-    ],
-
-    tbar: [
-       {
-           xtype: 'proxmoxButton',
-           text: gettext('Add'),
-           handler: 'addPlugin',
-           selModel: false,
-       },
-       {
-           xtype: 'proxmoxButton',
-           text: gettext('Edit'),
-           handler: 'editPlugin',
-           disabled: true,
-       },
-       {
-           xtype: 'proxmoxStdRemoveButton',
-           baseurl: '/cluster/acme/plugins',
-           callback: 'reload',
-       },
-    ],
-
-    listeners: {
-       itemdblclick: 'editPlugin',
-    },
-
-    store: {
-       type: 'diff',
-       autoDestroy: true,
-       autoDestroyRstore: true,
-       rstore: {
-           type: 'update',
-           storeid: 'pve-acme-plugins',
-           model: 'pve-acme-plugins',
-           autoStart: true,
-           filters: item => !!item.data.api,
-       },
-       sorters: 'plugin',
-    },
-});
-
 Ext.define('PVE.dc.ACMEClusterView', {
     extend: 'Ext.panel.Panel',
     alias: 'widget.pveACMEClusterView',
@@ -231,7 +134,8 @@ Ext.define('PVE.dc.ACMEClusterView', {
        {
            region: 'center',
            border: false,
-           xtype: 'pveACMEPluginView',
+           xtype: 'pmxACMEPluginView',
+           acmeUrl: '/config/acme',
        },
     ],
 });
diff --git a/www/manager6/dc/ACMEPluginEdit.js 
b/www/manager6/dc/ACMEPluginEdit.js
deleted file mode 100644
index 570b4dd2..00000000
--- a/www/manager6/dc/ACMEPluginEdit.js
+++ /dev/null
@@ -1,223 +0,0 @@
-Ext.define('PVE.dc.ACMEPluginEditor', {
-    extend: 'Proxmox.window.Edit',
-    xtype: 'pveACMEPluginEditor',
-    mixins: ['Proxmox.Mixin.CBind'],
-
-    onlineHelp: 'sysadmin_certs_acme_plugins',
-
-    isAdd: true,
-    isCreate: false,
-
-    width: 550,
-    url: '/cluster/acme/plugins/',
-
-    subject: 'ACME DNS Plugin',
-
-    items: [
-       {
-           xtype: 'inputpanel',
-           // we dynamically create fields from the given schema
-           // things we have to do here:
-           // * save which fields we created to remove them again
-           // * split the data from the generic 'data' field into the boxes
-           // * on deletion collect those values again
-           // * save the original values of the data field
-           createdFields: {},
-           createdInitially: false,
-           originalValues: {},
-           createSchemaFields: function(schema) {
-               let me = this;
-               // we know where to add because we define it right below
-               let container = me.down('container');
-               let datafield = me.down('field[name=data]');
-               let hintfield = me.down('field[name=hint]');
-               if (!me.createdInitially) {
-                   [me.originalValues] = 
PVE.Parser.parseACMEPluginData(datafield.getValue());
-               }
-
-               // collect values from custom fields and add it to 'data'',
-               // then remove the custom fields
-               let data = [];
-               for (const [name, field] of Object.entries(me.createdFields)) {
-                   let value = field.getValue();
-                   if (value !== undefined && value !== null && value !== '') {
-                       data.push(`${name}=${value}`);
-                   }
-                   container.remove(field);
-               }
-               let datavalue = datafield.getValue();
-               if (datavalue !== undefined && datavalue !== null && datavalue 
!== '') {
-                   data.push(datavalue);
-               }
-               datafield.setValue(data.join('\n'));
-
-               me.createdFields = {};
-
-               if (typeof schema.fields !== 'object') {
-                   schema.fields = {};
-               }
-               // create custom fields according to schema
-               let gotSchemaField = false;
-               let cmp = (a, b) => a[0].localeCompare(b[0]);
-               for (const [name, definition] of 
Object.entries(schema.fields).sort(cmp)) {
-                   let xtype;
-                   switch (definition.type) {
-                       case 'string':
-                           xtype = 'proxmoxtextfield';
-                           break;
-                       case 'integer':
-                           xtype = 'proxmoxintegerfield';
-                           break;
-                       case 'number':
-                           xtype = 'numberfield';
-                           break;
-                       default:
-                           console.warn(`unknown type '${definition.type}'`);
-                           xtype = 'proxmoxtextfield';
-                           break;
-                   }
-
-                   let label = name;
-                   if (typeof definition.name === "string") {
-                       label = definition.name;
-                   }
-
-                   let field = Ext.create({
-                       xtype,
-                       name: `custom_${name}`,
-                       fieldLabel: label,
-                       width: '100%',
-                       labelWidth: 150,
-                       labelSeparator: '=',
-                       emptyText: definition.default || '',
-                       autoEl: definition.description ? {
-                           tag: 'div',
-                           'data-qtip': definition.description,
-                       } : undefined,
-                   });
-
-                   me.createdFields[name] = field;
-                   container.add(field);
-                   gotSchemaField = true;
-               }
-               datafield.setHidden(gotSchemaField); // prefer schema-fields
-
-               if (schema.description) {
-                   hintfield.setValue(schema.description);
-                   hintfield.setHidden(false);
-               } else {
-                   hintfield.setValue('');
-                   hintfield.setHidden(true);
-               }
-
-               // parse data from field and set it to the custom ones
-               let extradata = [];
-               [data, extradata] = 
PVE.Parser.parseACMEPluginData(datafield.getValue());
-               for (const [key, value] of Object.entries(data)) {
-                   if (me.createdFields[key]) {
-                       me.createdFields[key].setValue(value);
-                       me.createdFields[key].originalValue = 
me.originalValues[key];
-                   } else {
-                       extradata.push(`${key}=${value}`);
-                   }
-               }
-               datafield.setValue(extradata.join('\n'));
-               if (!me.createdInitially) {
-                   datafield.resetOriginalValue();
-                   me.createdInitially = true; // save that we initally set 
that
-               }
-           },
-           onGetValues: function(values) {
-               let me = this;
-               let win = me.up('pveACMEPluginEditor');
-               if (win.isCreate) {
-                   values.id = values.plugin;
-                   values.type = 'dns'; // the only one for now
-               }
-               delete values.plugin;
-
-               PVE.Utils.delete_if_default(values, 'validation-delay', '30', 
win.isCreate);
-
-               let data = '';
-               for (const [name, field] of Object.entries(me.createdFields)) {
-                   let value = field.getValue();
-                   if (value !== null && value !== undefined && value !== '') {
-                       data += `${name}=${value}\n`;
-                   }
-                   delete values[`custom_${name}`];
-               }
-               values.data = Ext.util.Base64.encode(data + values.data);
-               return values;
-           },
-           items: [
-               {
-                   xtype: 'pmxDisplayEditField',
-                   cbind: {
-                       editable: (get) => get('isCreate'),
-                       submitValue: (get) => get('isCreate'),
-                   },
-                   editConfig: {
-                       flex: 1,
-                       xtype: 'proxmoxtextfield',
-                       allowBlank: false,
-                   },
-                   name: 'plugin',
-                   labelWidth: 150,
-                   fieldLabel: gettext('Plugin ID'),
-               },
-               {
-                   xtype: 'proxmoxintegerfield',
-                   name: 'validation-delay',
-                   labelWidth: 150,
-                   fieldLabel: gettext('Validation Delay'),
-                   emptyText: 30,
-                   cbind: {
-                       deleteEmpty: '{!isCreate}',
-                   },
-                   minValue: 0,
-                   maxValue: 48*60*60,
-               },
-               {
-                   xtype: 'pveACMEApiSelector',
-                   name: 'api',
-                   labelWidth: 150,
-                   listeners: {
-                       change: function(selector) {
-                           let schema = selector.getSchema();
-                           
selector.up('inputpanel').createSchemaFields(schema);
-                       },
-                   },
-               },
-               {
-                   xtype: 'textarea',
-                   fieldLabel: gettext('API Data'),
-                   labelWidth: 150,
-                   name: 'data',
-               },
-               {
-                   xtype: 'displayfield',
-                   fieldLabel: gettext('Hint'),
-                   labelWidth: 150,
-                   name: 'hint',
-                   hidden: true,
-               },
-           ],
-       },
-    ],
-
-    initComponent: function() {
-       var me = this;
-
-       me.callParent();
-
-       if (!me.isCreate) {
-           me.load({
-               success: function(response, opts) {
-                   me.setValues(response.result.data);
-               },
-           });
-       } else {
-           me.method = 'POST';
-       }
-    },
-});
-- 
2.39.2



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to