]>
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 boxLabel
: gettext('Restart pmg-smtp-filter to activate changes.'),
99 value
: vm
.get('digest'),
105 create_custom: function() {
107 var vm
= this.getViewModel();
109 Ext
.createWidget('proxmoxWindowEdit', {
112 url
: "/api2/extjs/config/customscores",
114 subject
: gettext("Custom Rule Score"),
115 onlineHelp
: 'pmgconfig_spamdetector_customscores',
118 xtype
: 'proxmoxtextfield',
121 fieldLabel
: gettext('Name'),
124 xtype
: 'numberfield',
127 fieldLabel
: gettext('Score'),
131 xtype
: 'proxmoxtextfield',
133 fieldLabel
: gettext("Comment"),
136 xtype
: 'hiddenfield',
138 value
: vm
.get('digest'),
142 destroy
: () => me
.reload(),
147 run_editor: function() {
149 let vm
= me
.getViewModel();
150 let grid
= me
.lookup('grid');
151 let rec
= grid
.getSelection()[0];
156 Ext
.createWidget('proxmoxWindowEdit', {
159 url
: "/api2/extjs/config/customscores/" + rec
.data
.name
,
161 subject
: gettext("Custom Rule Score"),
162 onlineHelp
: 'pmgconfig_spamdetector_customscores',
165 xtype
: 'displayfield',
167 fieldLabel
: gettext('Name'),
170 xtype
: 'numberfield',
173 fieldLabel
: gettext('Score'),
177 xtype
: 'proxmoxtextfield',
179 fieldLabel
: gettext("Comment"),
182 xtype
: 'hiddenfield',
184 value
: vm
.get('digest'),
188 destroy
: () => me
.reload(),
209 model
: 'pmg-sa-custom',
212 url
: "/api2/json/config/customscores",
221 text
: gettext('Create'),
222 handler
: 'create_custom',
226 xtype
: 'proxmoxButton',
227 text
: gettext('Edit'),
229 handler
: 'run_editor',
232 xtype
: 'proxmoxStdRemoveButton',
233 getUrl: function(rec
) {
234 let digest
= this.up('grid').digest
;
235 let url
= `/config/customscores/${rec.getId()}`;
237 url
+= `?digest=${digest}`;
251 header
: gettext('Name'),
257 header
: gettext('Score'),
263 header
: gettext('Comment'),
265 renderer
: Ext
.String
.htmlEncode
,
266 dataIndex
: 'comment',
272 itemdblclick
: 'run_editor',
284 html
: '{changetext}',
286 reference
: 'changes',
289 text
: gettext('Revert'),
293 disabled
: '{applied}',
298 text
: gettext('Apply Custom Scores'),
302 disabled
: '{applied}',
306 `<b style="font-weight: 600">${gettext('Pending changes')}</b>`,