[pmg-devel] [PATCH pmg-gui v2 2/2] refactor js/MailProxyTLSDomains.js
Stoiko Ivanov
s.ivanov at proxmox.com
Fri Sep 28 10:50:25 CEST 2018
make TLS policy selection a widget of its own, and improve splitting
between logic and presentation
Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
---
js/MailProxyTLSDomains.js | 178 ++++++++++++++++++++++++----------------------
1 file changed, 91 insertions(+), 87 deletions(-)
diff --git a/js/MailProxyTLSDomains.js b/js/MailProxyTLSDomains.js
index 9aca1e8..d1e1be0 100644
--- a/js/MailProxyTLSDomains.js
+++ b/js/MailProxyTLSDomains.js
@@ -2,28 +2,96 @@
Ext.define('pmg-tls-policy', {
extend: 'Ext.data.Model',
fields: [ 'domain', 'policy' ],
- idProperty: 'domain'
+ idProperty: 'domain',
+ proxy: {
+ type: 'proxmox',
+ url: '/api2/json/config/tlspolicy'
+ },
+ sorters: {
+ property: 'domain',
+ order: 'DESC'
+ }
+});
+
+Ext.define('PMG.TLSDomainEdit', {
+ extend: 'Proxmox.window.Edit',
+ xtype: 'pmgTLSDomainEdit',
+
+ subject: gettext('TLS Policy'),
+ initComponent : function() {
+ var me = this;
+
+ var isCreate = ! Ext.isDefined(me.domain);
+
+ var url = '/api2/extjs/config/tlspolicy' + (isCreate ? '' : '/' + me.domain);
+ var method = isCreate ? 'POST' : 'PUT';
+ var text = isCreate ? 'Create' : 'Edit';
+
+ var items = [
+ {
+ xtype: isCreate ? 'proxmoxtextfield' : 'displayfield',
+ name: 'domain',
+ fieldLabel: gettext('Domain')
+ },
+ {
+ xtype: 'proxmoxKVComboBox',
+ name: 'policy',
+ fieldLabel: gettext('Policy'),
+ deleteEmpty: false,
+ comboItems: [
+ [ 'none', 'none' ],
+ [ 'may', 'may' ],
+ [ 'encrypt', 'encrypt' ],
+ [ 'dane', 'dane' ],
+ [ 'dane-only', 'dane-only' ],
+ [ 'fingerprint', 'fingerprint' ],
+ [ 'verify', 'verify' ],
+ [ 'secure', 'secure' ]
+ ],
+ allowBlank: true,
+ value: 'encrypt'
+ }
+ ];
+
+ Ext.apply(me, {
+ url: url,
+ method: method,
+ items: items,
+ text: text
+ });
+
+ me.callParent();
+ }
});
Ext.define('PMG.MailProxyTLSDomains', {
extend: 'Ext.grid.GridPanel',
alias: ['widget.pmgMailProxyTLSDomains'],
+ viewConfig: {
+ trackOver: false
+ },
+ columns: [
+ {
+ header: gettext('Domain'),
+ width: 200,
+ sortable: true,
+ dataIndex: 'domain'
+ },
+ {
+ header: gettext('Policy'),
+ sortable: false,
+ dataIndex: 'policy',
+ flex: 1
+ }
+ ],
+
initComponent : function() {
var me = this;
- var baseurl = '/config/tlspolicy';
var rstore = Ext.create('Proxmox.data.UpdateStore', {
model: 'pmg-tls-policy',
- storeid: 'pmg-mailproxy-tls-store-' + (++Ext.idSeed),
- proxy: {
- type: 'proxmox',
- url: '/api2/json' + baseurl
- },
- sorters: {
- property: 'domain',
- order: 'DESC'
- }
+ storeid: 'pmg-mailproxy-tls-store-' + (++Ext.idSeed)
});
var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore});
@@ -34,53 +102,15 @@ Ext.define('PMG.MailProxyTLSDomains', {
me.selModel = Ext.create('Ext.selection.RowModel', {});
- var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
- selModel: me.selModel,
- baseurl: baseurl,
- callback: reload,
- waitMsgTarget: me
- });
-
- var policy_selector_properties = {
- xtype: 'proxmoxKVComboBox',
- name: 'policy',
- fieldLabel: 'Policy',
- deleteEmpty: false,
- comboItems: [
- [ 'none', 'none' ],
- [ 'may', 'may' ],
- [ 'encrypt', 'encrypt' ],
- [ 'dane', 'dane' ],
- [ 'dane-only', 'dane-only' ],
- [ 'fingerprint', 'fingerprint' ],
- [ 'verify', 'verify' ],
- [ 'secure', 'secure' ]
- ],
- allowBlank: true,
- value: 'encrypt'
- };
-
var run_editor = function() {
var rec = me.selModel.getSelection()[0];
if (!rec) {
return;
}
- var config = {
- url: '/api2/extjs' + baseurl + '/' + rec.data.domain,
- method: 'PUT',
- subject: gettext('TLS Policy'),
- items: [
- {
- xtype: 'displayfield',
- name: 'domain',
- fieldLabel: gettext('Domain')
- },
- policy_selector_properties
- ]
- };
-
- var win = Ext.createWidget('proxmoxWindowEdit', config);
+ var win = Ext.createWidget('pmgTLSDomainEdit', {
+ domain: rec.data.domain
+ });
win.load();
win.on('destroy', reload);
@@ -90,35 +120,26 @@ Ext.define('PMG.MailProxyTLSDomains', {
var tbar = [
{
xtype: 'proxmoxButton',
- text: gettext('Edit'),
disabled: true,
- selModel: me.selModel,
+ text: gettext('Edit'),
handler: run_editor
},
{
text: gettext('Create'),
handler: function() {
- var config = {
- url: '/api2/extjs' + baseurl,
- method: 'POST',
- subject: gettext('TLS Policy'),
- isCreate: true,
- items: [
- {
- xtype: 'proxmoxtextfield',
- name: 'domain',
- fieldLabel: gettext('Domain')
- }, policy_selector_properties
- ]
- };
-
- var win = Ext.createWidget('proxmoxWindowEdit', config);
+ var win = Ext.createWidget('pmgTLSDomainEdit');
+ win.load();
win.on('destroy', reload);
win.show();
}
},
- remove_btn
+ {
+ xtype: 'proxmoxStdRemoveButton',
+ baseurl: '/config/tlspolicy',
+ callback: reload,
+ waitMsgTarget: me
+ }
];
Proxmox.Utils.monStoreErrors(me, store, true);
@@ -127,23 +148,6 @@ Ext.define('PMG.MailProxyTLSDomains', {
store: store,
tbar: tbar,
run_editor: run_editor,
- viewConfig: {
- trackOver: false
- },
- columns: [
- {
- header: gettext('Domain'),
- width: 200,
- sortable: true,
- dataIndex: 'domain'
- },
- {
- header: gettext('Policy'),
- sortable: false,
- dataIndex: 'policy',
- flex: 1
- }
- ],
listeners: {
itemdblclick: run_editor,
activate: reload
--
2.11.0
More information about the pmg-devel
mailing list