]>
git.proxmox.com Git - pmg-gui.git/blob - js/SpamQuarantine.js
1 Ext
.define('pmg-spam-archive', {
2 extend
: 'Ext.data.Model',
4 { type
: 'number', name
: 'spamavg' },
5 { type
: 'integer', name
: 'count' },
6 { type
: 'date', dateFormat
: 'timestamp', name
: 'day' }
10 url
: "/api2/json/quarantine/spam"
15 Ext
.define('pmg-spam-list', {
16 extend
: 'Ext.data.Model',
17 fields
: [ 'id', 'envelope_sender', 'from', 'sender', 'receiver', 'subject',
18 { type
: 'number', name
: 'spamlevel' },
19 { type
: 'integer', name
: 'bytes' },
20 { type
: 'date', dateFormat
: 'timestamp', name
: 'time' },
24 convert: function(v
, rec
) {
25 return Ext
.Date
.format(rec
.get('time'), 'Y-m-d');
31 url
: "/api2/json/quarantine/spam",
36 Ext
.define('PMG.SpamList', {
37 extend
: 'Ext.grid.GridPanel',
40 title
: gettext('Spam List'),
42 emptyText
: gettext('No E-Mail address selected'),
47 setUser: function(user
) {
49 var params
= me
.getStore().getProxy().getExtraParams();
51 me
.getStore().getProxy().setExtraParams(params
);
55 setFrom: function(from) {
57 var params
= me
.getStore().getProxy().getExtraParams();
58 params
.starttime
= from;
59 me
.getStore().getProxy().setExtraParams(params
);
64 var params
= me
.getStore().getProxy().getExtraParams();
66 me
.getStore().getProxy().setExtraParams(params
);
71 if (me
.user
|| PMG
.view
=== 'quarantine') {
72 // extjs has no method to dynamically change the emptytext on
73 // grids, so we have to do it this way
74 var view
= me
.getView();
75 view
.emptyText
= '<div class="x-grid-empty">'+ gettext('No Spam E-Mails found') + '</div>';
82 model
: 'pmg-spam-list',
94 groupHeaderTpl
: '{columnName}: {name} ({children.length})'
100 header
: gettext('Sender/Subject'),
101 dataIndex
: 'subject',
102 renderer: function(value
, metaData
, rec
) {
103 var subject
= Ext
.htmlEncode(value
);
104 var from = Ext
.htmlEncode(rec
.data
.from);
105 var sender
= Ext
.htmlEncode(rec
.data
.sender
);
107 from = Ext
.String
.format(gettext("{0} on behalf of {1}"),
110 return '<small>' + from + '</small><br>' + subject
;
115 header
: gettext('Level'),
116 dataIndex
: 'spamlevel'
119 header
: gettext('Size (KB)'),
120 renderer: function(v
) { return Ext
.Number
.toFixed(v
/1024, 0); },
124 header
: gettext('Arrival Day'),
130 header
: gettext('Arrival Time'),
137 Ext
.define('PMG.SpamQuarantine', {
138 extend
: 'Ext.container.Container',
139 xtype
: 'pmgSpamQuarantine',
144 defaults
: { border
: false },
148 xclass
: 'Ext.app.ViewController',
150 init: function(view
) {
152 var spamlist
= me
.lookupReference('spamlist');
153 if (PMG
.view
=== 'quarantine') {
154 spamlist
.down('combobox[name=email]').setVisible(false);
158 // we to this to trigger the change event of those fields
159 var today
= new Date();
160 spamlist
.down('datefield[name=from]').setValue(today
);
161 spamlist
.down('datefield[name=to]').setValue(today
);
164 changeEmail: function(tb
, value
) {
165 var spamlist
= this.lookupReference('spamlist');
166 spamlist
.setUser(value
);
170 resetEmail: function() {
171 var spamlist
= this.lookupReference('spamlist');
172 spamlist
.setUser(undefined);
175 onSelectMail: function() {
177 var spamlist
= this.lookupReference('spamlist');
178 var rec
= spamlist
.selModel
.getSelection()[0];
180 var preview
= this.lookupReference('preview');
182 if (!rec
|| !rec
.data
|| !rec
.data
.id
) {
184 me
.lookupReference('preview').setDisabled(true);
188 me
.lookupReference('preview').setDisabled(false);
190 var raw
= me
.raw
|| false;
192 var url
= '/api2/htmlmail/quarantine/content?id=' + rec
.data
.id
+ ((raw
)?'&raw=1':'');
193 preview
.update("<iframe frameborder=0 width=100% height=100% sandbox='allow-same-origin' src='" + url
+"'></iframe>");
196 rawMail: function(button
) {
198 me
.lookupReference('html').setVisible(true);
199 button
.setVisible(false);
204 htmlMail: function(button
) {
206 me
.lookupReference('raw').setVisible(true);
207 button
.setVisible(false);
212 changeTime: function(field
, value
) {
217 var val
= value
.getTime()/1000;
218 var spamlist
= me
.lookupReference('spamlist');
219 var combobox
= me
.lookupReference('email');
220 var params
= combobox
.getStore().getProxy().getExtraParams();
222 var to
= me
.lookupReference('to');
223 var from = me
.lookupReference('from');
225 if (field
.name
=== 'from') {
226 spamlist
.setFrom(val
);
227 params
.starttime
= val
;
228 to
.setMinValue(value
);
230 } else if (field
.name
=== 'to') {
231 spamlist
.setTo(val
+ 24*60*60);
232 params
.endtime
= val
+ 24*60*60;
233 from.setMaxValue(value
);
238 // the combobox does not know anything about the extraparams
239 // so we disable queryCaching until we expand (and query) again
240 combobox
.queryCaching
= false;
241 combobox
.getStore().getProxy().setExtraParams(params
);
243 // we are reloading when we already have an email selected,
244 // or are in the user quarantine view
245 if (combobox
.getValue() || PMG
.view
=== 'quarantine') {
250 setQueryCaching: function() {
251 this.lookupReference('email').queryCaching
= true;
256 beforedestroy
: 'resetEmail'
258 'button[reference=raw]': {
261 'button[reference=html]': {
264 'combobox[name=email]': {
269 expand
: 'setQueryCaching'
275 selectionChange
: 'onSelectMail'
292 fieldLabel
: gettext('From'),
299 fieldLabel
: gettext('To'),
307 displayField
: 'mail',
312 url
: '/api2/json/quarantine/spamusers'
320 fieldLabel
: 'E-Mail',
323 xtype
: 'pmgSpamList',
324 reference
: 'spamlist',
331 title
: gettext('Selected Mail'),
335 reference
: 'preview',
340 text
: gettext('Show Raw'),
341 iconCls
: 'fa fa-file-code-o'
346 text
: gettext('Show HTML'),
347 iconCls
: 'fa fa-file-text-o'