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