]>
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 var vm
= this.getViewModel();
27 var 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 var vm
= this.getViewModel();
55 Proxmox
.Utils
.API2Request({
56 url
: '/config/customscores',
59 digest
: vm
.get('digest'),
61 failure: function(response
, opts
) {
62 grid
.getStore().loadData({});
63 Proxmox
.Utils
.setErrorMask(grid
, response
.htmlStatus
);
64 vm
.set('digest', null);
65 vm
.set('applied', true);
66 vm
.set('changetext', '');
68 success
: () => { me
.reload(); },
74 var vm
= this.getViewModel();
76 var win
= Ext
.createWidget('proxmoxWindowEdit', {
78 url
: "/api2/extjs/config/customscores",
80 submitText
: gettext('Apply'),
82 taskDone
: () => { me
.reload(); },
84 title
: gettext("Apply Custom Scores"),
85 onlineHelp
: 'pmgconfig_spamdetector_customscores',
89 xtype
: 'proxmoxcheckbox',
90 name
: 'restart-daemon',
91 fieldLabel
: gettext('Restart pmg-smtp-filter'),
98 value
: vm
.get('digest'),
104 create_custom: function() {
106 var vm
= this.getViewModel();
108 var win
= Ext
.createWidget('proxmoxWindowEdit', {
110 url
: "/api2/extjs/config/customscores",
112 subject
: gettext("Custom Rule Score"),
113 onlineHelp
: 'pmgconfig_spamdetector_customscores',
116 xtype
: 'proxmoxtextfield',
119 fieldLabel
: gettext('Name'),
122 xtype
: 'numberfield',
125 fieldLabel
: gettext('Score'),
129 xtype
: 'proxmoxtextfield',
131 fieldLabel
: gettext("Comment"),
134 xtype
: 'hiddenfield',
136 value
: vm
.get('digest'),
141 win
.on('destroy', me
.reload
, me
);
145 run_editor: function() {
147 var vm
= this.getViewModel();
148 var grid
= me
.lookup('grid');
149 var rec
= grid
.getSelection()[0];
154 var win
= Ext
.createWidget('proxmoxWindowEdit', {
155 url
: "/api2/extjs/config/customscores/" + rec
.data
.name
,
157 subject
: gettext("Custom Rule Score"),
158 onlineHelp
: 'pmgconfig_spamdetector_customscores',
161 xtype
: 'displayfield',
163 fieldLabel
: gettext('Name'),
166 xtype
: 'numberfield',
169 fieldLabel
: gettext('Score'),
173 xtype
: 'proxmoxtextfield',
175 fieldLabel
: gettext("Comment"),
178 xtype
: 'hiddenfield',
180 value
: vm
.get('digest'),
186 win
.on('destroy', me
.reload
, me
);
206 model
: 'pmg-sa-custom',
209 url
: "/api2/json/config/customscores",
218 xtype
: 'proxmoxButton',
219 text
: gettext('Edit'),
221 handler
: 'run_editor',
224 text
: gettext('Create'),
225 handler
: 'create_custom',
228 xtype
: 'proxmoxStdRemoveButton',
229 getUrl: function(rec
) {
230 let digest
= this.up('grid').digest
;
231 let url
= `/config/customscores/${rec.getId()}`;
233 url
+= `?digest=${digest}`;
241 text
: gettext('Revert'),
242 reference
: 'revert_btn',
246 disabled
: '{applied}',
251 text
: gettext('Apply Custom Scores'),
252 reference
: 'restart_btn',
255 disabled
: '{applied}',
267 header
: gettext('Name'),
273 header
: gettext('Score'),
279 header
: gettext('Comment'),
281 renderer
: Ext
.String
.htmlEncode
,
282 dataIndex
: 'comment',
288 itemdblclick
: 'run_editor',
300 html
: '{changetext}',
302 reference
: 'changes',
304 gettext('Pending changes') + ' (' +
305 gettext('Please restart pmg-smtp-filter to activate changes') + ')',