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