]> git.proxmox.com Git - pmg-gui.git/blame - js/ObjectGroupList.js
mobile: set button color in mail view similar to quarantine list
[pmg-gui.git] / js / ObjectGroupList.js
CommitLineData
56b0691b
DM
1Ext.define('pmg-object-group', {
2 extend: 'Ext.data.Model',
c87d46fb
TL
3 fields: ['id', 'name', 'info'],
4 idProperty: 'id',
56b0691b
DM
5});
6
7Ext.define('pmg-object-list', {
8 extend: 'Ext.data.Model',
9 fields: [
10 'id', 'descr',
11 { name: 'otype', type: 'integer' },
c87d46fb 12 { name: 'receivertest', type: 'boolean' },
56b0691b 13 ],
c87d46fb 14 idProperty: 'id',
56b0691b
DM
15});
16
17
a43acf2e 18Ext.define('PMG.ObjectGroupList', {
56b0691b 19 extend: 'Ext.grid.GridPanel',
a43acf2e 20 alias: ['widget.pmgObjectGroupList'],
56b0691b 21
a43acf2e
DM
22 ogclass: undefined, // 'who', 'when', 'what'
23
24 subject: 'Object Group List', // please overwrite
56b0691b 25
4475914f
DM
26 baseurl: undefined,
27
ad834b6f
DM
28 enableButtons: true,
29
4475914f
DM
30 inputItems: [
31 {
32 xtype: 'textfield',
33 name: 'name',
f5de8682 34 allowBlank: false,
c87d46fb 35 fieldLabel: gettext('Name'),
4475914f
DM
36 },
37 {
38 xtype: 'textareafield',
39 name: 'info',
c87d46fb
TL
40 fieldLabel: gettext("Description"),
41 },
4475914f
DM
42 ],
43
44 reload: function() {
45 var me = this;
46
ad834b6f 47 me.store.load();
4475914f
DM
48 },
49
50 run_editor: function() {
51 var me = this;
52
53 var rec = me.selModel.getSelection()[0];
54 if (!rec) {
55 return;
56 }
57
58 var config = {
59 url: "/api2/extjs" + me.baseurl +'/' + rec.data.id + '/config',
573a6e8b 60 onlineHelp: 'chapter_mailfilter',
4475914f
DM
61 method: 'PUT',
62 subject: me.subject,
63 width: 400,
c87d46fb 64 items: me.inputItems,
4475914f
DM
65 };
66
67 var win = Ext.createWidget('proxmoxWindowEdit', config);
68
69 win.load();
70 win.on('destroy', me.reload, me);
71 win.show();
72 },
73
c87d46fb 74 initComponent: function() {
56b0691b
DM
75 var me = this;
76
a43acf2e
DM
77 if (!me.ogclass) {
78 throw "ogclass not initialized";
79 }
80
4475914f
DM
81 me.baseurl = "/config/ruledb/" + me.ogclass;
82
83 me.store = new Ext.data.Store({
56b0691b
DM
84 model: 'pmg-object-group',
85 proxy: {
86 type: 'proxmox',
c87d46fb 87 url: "/api2/json" + me.baseurl,
56b0691b
DM
88 },
89 sorters: {
90 property: 'name',
18722987 91 direction: 'ASC',
c87d46fb 92 },
56b0691b
DM
93 });
94
56b0691b
DM
95 me.selModel = Ext.create('Ext.selection.RowModel', {});
96
b357057e 97 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
56b0691b 98 selModel: me.selModel,
b357057e
DM
99 baseurl: me.baseurl,
100 callback: function() { me.reload(); },
101 getRecordName: function(rec) { return rec.data.name; },
c87d46fb 102 waitMsgTarget: me,
56b0691b
DM
103 });
104
56b0691b
DM
105 var tbar = [
106 {
107 xtype: 'proxmoxButton',
108 text: gettext('Edit'),
109 disabled: true,
110 selModel: me.selModel,
c87d46fb 111 handler: function() { me.run_editor(); },
56b0691b
DM
112 },
113 {
114 text: gettext('Create'),
115 handler: function() {
116 var config = {
117 method: 'POST',
4475914f 118 url: "/api2/extjs" + me.baseurl,
573a6e8b 119 onlineHelp: 'chapter_mailfilter',
18b5b6ad 120 isCreate: true,
a43acf2e 121 width: 400,
56b0691b 122 subject: me.subject,
c87d46fb 123 items: me.inputItems,
56b0691b
DM
124 };
125
126 var win = Ext.createWidget('proxmoxWindowEdit', config);
127
4475914f 128 win.on('destroy', me.reload, me);
56b0691b 129 win.show();
c87d46fb 130 },
56b0691b 131 },
c87d46fb 132 remove_btn,
56b0691b
DM
133 ];
134
2f8fe1a3 135 Proxmox.Utils.monStoreErrors(me, me.store, true);
56b0691b 136
ad834b6f
DM
137 if (me.enableButtons) {
138 me.tbar = tbar;
139 }
140
56b0691b 141 Ext.apply(me, {
56b0691b
DM
142 columns: [
143 {
144 header: gettext('Name'),
145 sortable: true,
146 flex: 1,
147 dataIndex: 'name',
c87d46fb
TL
148 renderer: Ext.String.htmlEncode,
149 },
56b0691b
DM
150 ],
151 listeners: {
ad834b6f
DM
152 itemdblclick: function() {
153 if (me.enableButtons) {
154 me.run_editor();
155 }
156 },
c87d46fb
TL
157 activate: function() { me.reload(); },
158 },
56b0691b
DM
159 });
160
161 me.callParent();
162
4475914f 163 me.reload(); // initial load
c87d46fb 164 },
56b0691b 165});