]>
git.proxmox.com Git - pmg-gui.git/blob - js/ObjectGroup.js
1e76ef3d3f8bbc8113448fb644edd106f905edba
2 Ext
.define('PMG.ObjectGroup', {
3 extend
: 'Ext.grid.GridPanel',
4 alias
: 'widget.pmgObjectGroup',
11 showDirection
: false, // only important for SMTP Whitelist
15 emptyText
: gettext('Please select an object.'),
17 setBaseUrl: function(baseurl
) {
22 if (me
.baseurl
=== undefined) {
23 me
.store
.proxy
.setUrl(undefined);
25 me
.setButtonState(me
.store
, [], false);
27 var url
= '/api2/json' + me
.baseurl
+ '/objects';
28 me
.store
.proxy
.setUrl(url
);
33 setObjectInfo: function(ogdata
) {
38 if (me
.ogdata
=== undefined) {
40 me
.down('#oginfo').update(me
.emptyText
);
44 var html
= '<b>' + Ext
.String
.htmlEncode(me
.ogdata
.name
) + '</b>';
46 html
+= Ext
.String
.htmlEncode(Ext
.String
.trim(me
.ogdata
.info
));
48 me
.down('#oginfo').update(html
);
49 me
.down('#ogdata').setHidden(false);
53 setButtonState: function(store
, records
, success
) {
55 if (!success
|| !me
.baseurl
) {
56 me
.down('#addMenuButton').setDisabled(true);
59 me
.down('#addMenuButton').setDisabled(false);
62 initComponent : function() {
65 me
.store
= new Ext
.data
.Store({
66 model
: 'pmg-object-list',
72 property
: 'receivertest'
82 header
: gettext('Type'),
84 renderer
: PMG
.Utils
.format_otype
,
88 if (me
.showDirection
) {
90 header
: gettext('Direction'),
91 dataIndex
: 'receivertest',
92 renderer: function(value
) {
93 return value
? PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
99 header
: gettext('Value'),
101 renderer
: Ext
.String
.htmlEncode
,
105 var reload = function() {
109 me
.selModel
= Ext
.create('Ext.selection.RowModel', {});
111 var remove_btn
= Ext
.createWidget('proxmoxStdRemoveButton', {
112 selModel
: me
.selModel
,
113 getUrl: function(rec
) {
114 return me
.baseurl
+ '/objects/' + rec
.data
.id
;
117 getRecordName: function(rec
) {
118 return PMG
.Utils
.format_otype(rec
.data
.otype
) +
119 ': ' + rec
.data
.descr
;
124 var full_subject = function(subject
, receivertest
) {
125 if (me
.showDirection
) {
126 var direction
= receivertest
?
127 PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
129 return subject
+ ' (' + direction
+ ')';
135 var run_editor = function() {
136 var rec
= me
.selModel
.getSelection()[0];
141 var editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
142 if (!editor
|| editor
.uneditable
) {
146 var config
= Ext
.apply({ method
: 'PUT' }, editor
);
147 config
.subject
= full_subject(editor
.subject
, rec
.data
.receivertest
);
148 config
.url
= me
.baseurl
+ '/' + editor
.subdir
+ '/' + rec
.data
.id
;
150 var win
= Ext
.createWidget(config
);
153 win
.on('destroy', reload
);
159 Ext
.Array
.each(me
.otype_list
, function(otype
) {
161 var editor
= PMG
.Utils
.object_editors
[otype
];
163 var config
= Ext
.apply({ method
: 'POST' }, editor
);
164 config
.subject
= full_subject(editor
.subject
, editor
.receivertest
);
167 text
: config
.subject
,
168 iconCls
: config
.iconCls
|| 'fa fa-question-circle',
169 handler: function() {
170 if (me
.baseurl
== undefined) {
173 config
.url
= me
.baseurl
+ '/' + editor
.subdir
;
174 var win
= Ext
.create(config
);
175 win
.on('destroy', reload
);
183 me
.dockedItems
.push({
188 text
: gettext('Add'),
190 itemId
: 'addMenuButton',
196 xtype
: 'proxmoxButton',
197 text
: gettext('Edit'),
199 selModel
: me
.selModel
,
200 enableFn: function(rec
) {
201 var editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
202 return (editor
&& !editor
.uneditable
);
210 me
.dockedItems
.push({
214 hidden
: me
.hideGroupInfo
? true : false,
221 style
: { 'white-space': 'pre' },
227 if (me
.ogdata
=== undefined) { return; }
228 me
.fireEvent('dblclickOGInfo', me
, e
, t
, me
.ogdata
);
238 Proxmox
.Utils
.monStoreErrors(me
, me
.store
, true);
242 itemdblclick
: run_editor
,
249 me
.mon(me
.store
, 'load', me
.setButtonState
, me
);
252 me
.setBaseUrl(me
.baseurl
); // configure store, load()