]> git.proxmox.com Git - pmg-gui.git/blob - js/RelayDomains.js
mail proxy: networks: consitent add/edit/remove button & modernization
[pmg-gui.git] / js / RelayDomains.js
1 Ext.define('pmg-domains', {
2 extend: 'Ext.data.Model',
3 fields: ['domain', 'comment'],
4 idProperty: 'domain',
5 });
6
7 Ext.define('PMG.RelayDomains', {
8 extend: 'Ext.grid.GridPanel',
9 alias: ['widget.pmgRelayDomains'],
10
11 baseurl: '/config/domains',
12 domain_desc: gettext('Relay Domain'),
13
14 onlineHelp: 'pmgconfig_mailproxy_relay_domains',
15
16 initComponent: function() {
17 var me = this;
18
19 var store = new Ext.data.Store({
20 model: 'pmg-domains',
21 sorters: {
22 property: 'domain',
23 direction: 'ASC',
24 },
25 proxy: {
26 type: 'proxmox',
27 url: '/api2/json' + me.baseurl,
28 },
29 });
30
31 var reload = function() {
32 store.load();
33 };
34
35 me.selModel = Ext.create('Ext.selection.RowModel', {});
36
37 var run_editor = function() {
38 var rec = me.selModel.getSelection()[0];
39 if (!rec) {
40 return;
41 }
42
43 var config = {
44 url: '/api2/extjs' + me.baseurl + '/' + rec.data.domain,
45 onlineHelp: me.onlineHelp,
46 method: 'PUT',
47 subject: me.domain_desc,
48 items: [
49 {
50 xtype: 'displayfield',
51 name: 'domain',
52 fieldLabel: me.domain_desc,
53 },
54 {
55 xtype: 'textfield',
56 name: 'comment',
57 fieldLabel: gettext("Comment"),
58 },
59 ],
60 };
61
62 var win = Ext.createWidget('proxmoxWindowEdit', config);
63
64 win.load();
65 win.on('destroy', reload);
66 win.show();
67 };
68
69 let tbar = [
70 {
71 text: gettext('Create'),
72 handler: () => Ext.createWidget('proxmoxWindowEdit', {
73 autoShow: true,
74 method: 'POST',
75 url: '/api2/extjs' + me.baseurl,
76 onlineHelp: me.onlineHelp,
77 isCreate: true,
78 subject: gettext("Relay Domain"),
79 items: [
80 {
81 xtype: 'proxmoxtextfield',
82 name: 'domain',
83 fieldLabel: me.domain_desc,
84 },
85 {
86 xtype: 'proxmoxtextfield',
87 name: 'comment',
88 fieldLabel: gettext("Comment"),
89 },
90 ],
91 listeners: {
92 destroy: () => reload(),
93 },
94 }),
95 },
96 '-',
97 {
98 xtype: 'proxmoxButton',
99 text: gettext('Edit'),
100 disabled: true,
101 selModel: me.selModel,
102 handler: run_editor,
103 },
104 {
105 xtype: 'proxmoxStdRemoveButton',
106 selModel: me.selModel,
107 baseurl: me.baseurl,
108 callback: reload,
109 waitMsgTarget: me,
110 },
111 '->',
112 {
113 xtype: 'pmgFilterField',
114 filteredFields: ['domain', 'comment'],
115 },
116 ];
117
118 Proxmox.Utils.monStoreErrors(me, store, true);
119
120 Ext.apply(me, {
121 store: store,
122 tbar: tbar,
123 run_editor: run_editor,
124 viewConfig: {
125 trackOver: false,
126 },
127 columns: [
128 {
129 header: me.domain_desc,
130 width: 200,
131 sortable: true,
132 dataIndex: 'domain',
133 },
134 {
135 header: gettext('Comment'),
136 sortable: false,
137 renderer: Ext.String.htmlEncode,
138 dataIndex: 'comment',
139 flex: 1,
140 },
141 ],
142 listeners: {
143 itemdblclick: run_editor,
144 activate: reload,
145 },
146 });
147
148 me.callParent();
149 },
150 });