]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/SecurityGroups.js
8022ae329b2eb83b4fc1261a895a66da1cbeee88
1 Ext
.define('PVE.SecurityGroupEdit', {
2 extend
: 'PVE.window.Edit',
4 base_url
: "/cluster/firewall/groups",
8 initComponent : function() {
11 me
.isCreate
= (me
.group_name
=== undefined);
15 me
.url
= '/api2/extjs' + me
.base_url
;
22 value
: me
.group_name
|| '',
23 fieldLabel
: gettext('Name'),
29 value
: me
.group_comment
|| '',
30 fieldLabel
: gettext('Comment')
35 subject
= gettext('Security Group');
37 subject
= gettext('Security Group') + " '" + me
.group_name
+ "'";
45 var ipanel
= Ext
.create('PVE.panel.InputPanel', {
46 // InputPanel does not have a 'create' property, does it need a 'isCreate'
47 isCreate
: me
.isCreate
,
61 Ext
.define('PVE.SecurityGroupList', {
62 extend
: 'Ext.grid.Panel',
63 alias
: 'widget.pveSecurityGroupList',
66 stateId
: 'grid-securitygroups',
68 rule_panel
: undefined,
74 base_url
: "/cluster/firewall/groups",
76 initComponent: function() {
77 /*jslint confusion: true */
80 if (me
.rule_panel
== undefined) {
81 throw "no rule panel specified";
84 if (me
.base_url
== undefined) {
85 throw "no base_url specified";
88 var store
= new Ext
.data
.Store({
89 fields
: [ 'group', 'comment', 'digest' ],
92 url
: '/api2/json' + me
.base_url
101 var sm
= Ext
.create('Ext.selection.RowModel', {});
103 var reload = function() {
104 var oldrec
= sm
.getSelection()[0];
105 store
.load(function(records
, operation
, success
) {
107 var rec
= store
.findRecord('group', oldrec
.data
.group
);
115 var run_editor = function() {
116 var rec
= sm
.getSelection()[0];
120 var win
= Ext
.create('PVE.SecurityGroupEdit', {
121 digest
: rec
.data
.digest
,
122 group_name
: rec
.data
.group
,
123 group_comment
: rec
.data
.comment
126 win
.on('destroy', reload
);
129 me
.editBtn
= new PVE
.button
.Button({
130 text
: gettext('Edit'),
136 me
.addBtn
= new PVE
.button
.Button({
137 text
: gettext('Create'),
138 handler: function() {
140 var win
= Ext
.create('PVE.SecurityGroupEdit', {});
142 win
.on('destroy', reload
);
146 me
.removeBtn
= new PVE
.button
.Button({
147 text
: gettext('Remove'),
150 handler: function() {
151 var rec
= sm
.getSelection()[0];
152 if (!rec
|| !me
.base_url
) {
155 PVE
.Utils
.API2Request({
156 url
: me
.base_url
+ '/' + rec
.data
.group
,
159 failure: function(response
, options
) {
160 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
169 tbar
: [ '<b>' + gettext('Group') + ':</b>', me
.addBtn
, me
.removeBtn
, me
.editBtn
],
172 { header
: gettext('Group'), dataIndex
: 'group', width
: '100' },
173 { header
: gettext('Comment'), dataIndex
: 'comment', renderer
: Ext
.String
.htmlEncode
, flex
: 1 }
176 itemdblclick
: run_editor
,
177 select: function(sm
, rec
) {
178 var url
= '/cluster/firewall/groups/' + rec
.data
.group
;
179 me
.rule_panel
.setBaseUrl(url
);
181 deselect: function() {
182 me
.rule_panel
.setBaseUrl(undefined);
194 Ext
.define('PVE.SecurityGroups', {
195 extend
: 'Ext.panel.Panel',
196 alias
: 'widget.pveSecurityGroups',
198 title
: 'Security Groups',
200 initComponent: function() {
203 var rule_panel
= Ext
.createWidget('pveFirewallRules', {
206 list_refs_url
: '/cluster/firewall/refs',
207 tbar_prefix
: '<b>' + gettext('Rules') + ':</b>',
211 var sglist
= Ext
.createWidget('pveSecurityGroupList', {
213 rule_panel
: rule_panel
,
222 items
: [ sglist
, rule_panel
],
225 sglist
.fireEvent('show', sglist
);