]>
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 emptyText
: gettext('Please select an object.'),
16 setBaseUrl: function(baseurl
) {
21 if (me
.baseurl
=== undefined) {
22 me
.store
.proxy
.setUrl(undefined);
24 me
.setButtonState(me
.store
, [], false);
26 var url
= '/api2/json' + me
.baseurl
+ '/objects';
27 me
.store
.proxy
.setUrl(url
);
32 setObjectInfo: function(ogdata
) {
37 if (me
.ogdata
=== undefined) {
39 me
.down('#oginfo').update(me
.emptyText
);
43 var html
= '<b>' + Ext
.String
.htmlEncode(me
.ogdata
.name
) + '</b>';
45 html
+= Ext
.String
.htmlEncode(Ext
.String
.trim(me
.ogdata
.info
));
47 me
.down('#oginfo').update(html
);
48 me
.down('#ogdata').setHidden(false);
52 setButtonState: function(store
, records
, success
) {
54 if (!success
|| !me
.baseurl
) {
55 me
.down('#addMenuButton').setDisabled(true);
58 me
.down('#addMenuButton').setDisabled(false);
61 initComponent : function() {
64 me
.store
= new Ext
.data
.Store({
65 model
: 'pmg-object-list',
71 property
: 'receivertest'
81 header
: gettext('Type'),
83 renderer
: PMG
.Utils
.format_otype
,
87 if (me
.showDirection
) {
89 header
: gettext('Direction'),
90 dataIndex
: 'receivertest',
91 renderer: function(value
) {
92 return value
? PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
98 header
: gettext('Value'),
100 renderer
: Ext
.String
.htmlEncode
,
104 var reload = function() {
108 me
.selModel
= Ext
.create('Ext.selection.RowModel', {});
110 var remove_btn
= Ext
.createWidget('proxmoxStdRemoveButton', {
111 selModel
: me
.selModel
,
112 getUrl: function(rec
) {
113 return me
.baseurl
+ '/objects/' + rec
.data
.id
;
116 getRecordName: function(rec
) {
117 return PMG
.Utils
.format_otype(rec
.data
.otype
) +
118 ': ' + rec
.data
.descr
;
123 var full_subject = function(subject
, receivertest
) {
124 if (me
.showDirection
) {
125 var direction
= receivertest
?
126 PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
128 return subject
+ ' (' + direction
+ ')';
134 var run_editor = function() {
135 var rec
= me
.selModel
.getSelection()[0];
140 var editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
145 var config
= Ext
.apply({ method
: 'PUT' }, editor
);
146 config
.subject
= full_subject(editor
.subject
, rec
.data
.receivertest
);
147 config
.url
= me
.baseurl
+ '/' + editor
.subdir
+ '/' + rec
.data
.id
;
149 var win
= Ext
.createWidget(config
);
152 win
.on('destroy', reload
);
158 Ext
.Array
.each(me
.otype_list
, function(otype
) {
160 var editor
= PMG
.Utils
.object_editors
[otype
];
162 var config
= Ext
.apply({ method
: 'POST' }, editor
);
163 config
.subject
= full_subject(editor
.subject
, editor
.receivertest
);
166 text
: config
.subject
,
167 handler: function() {
168 if (me
.baseurl
== undefined) {
171 config
.url
= me
.baseurl
+ '/' + editor
.subdir
;
172 var win
= Ext
.create(config
);
173 win
.on('destroy', reload
);
181 me
.dockedItems
.push({
186 text
: gettext('Add'),
188 itemId
: 'addMenuButton',
194 xtype
: 'proxmoxButton',
195 text
: gettext('Edit'),
197 selModel
: me
.selModel
,
204 me
.dockedItems
.push({
208 hidden
: me
.hideGroupInfo
? true : false,
215 style
: { 'white-space': 'pre' },
221 if (me
.ogdata
=== undefined) { return; }
222 me
.fireEvent('dblclickOGInfo', me
, e
, t
, me
.ogdata
);
232 Proxmox
.Utils
.monStoreErrors(me
, me
.store
, true);
236 itemdblclick
: run_editor
,
243 me
.mon(me
.store
, 'load', me
.setButtonState
, me
);
246 me
.setBaseUrl(me
.baseurl
); // configure store, load()