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