width: 550,
url: '/cluster/acme/plugins/',
- subject: gettext('ACME DNS Plugin'),
+ subject: 'ACME DNS Plugin',
items: [
{
// 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());
}
}
// create custom fields according to schema
let gotSchemaField = false;
- for (const [name, definition] of Object.entries(schema.fields).sort((a, b) => a[0].localeCompare(b[0]))) {
+ 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':
break;
}
+ let label = name;
+ if (typeof definition.name === "string") {
+ label = definition.name;
+ }
+
let field = Ext.create({
xtype,
name: `custom_${name}`,
- fieldLabel: name,
+ fieldLabel: label,
width: '100%',
labelWidth: 150,
labelSeparator: '=',
}
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());
labelWidth: 150,
name: 'data',
},
+ {
+ xtype: 'displayfield',
+ fieldLabel: gettext('Hint'),
+ labelWidth: 150,
+ name: 'hint',
+ hidden: true,
+ },
],
},
],