]>
git.proxmox.com Git - pmg-gui.git/blob - js/SpamDetectorCustom.js
1 Ext
.define('pmg-sa-custom', {
2 extend
: 'Ext.data.Model',
3 fields
: ['name', 'score', 'comment', 'digest'],
7 Ext
.define('PMG.SpamDetectorCustomScores', {
8 extend
: 'Ext.panel.Panel',
9 xtype
: 'pmgSpamDetectorCustomScores',
22 xclass
: 'Ext.app.ViewController',
26 let vm
= me
.getViewModel();
27 let grid
= me
.lookup('grid');
29 Proxmox
.Utils
.API2Request({
30 url
: '/config/customscores',
31 failure: function(response
, opts
) {
32 grid
.getStore().loadData({});
33 Proxmox
.Utils
.setErrorMask(grid
, response
.htmlStatus
);
34 vm
.set('digest', null);
35 vm
.set('applied', true);
36 vm
.set('changetext', '');
38 success: function(response
, opts
) {
39 let data
= response
.result
.data
;
40 let digestel
= data
.pop(); // last element is digest
41 let changes
= response
.result
.changes
;
42 grid
.getStore().loadData(data
);
44 vm
.set('digest', digestel
.digest
);
45 vm
.set('applied', !changes
);
46 vm
.set('changetext', `<pre>${changes || ''}</pre>`);
53 let vm
= me
.getViewModel();
54 let grid
= me
.lookup('grid');
56 Proxmox
.Utils
.API2Request({
57 url
: '/config/customscores',
60 digest
: vm
.get('digest'),
62 failure: function(response
, opts
) {
63 grid
.getStore().loadData({});
64 Proxmox
.Utils
.setErrorMask(grid
, response
.htmlStatus
);
65 vm
.set('digest', null);
66 vm
.set('applied', true);
67 vm
.set('changetext', '');
69 success
: () => { me
.reload(); },
75 var vm
= this.getViewModel();
77 Ext
.createWidget('proxmoxWindowEdit', {
79 url
: "/api2/extjs/config/customscores",
81 submitText
: gettext('Apply'),
83 taskDone
: () => { me
.reload(); },
85 title
: gettext("Apply Custom Scores"),
86 onlineHelp
: 'pmgconfig_spamdetector_customscores',
90 xtype
: 'proxmoxcheckbox',
91 name
: 'restart-daemon',
92 fieldLabel
: gettext('Restart pmg-smtp-filter'),
99 value
: vm
.get('digest'),
105 create_custom: function() {
107 var vm
= this.getViewModel();
109 var win
= Ext
.createWidget('proxmoxWindowEdit', {
111 url
: "/api2/extjs/config/customscores",
113 subject
: gettext("Custom Rule Score"),
114 onlineHelp
: 'pmgconfig_spamdetector_customscores',
117 xtype
: 'proxmoxtextfield',
120 fieldLabel
: gettext('Name'),
123 xtype
: 'numberfield',
126 fieldLabel
: gettext('Score'),
130 xtype
: 'proxmoxtextfield',
132 fieldLabel
: gettext("Comment"),
135 xtype
: 'hiddenfield',
137 value
: vm
.get('digest'),
142 win
.on('destroy', me
.reload
, me
);
146 run_editor: function() {
148 var vm
= this.getViewModel();
149 var grid
= me
.lookup('grid');
150 var rec
= grid
.getSelection()[0];
155 var win
= Ext
.createWidget('proxmoxWindowEdit', {
156 url
: "/api2/extjs/config/customscores/" + rec
.data
.name
,
158 subject
: gettext("Custom Rule Score"),
159 onlineHelp
: 'pmgconfig_spamdetector_customscores',
162 xtype
: 'displayfield',
164 fieldLabel
: gettext('Name'),
167 xtype
: 'numberfield',
170 fieldLabel
: gettext('Score'),
174 xtype
: 'proxmoxtextfield',
176 fieldLabel
: gettext("Comment"),
179 xtype
: 'hiddenfield',
181 value
: vm
.get('digest'),
187 win
.on('destroy', me
.reload
, me
);
207 model
: 'pmg-sa-custom',
210 url
: "/api2/json/config/customscores",
219 xtype
: 'proxmoxButton',
220 text
: gettext('Edit'),
222 handler
: 'run_editor',
225 text
: gettext('Create'),
226 handler
: 'create_custom',
229 xtype
: 'proxmoxStdRemoveButton',
230 getUrl: function(rec
) {
231 let digest
= this.up('grid').digest
;
232 let url
= `/config/customscores/${rec.getId()}`;
234 url
+= `?digest=${digest}`;
242 text
: gettext('Revert'),
243 reference
: 'revert_btn',
247 disabled
: '{applied}',
252 text
: gettext('Apply Custom Scores'),
253 reference
: 'restart_btn',
256 disabled
: '{applied}',
268 header
: gettext('Name'),
274 header
: gettext('Score'),
280 header
: gettext('Comment'),
282 renderer
: Ext
.String
.htmlEncode
,
283 dataIndex
: 'comment',
289 itemdblclick
: 'run_editor',
301 html
: '{changetext}',
303 reference
: 'changes',
305 gettext('Pending changes') + ' (' +
306 gettext('Please restart pmg-smtp-filter to activate changes') + ')',