]>
git.proxmox.com Git - pmg-gui.git/blob - js/ObjectGroup.js
1 Ext
.define('PMG.ObjectGroup', {
2 extend
: 'Ext.grid.GridPanel',
3 alias
: 'widget.pmgObjectGroup',
10 showDirection
: false, // only important for SMTP Whitelist
14 setBaseUrl: function(baseurl
) {
21 url
: '/api2/json' + me
.baseurl
+ '/objects'
24 me
.store
.load(function() {
25 me
.down('#addMenuButton').setDisabled(false);
30 setObjectInfo: function(ogdata
) {
35 var html
= '<b>' + Ext
.String
.htmlEncode(me
.ogdata
.name
) + '</b>';
37 html
+= Ext
.String
.htmlEncode(Ext
.String
.trim(me
.ogdata
.info
));
39 me
.down('#oginfo').update(html
);
40 me
.down('#ogdata').setHidden(false);
43 initComponent : function() {
46 me
.store
= new Ext
.data
.Store({
47 model
: 'pmg-object-list',
50 property
: 'receivertest',
60 header
: gettext('Type'),
62 renderer
: PMG
.Utils
.format_otype
,
66 if (me
.showDirection
) {
68 header
: gettext('Direction'),
69 dataIndex
: 'receivertest',
70 renderer: function(value
) {
71 return value
? PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
77 header
: gettext('Value'),
79 renderer
: Ext
.String
.htmlEncode
,
83 var reload = function() {
87 me
.selModel
= Ext
.create('Ext.selection.RowModel', {});
89 var remove_btn
= Ext
.createWidget('proxmoxButton', {
90 text
: gettext('Remove'),
92 selModel
: me
.selModel
,
93 confirmMsg: function (rec
) {
94 return Ext
.String
.format(
95 gettext('Are you sure you want to remove entry {0}'),
96 "'" + PMG
.Utils
.format_otype(rec
.data
.otype
) +
97 ': ' + rec
.data
.descr
+ "'");
99 handler: function(btn
, event
, rec
) {
100 Proxmox
.Utils
.API2Request({
101 url
: me
.baseurl
+ '/objects/'+ rec
.data
.id
,
104 callback: function() {
107 failure: function (response
, opts
) {
108 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
114 var full_subject = function(subject
, receivertest
) {
115 if (me
.showDirection
) {
116 var direction
= receivertest
?
117 PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
119 return subject
+ ' (' + direction
+ ')';
125 var run_editor = function() {
126 var rec
= me
.selModel
.getSelection()[0];
131 var editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
136 var config
= Ext
.apply({ method
: 'PUT' }, editor
);
137 config
.subject
= full_subject(editor
.subject
, rec
.data
.receivertest
);
138 config
.url
= me
.baseurl
+ '/' + editor
.subdir
+ '/' + rec
.data
.id
;
140 var win
= Ext
.createWidget('proxmoxWindowEdit', config
);
143 win
.on('destroy', reload
);
149 Ext
.Array
.each(me
.otype_list
, function(otype
) {
151 var editor
= PMG
.Utils
.object_editors
[otype
];
153 var config
= Ext
.apply({ method
: 'POST' }, editor
);
154 config
.subject
= full_subject(editor
.subject
, editor
.receivertest
);
157 text
: config
.subject
,
158 handler: function() {
159 if (me
.baseurl
== undefined) {
162 config
.url
= me
.baseurl
+ '/' + editor
.subdir
;
163 var win
= Ext
.createWidget('proxmoxWindowEdit', config
);
164 win
.on('destroy', reload
);
172 me
.dockedItems
.push({
177 text
: gettext('Add'),
179 itemId
: 'addMenuButton',
180 menu
: new Ext
.menu
.Menu({
185 xtype
: 'proxmoxButton',
186 text
: gettext('Edit'),
188 selModel
: me
.selModel
,
195 me
.dockedItems
.push({
199 hidden
: me
.hideGroupInfo
? true : false,
206 style
: { 'white-space': 'pre' },
208 html
: gettext('Please select an object.'),
212 if (me
.ogdata
=== undefined) { return; }
213 me
.fireEvent('dblclickOGInfo', me
, e
, t
, me
.ogdata
);
225 itemdblclick
: run_editor
,
233 me
.setBaseUrl(me
.baseurl
); // configure store, load()