]> git.proxmox.com Git - pmg-gui.git/blob - js/ClamAVDatabase.js
add missing htmlEncode
[pmg-gui.git] / js / ClamAVDatabase.js
1 Ext.define('PMG.ClamAVDatabaseConfig', {
2 extend: 'Proxmox.grid.ObjectGrid',
3 alias: ['widget.pmgClamAVDatabaseConfig'],
4
5 monStoreErrors: true,
6
7 initComponent : function() {
8 var me = this;
9
10 me.add_text_row('dbmirror', gettext('Database Mirror'),
11 { deleteEmpty: true, defaultValue: 'database.clamav.net' });
12
13 me.add_boolean_row('safebrowsing', gettext('Google Safe Browsing'),
14 { defaultValue: 1 });
15
16 var baseurl = '/config/clamav';
17
18 Ext.apply(me, {
19 url: '/api2/json' + baseurl,
20 editorConfig: {
21 url: '/api2/extjs' + baseurl,
22 },
23 interval: 5000,
24 cwidth1: 200,
25 listeners: {
26 itemdblclick: me.run_editor
27 }
28 });
29
30 me.callParent();
31
32 me.on('activate', me.rstore.stopUpdate);
33 me.on('destroy', me.rstore.stopUpdate);
34 me.on('deactivate', me.rstore.stopUpdate);
35 }
36 });
37
38 Ext.define('pmg-clamav-database', {
39 extend: 'Ext.data.Model',
40 fields: [ 'name', 'type', 'build_time', 'version',
41 { name: 'nsigs', type: 'integer' }],
42 idProperty: 'name'
43 });
44
45 Ext.define('PMG.ClamAVDatabaseStatus', {
46 extend: 'Ext.grid.GridPanel',
47 alias: ['widget.pmgClamAVDatabaseStatus'],
48
49 title: gettext('Status'),
50
51 reload: function() {
52 var me = this;
53
54 me.store.load();
55 },
56
57 initComponent : function() {
58 var me = this;
59
60 me.store = new Ext.data.Store({
61 model: 'pmg-clamav-database',
62 proxy: {
63 type: 'proxmox',
64 url: "/api2/json/nodes/" + Proxmox.NodeName + "/clamav/database"
65 },
66 sorters: {
67 property: 'name',
68 order: 'DESC'
69 }
70 });
71
72 Proxmox.Utils.monStoreErrors(me, me.store);
73
74 Ext.apply(me, {
75 viewConfig: {
76 trackOver: false
77 },
78 columns: [
79 {
80 header: gettext('Name'),
81 sortable: true,
82 flex: 1,
83 dataIndex: 'name'
84 },
85 {
86 header: gettext('Build time'),
87 sortable: true,
88 flex: 2,
89 dataIndex: 'build_time'
90 },
91 {
92 header: gettext('Version'),
93 flex: 1,
94 sortable: true,
95 dataIndex: 'version'
96 },
97 {
98 header: gettext('Signatures'),
99 flex: 1,
100 sortable: true,
101 dataIndex: 'nsigs'
102 },
103 ]
104 });
105 me.callParent();
106
107 me.reload();
108 }
109 });
110
111 Ext.define('PMG.ClamAVDatabase', {
112 extend: 'Ext.panel.Panel',
113 alias: ['widget.pmgClamAVDatabase'],
114
115 layout: { type: 'vbox', align: 'stretch' },
116
117 initComponent : function() {
118 var me = this;
119
120 var selModel = Ext.create('Ext.selection.RowModel', {});
121 var editPanel = Ext.create('PMG.ClamAVDatabaseConfig', {
122 border: false,
123 xtype: 'pmgClamAVDatabaseConfig',
124 selModel: selModel
125 });
126
127 var statusPanel = Ext.create('PMG.ClamAVDatabaseStatus', {
128 border: false
129 });
130
131 var update_command = function(){
132 Proxmox.Utils.API2Request({
133 url: '/nodes/' + Proxmox.NodeName + '/clamav/database',
134 method: 'POST',
135 failure: function(response, opts) {
136 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
137 },
138 success: function(response, opts) {
139 var upid = response.result.data;
140
141 var win = Ext.create('Proxmox.window.TaskViewer', {
142 upid: upid
143 });
144 win.show();
145 me.mon(win, 'close', function() { statusPanel.reload() });
146 }
147 });
148 };
149
150 me.tbar = [
151 {
152 text: gettext('Edit'),
153 xtype: 'proxmoxButton',
154 disabled: true,
155 handler: function() { editPanel.run_editor() },
156 selModel: selModel
157 },
158 {
159 text: gettext('Update now'),
160 handler: update_command
161 }
162 ];
163
164 me.items = [ editPanel, statusPanel ];
165
166 me.callParent();
167
168 }
169 });