]>
Commit | Line | Data |
---|---|---|
53ebd289 | 1 | Ext.define('PVE.FirewallAliasEdit', { |
9fccc702 | 2 | extend: 'Proxmox.window.Edit', |
53ebd289 DM |
3 | |
4 | base_url: undefined, | |
09b3292e | 5 | |
53ebd289 DM |
6 | alias_name: undefined, |
7 | ||
09b3292e TL |
8 | width: 400, |
9 | ||
53ebd289 | 10 | initComponent : function() { |
d5e771ce | 11 | |
53ebd289 DM |
12 | var me = this; |
13 | ||
d5e771ce | 14 | me.isCreate = (me.alias_name === undefined); |
53ebd289 | 15 | |
d5e771ce | 16 | if (me.isCreate) { |
a22fc39f TL |
17 | me.url = '/api2/extjs' + me.base_url; |
18 | me.method = 'POST'; | |
19 | } else { | |
20 | me.url = '/api2/extjs' + me.base_url + '/' + me.alias_name; | |
21 | me.method = 'PUT'; | |
22 | } | |
53ebd289 DM |
23 | |
24 | var items = [ | |
25 | { | |
26 | xtype: 'textfield', | |
d5e771ce | 27 | name: me.isCreate ? 'name' : 'rename', |
53ebd289 DM |
28 | fieldLabel: gettext('Name'), |
29 | allowBlank: false | |
30 | }, | |
31 | { | |
32 | xtype: 'textfield', | |
33 | name: 'cidr', | |
34 | fieldLabel: gettext('IP/CIDR'), | |
35 | allowBlank: false | |
36 | }, | |
37 | { | |
38 | xtype: 'textfield', | |
39 | name: 'comment', | |
40 | fieldLabel: gettext('Comment') | |
41 | } | |
42 | ]; | |
43 | ||
ef4ef788 | 44 | var ipanel = Ext.create('Proxmox.panel.InputPanel', { |
d5e771ce | 45 | isCreate: me.isCreate, |
53ebd289 DM |
46 | items: items |
47 | }); | |
48 | ||
49 | Ext.apply(me, { | |
50 | subject: gettext('Alias'), | |
51 | isAdd: true, | |
52 | items: [ ipanel ] | |
53 | }); | |
54 | ||
55 | me.callParent(); | |
56 | ||
d5e771ce | 57 | if (!me.isCreate) { |
53ebd289 | 58 | me.load({ |
a22fc39f | 59 | success: function(response, options) { |
53ebd289 DM |
60 | var values = response.result.data; |
61 | values.rename = values.name; | |
62 | ipanel.setValues(values); | |
63 | } | |
64 | }); | |
65 | } | |
66 | } | |
67 | }); | |
68 | ||
1774f148 DC |
69 | Ext.define('pve-fw-aliases', { |
70 | extend: 'Ext.data.Model', | |
71 | ||
72 | fields: [ 'name', 'cidr', 'comment', 'digest' ], | |
73 | idProperty: 'name' | |
74 | }); | |
75 | ||
53ebd289 DM |
76 | Ext.define('PVE.FirewallAliases', { |
77 | extend: 'Ext.grid.Panel', | |
78 | alias: ['widget.pveFirewallAliases'], | |
79 | ||
9a811965 DC |
80 | onlineHelp: 'pve_firewall_ip_aliases', |
81 | ||
123e1c80 DC |
82 | stateful: true, |
83 | stateId: 'grid-firewall-aliases', | |
84 | ||
53ebd289 DM |
85 | base_url: undefined, |
86 | ||
87 | title: gettext('Alias'), | |
88 | ||
89 | initComponent : function() { | |
53ebd289 DM |
90 | |
91 | var me = this; | |
92 | ||
93 | if (!me.base_url) { | |
94 | throw "missing base_url configuration"; | |
95 | } | |
96 | ||
97 | var store = new Ext.data.Store({ | |
1774f148 | 98 | model: 'pve-fw-aliases', |
53ebd289 | 99 | proxy: { |
56a353b9 | 100 | type: 'proxmox', |
53ebd289 DM |
101 | url: "/api2/json" + me.base_url |
102 | }, | |
53ebd289 DM |
103 | sorters: { |
104 | property: 'name', | |
105 | order: 'DESC' | |
106 | } | |
107 | }); | |
108 | ||
109 | var sm = Ext.create('Ext.selection.RowModel', {}); | |
110 | ||
111 | var reload = function() { | |
112 | var oldrec = sm.getSelection()[0]; | |
113 | store.load(function(records, operation, success) { | |
114 | if (oldrec) { | |
115 | var rec = store.findRecord('name', oldrec.data.name); | |
116 | if (rec) { | |
117 | sm.select(rec); | |
118 | } | |
119 | } | |
120 | }); | |
121 | }; | |
122 | ||
123 | var run_editor = function() { | |
124 | var sm = me.getSelectionModel(); | |
125 | var rec = sm.getSelection()[0]; | |
126 | if (!rec) { | |
127 | return; | |
128 | } | |
129 | ||
130 | var win = Ext.create('PVE.FirewallAliasEdit', { | |
131 | base_url: me.base_url, | |
132 | alias_name: rec.data.name | |
133 | }); | |
134 | ||
135 | win.show(); | |
136 | win.on('destroy', reload); | |
137 | }; | |
138 | ||
5720fafa | 139 | me.editBtn = new Proxmox.button.Button({ |
53ebd289 DM |
140 | text: gettext('Edit'), |
141 | disabled: true, | |
142 | selModel: sm, | |
143 | handler: run_editor | |
144 | }); | |
145 | ||
146 | me.addBtn = Ext.create('Ext.Button', { | |
147 | text: gettext('Add'), | |
148 | handler: function() { | |
149 | var win = Ext.create('PVE.FirewallAliasEdit', { | |
150 | base_url: me.base_url | |
151 | }); | |
152 | win.on('destroy', reload); | |
153 | win.show(); | |
154 | } | |
155 | }); | |
156 | ||
3b1ca3ff | 157 | me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', { |
53ebd289 | 158 | selModel: sm, |
3b1ca3ff DC |
159 | baseurl: me.base_url + '/', |
160 | callback: reload | |
53ebd289 DM |
161 | }); |
162 | ||
163 | ||
b6f01f84 | 164 | Ext.apply(me, { |
53ebd289 DM |
165 | store: store, |
166 | tbar: [ me.addBtn, me.removeBtn, me.editBtn ], | |
167 | selModel: sm, | |
168 | columns: [ | |
c10fabfe TL |
169 | { |
170 | header: gettext('Name'), | |
171 | dataIndex: 'name', | |
172 | flex: 1, | |
173 | }, | |
174 | { | |
175 | header: gettext('IP/CIDR'), | |
176 | dataIndex: 'cidr', | |
177 | flex: 1, | |
178 | }, | |
179 | { | |
180 | header: gettext('Comment'), | |
181 | dataIndex: 'comment', | |
182 | renderer: Ext.String.htmlEncode, | |
183 | flex: 3, | |
184 | } | |
53ebd289 DM |
185 | ], |
186 | listeners: { | |
187 | itemdblclick: run_editor | |
188 | } | |
189 | }); | |
190 | ||
191 | me.callParent(); | |
260c1540 | 192 | me.on('activate', reload); |
53ebd289 DM |
193 | } |
194 | }); |