Ext.define('PBS.WebauthnConfigView', { extend: 'Proxmox.grid.ObjectGrid', alias: ['widget.pbsWebauthnConfigView'], url: "/api2/json/config/access/tfa/webauthn", cwidth1: 150, interval: 1000, rows: { rp: { header: gettext('Relying Party'), required: true, defaultValue: gettext('Not configured'), }, origin: { header: gettext('Origin'), required: true, defaultValue: gettext('Not configured'), }, id: { header: 'ID', required: true, defaultValue: gettext('Not configured'), }, }, tbar: [ { text: gettext("Edit"), handler: 'runEditor', }, ], controller: { xclass: 'Ext.app.ViewController', runEditor: function() { let win = Ext.create('PBS.WebauthnConfigEdit'); win.show(); }, startStore: function() { this.getView().getStore().rstore.startUpdate(); }, stopStore: function() { this.getView().getStore().rstore.stopUpdate(); }, }, listeners: { itemdblclick: 'runEditor', activate: 'startStore', deactivate: 'stopStore', destroy: 'stopStore', }, }); Ext.define('PBS.WebauthnConfigEdit', { extend: 'Proxmox.window.Edit', alias: ['widget.pbsWebauthnConfigEdit'], subject: gettext('Webauthn'), url: "/api2/extjs/config/access/tfa/webauthn", autoLoad: true, fieldDefaults: { labelWidth: 120, }, items: [ { xtype: 'textfield', fieldLabel: gettext('Relying Party'), name: 'rp', allowBlank: false, }, { xtype: 'textfield', fieldLabel: gettext('Origin'), name: 'origin', allowBlank: false, }, { xtype: 'textfield', fieldLabel: 'ID', name: 'id', allowBlank: false, }, { xtype: 'container', layout: 'hbox', items: [ { xtype: 'box', flex: 1, }, { xtype: 'button', text: gettext('Auto-fill'), iconCls: 'fa fa-fw fa-pencil-square-o', handler: function(button, ev) { let panel = this.up('panel'); panel.down('field[name=rp]').setValue(document.location.hostname); panel.down('field[name=origin]').setValue(document.location.origin); panel.down('field[name=id]').setValue(document.location.hostname); }, }, ], }, ], });