]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/SecurityGroups.js
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() {
84 /*jslint confusion: true */
87 if (me
.rule_panel
== undefined) {
88 throw "no rule panel specified";
91 if (me
.base_url
== undefined) {
92 throw "no base_url specified";
95 var store
= new Ext
.data
.Store({
96 model
: 'pve-security-groups',
99 url
: '/api2/json' + me
.base_url
107 var sm
= Ext
.create('Ext.selection.RowModel', {});
109 var reload = function() {
110 var oldrec
= sm
.getSelection()[0];
111 store
.load(function(records
, operation
, success
) {
113 var rec
= store
.findRecord('group', oldrec
.data
.group
);
121 var run_editor = function() {
122 var rec
= sm
.getSelection()[0];
126 var win
= Ext
.create('PVE.SecurityGroupEdit', {
127 digest
: rec
.data
.digest
,
128 group_name
: rec
.data
.group
,
129 group_comment
: rec
.data
.comment
132 win
.on('destroy', reload
);
135 me
.editBtn
= new Proxmox
.button
.Button({
136 text
: gettext('Edit'),
142 me
.addBtn
= new Proxmox
.button
.Button({
143 text
: gettext('Create'),
144 handler: function() {
146 var win
= Ext
.create('PVE.SecurityGroupEdit', {});
148 win
.on('destroy', reload
);
152 me
.removeBtn
= Ext
.create('Proxmox.button.StdRemoveButton', {
154 baseurl
: me
.base_url
+ '/',
155 enableFn: function(rec
) {
156 return (rec
&& me
.base_url
);
158 callback: function() {
165 tbar
: [ '<b>' + gettext('Group') + ':</b>', me
.addBtn
, me
.removeBtn
, me
.editBtn
],
168 { header
: gettext('Group'), dataIndex
: 'group', width
: '100' },
169 { header
: gettext('Comment'), dataIndex
: 'comment', renderer
: Ext
.String
.htmlEncode
, flex
: 1 }
172 itemdblclick
: run_editor
,
173 select: function(sm
, rec
) {
174 var url
= '/cluster/firewall/groups/' + rec
.data
.group
;
175 me
.rule_panel
.setBaseUrl(url
);
177 deselect: function() {
178 me
.rule_panel
.setBaseUrl(undefined);
190 Ext
.define('PVE.SecurityGroups', {
191 extend
: 'Ext.panel.Panel',
192 alias
: 'widget.pveSecurityGroups',
194 title
: 'Security Groups',
196 initComponent: function() {
199 var rule_panel
= Ext
.createWidget('pveFirewallRules', {
202 list_refs_url
: '/cluster/firewall/refs',
203 tbar_prefix
: '<b>' + gettext('Rules') + ':</b>',
207 var sglist
= Ext
.createWidget('pveSecurityGroupList', {
209 rule_panel
: rule_panel
,
218 items
: [ sglist
, rule_panel
],
221 sglist
.fireEvent('show', sglist
);