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