]> git.proxmox.com Git - pmg-gui.git/blame - js/Transport.js
quarantine action: use shadow for toast "window"
[pmg-gui.git] / js / Transport.js
CommitLineData
ff735274 1/*global Proxmox*/
c51d3f79
DM
2Ext.define('pmg-transport', {
3 extend: 'Ext.data.Model',
d895a746 4 fields: [ 'domain', 'host', 'protocol', { name: 'port', type: 'integer' },
c51d3f79
DM
5 { name: 'use_mx', type: 'boolean' }, 'comment' ],
6 proxy: {
7 type: 'proxmox',
8 url: "/api2/json/config/transport"
9 },
10 idProperty: 'domain'
11});
12
13Ext.define('PMG.Transport', {
14 extend: 'Ext.grid.GridPanel',
15 alias: ['widget.pmgTransport'],
16
17 initComponent : function() {
c502e50c 18 let me = this;
c51d3f79 19
c502e50c 20 let store = new Ext.data.Store({
c51d3f79
DM
21 model: 'pmg-transport',
22 sorters: {
23 property: 'domain',
24 order: 'DESC'
25 }
26 });
c502e50c
TL
27 Proxmox.Utils.monStoreErrors(me, store, true);
28 let reload = () => store.load();
c51d3f79
DM
29
30 me.selModel = Ext.create('Ext.selection.RowModel', {});
31
c502e50c
TL
32 let run_editor = function() {
33 let rec = me.selModel.getSelection()[0];
c51d3f79
DM
34 if (!rec) {
35 return;
36 }
37
00b648d2 38 let win = Ext.createWidget('pmgTransportEditor', {
c51d3f79
DM
39 url: "/api2/extjs/config/transport/" + rec.data.domain,
40 method: 'PUT',
00b648d2 41 });
c51d3f79
DM
42 win.load();
43 win.on('destroy', reload);
44 win.show();
45 };
46
c51d3f79
DM
47 Ext.apply(me, {
48 store: store,
00b648d2
TL
49 tbar: [
50 {
51 xtype: 'proxmoxButton',
52 text: gettext('Edit'),
53 disabled: true,
54 selModel: me.selModel,
55 handler: run_editor
56 },
57 {
58 text: gettext('Create'),
59 handler: function() {
60 let win = Ext.createWidget('pmgTransportEditor', {
61 method: 'POST',
62 url: "/api2/extjs/config/transport",
63 isCreate: true,
64 });
65 win.on('destroy', reload);
66 win.show();
67 }
68 },
69 {
70 xtype: 'proxmoxStdRemoveButton',
71 selModel: me.selModel,
72 baseurl: '/config/transport',
73 callback: reload,
74 waitMsgTarget: me
75 },
76 ],
c51d3f79
DM
77 viewConfig: {
78 trackOver: false
79 },
80 columns: [
81 {
82 header: gettext('Relay Domain'),
83 width: 200,
c51d3f79
DM
84 dataIndex: 'domain'
85 },
86 {
87 header: gettext('Host'),
88 width: 200,
c51d3f79
DM
89 dataIndex: 'host'
90 },
d895a746
JZ
91 {
92 header: gettext('Protocol'),
93 width: 200,
d895a746
JZ
94 dataIndex: 'protocol'
95 },
c51d3f79
DM
96 {
97 header: gettext('Port'),
98 width: 80,
c51d3f79
DM
99 dataIndex: 'port'
100 },
101 {
ae377bbe 102 header: gettext('Use MX'),
c51d3f79
DM
103 width: 80,
104 renderer: Proxmox.Utils.format_boolean,
c51d3f79
DM
105 dataIndex: 'use_mx'
106 },
107 {
108 header: gettext('Comment'),
c51d3f79
DM
109 renderer: Ext.String.htmlEncode,
110 dataIndex: 'comment',
111 flex: 1
112 }
113 ],
114 listeners: {
115 itemdblclick: run_editor,
116 activate: reload
117 }
118 });
119
120 me.callParent();
121 }
122});
00b648d2
TL
123
124Ext.define('PMG.TransportEditor', {
125 extend: 'Proxmox.window.Edit',
126 alias: 'widget.pmgTransportEditor',
127 mixins: ['Proxmox.Mixin.CBind'],
128
129 cbindData: (cfg) => { return {
130 domainXType: cfg.method === 'POST' ? 'proxmoxtextfield' : 'displayfield',
131 }},
132
ae377bbe
TL
133 viewModel: {
134 data: {
135 proto: 'smtp',
136 },
137 formulas: {
138 protoIsSMTP: get => get('proto') === 'smtp',
139 },
140 },
00b648d2
TL
141 onlineHelp: 'pmgconfig_mailproxy_transports',
142 subject: gettext("Transport"),
143
144 items: [
145 {
146 xtype: 'displayfield',
147 cbind: {
148 xtype: '{domainXType}',
149 },
150 name: 'domain',
151 fieldLabel: gettext("Relay Domain")
152 },
153 {
154 xtype: 'textfield',
155 name: 'host',
156 fieldLabel: gettext("Host")
157 },
158 {
159 xtype: 'proxmoxKVComboBox',
160 name: 'protocol',
161 fieldLabel: gettext('Protocol'),
162 deleteEmpty: false,
163 comboItems: [
164 [ 'smtp', 'SMTP' ],
165 [ 'lmtp', 'LMTP' ]
166 ],
167 allowBlank: true,
168 value: 'smtp',
ae377bbe
TL
169 bind: {
170 value: '{proto}'
171 },
00b648d2
TL
172 },
173 {
174 xtype: 'proxmoxintegerfield',
175 name: 'port',
176 value: 25,
177 minValue: 1,
178 maxValue: 65535,
179 fieldLabel: gettext("Port")
180 },
181 {
182 xtype: 'proxmoxcheckbox',
183 name: 'use_mx',
184 checked: true,
ae377bbe
TL
185 bind: {
186 disabled: '{!protoIsSMTP}',
187 hidden: '{!protoIsSMTP}',
188 },
00b648d2
TL
189 uncheckedValue: 0,
190 fieldLabel: gettext('Use MX'),
191 },
192 {
193 xtype: 'textfield',
194 name: 'comment',
195 fieldLabel: gettext("Comment")
196 },
197 ],
198});