]>
Commit | Line | Data |
---|---|---|
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 remove_btn = Ext.createWidget('proxmoxStdRemoveButton', { | |
38 | selModel: me.selModel, | |
39 | baseurl: me.baseurl, | |
40 | callback: reload, | |
41 | waitMsgTarget: me, | |
42 | }); | |
43 | ||
44 | var run_editor = function() { | |
45 | var rec = me.selModel.getSelection()[0]; | |
46 | if (!rec) { | |
47 | return; | |
48 | } | |
49 | ||
50 | var config = { | |
51 | url: '/api2/extjs' + me.baseurl + '/' + rec.data.domain, | |
52 | onlineHelp: me.onlineHelp, | |
53 | method: 'PUT', | |
54 | subject: me.domain_desc, | |
55 | items: [ | |
56 | { | |
57 | xtype: 'displayfield', | |
58 | name: 'domain', | |
59 | fieldLabel: me.domain_desc, | |
60 | }, | |
61 | { | |
62 | xtype: 'textfield', | |
63 | name: 'comment', | |
64 | fieldLabel: gettext("Comment"), | |
65 | }, | |
66 | ], | |
67 | }; | |
68 | ||
69 | var win = Ext.createWidget('proxmoxWindowEdit', config); | |
70 | ||
71 | win.load(); | |
72 | win.on('destroy', reload); | |
73 | win.show(); | |
74 | }; | |
75 | ||
76 | var tbar = [ | |
77 | { | |
78 | xtype: 'proxmoxButton', | |
79 | text: gettext('Edit'), | |
80 | disabled: true, | |
81 | selModel: me.selModel, | |
82 | handler: run_editor, | |
83 | }, | |
84 | { | |
85 | text: gettext('Create'), | |
86 | handler: function() { | |
87 | var config = { | |
88 | method: 'POST', | |
89 | url: '/api2/extjs' + me.baseurl, | |
90 | onlineHelp: me.onlineHelp, | |
91 | isCreate: true, | |
92 | subject: gettext("Relay Domain"), | |
93 | items: [ | |
94 | { | |
95 | xtype: 'proxmoxtextfield', | |
96 | name: 'domain', | |
97 | fieldLabel: me.domain_desc, | |
98 | }, | |
99 | { | |
100 | xtype: 'proxmoxtextfield', | |
101 | name: 'comment', | |
102 | fieldLabel: gettext("Comment"), | |
103 | }, | |
104 | ], | |
105 | }; | |
106 | ||
107 | var win = Ext.createWidget('proxmoxWindowEdit', config); | |
108 | ||
109 | win.on('destroy', reload); | |
110 | win.show(); | |
111 | }, | |
112 | }, | |
113 | remove_btn, | |
114 | '->', | |
115 | { | |
116 | xtype: 'pmgFilterField', | |
117 | filteredFields: ['domain', 'comment'], | |
118 | }, | |
119 | ]; | |
120 | ||
121 | Proxmox.Utils.monStoreErrors(me, store, true); | |
122 | ||
123 | Ext.apply(me, { | |
124 | store: store, | |
125 | tbar: tbar, | |
126 | run_editor: run_editor, | |
127 | viewConfig: { | |
128 | trackOver: false, | |
129 | }, | |
130 | columns: [ | |
131 | { | |
132 | header: me.domain_desc, | |
133 | width: 200, | |
134 | sortable: true, | |
135 | dataIndex: 'domain', | |
136 | }, | |
137 | { | |
138 | header: gettext('Comment'), | |
139 | sortable: false, | |
140 | renderer: Ext.String.htmlEncode, | |
141 | dataIndex: 'comment', | |
142 | flex: 1, | |
143 | }, | |
144 | ], | |
145 | listeners: { | |
146 | itemdblclick: run_editor, | |
147 | activate: reload, | |
148 | }, | |
149 | }); | |
150 | ||
151 | me.callParent(); | |
152 | }, | |
153 | }); |