]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/SecurityGroups.js
e0a91a1885f999093ab2beb2f332e97ab74f275d
1 Ext
.define('pve-security-groups', {
2 extend
: 'Ext.data.Model',
4 fields
: [ 'group', 'comment', 'digest' ],
8 Ext
.define('PVE.SecurityGroupEdit', {
9 extend
: 'Proxmox.window.Edit',
11 base_url
: "/cluster/firewall/groups",
15 initComponent : function() {
18 me
.isCreate
= (me
.group_name
=== undefined);
22 me
.url
= '/api2/extjs' + me
.base_url
;
29 value
: me
.group_name
|| '',
30 fieldLabel
: gettext('Name'),
36 value
: me
.group_comment
|| '',
37 fieldLabel
: gettext('Comment'),
42 subject
= gettext('Security Group');
44 subject
= gettext('Security Group') + " '" + me
.group_name
+ "'";
52 var ipanel
= Ext
.create('Proxmox.panel.InputPanel', {
53 // InputPanel does not have a 'create' property, does it need a 'isCreate'
54 isCreate
: me
.isCreate
,
68 Ext
.define('PVE.SecurityGroupList', {
69 extend
: 'Ext.grid.Panel',
70 alias
: 'widget.pveSecurityGroupList',
73 stateId
: 'grid-securitygroups',
75 rule_panel
: undefined,
81 base_url
: "/cluster/firewall/groups",
83 initComponent: function() {
86 if (me
.rule_panel
== undefined) {
87 throw "no rule panel specified";
90 if (me
.base_url
== undefined) {
91 throw "no base_url specified";
94 var store
= new Ext
.data
.Store({
95 model
: 'pve-security-groups',
98 url
: '/api2/json' + me
.base_url
,
106 var sm
= Ext
.create('Ext.selection.RowModel', {});
108 var reload = function() {
109 var oldrec
= sm
.getSelection()[0];
110 store
.load(function(records
, operation
, success
) {
112 var rec
= store
.findRecord('group', oldrec
.data
.group
, 0, false, true, true);
120 var run_editor = function() {
121 var rec
= sm
.getSelection()[0];
125 var win
= Ext
.create('PVE.SecurityGroupEdit', {
126 digest
: rec
.data
.digest
,
127 group_name
: rec
.data
.group
,
128 group_comment
: rec
.data
.comment
,
131 win
.on('destroy', reload
);
134 me
.editBtn
= new Proxmox
.button
.Button({
135 text
: gettext('Edit'),
141 me
.addBtn
= new Proxmox
.button
.Button({
142 text
: gettext('Create'),
143 handler: function() {
145 var win
= Ext
.create('PVE.SecurityGroupEdit', {});
147 win
.on('destroy', reload
);
151 me
.removeBtn
= Ext
.create('Proxmox.button.StdRemoveButton', {
153 baseurl
: me
.base_url
+ '/',
154 enableFn: function(rec
) {
155 return (rec
&& me
.base_url
);
157 callback: function() {
164 tbar
: [ '<b>' + gettext('Group') + ':</b>', me
.addBtn
, me
.removeBtn
, me
.editBtn
],
167 { header
: gettext('Group'), dataIndex
: 'group', width
: '100' },
168 { header
: gettext('Comment'), dataIndex
: 'comment', renderer
: Ext
.String
.htmlEncode
, flex
: 1 },
171 itemdblclick
: run_editor
,
172 select: function(sm
, rec
) {
173 var url
= '/cluster/firewall/groups/' + rec
.data
.group
;
174 me
.rule_panel
.setBaseUrl(url
);
176 deselect: function() {
177 me
.rule_panel
.setBaseUrl(undefined);
189 Ext
.define('PVE.SecurityGroups', {
190 extend
: 'Ext.panel.Panel',
191 alias
: 'widget.pveSecurityGroups',
193 title
: 'Security Groups',
195 initComponent: function() {
198 var rule_panel
= Ext
.createWidget('pveFirewallRules', {
201 list_refs_url
: '/cluster/firewall/refs',
202 tbar_prefix
: '<b>' + gettext('Rules') + ':</b>',
206 var sglist
= Ext
.createWidget('pveSecurityGroupList', {
208 rule_panel
: rule_panel
,
217 items
: [ sglist
, rule_panel
],
220 sglist
.fireEvent('show', sglist
);