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