]> git.proxmox.com Git - pmg-gui.git/blame - js/QuarantineList.js
MailTracker.js - encode html
[pmg-gui.git] / js / QuarantineList.js
CommitLineData
75fcb6fd
DC
1Ext.define('PMG.QuarantineList', {
2 extend: 'Ext.grid.GridPanel',
3 xtype: 'pmgQuarantineList',
4
5 emptyText: gettext('No E-Mail address selected'),
6 viewConfig: {
7 deferEmptyText: false
8 },
9
10 config: {
11 emailSelection: false,
12 notFoundText: gettext('No data in database.')
13 },
14
15
16 controller: {
17 xclass: 'Ext.app.ViewController',
18
19 init: function(view) {
20 var me = this;
99bba12c 21 if (PMG.view === 'quarantineview') {
75fcb6fd
DC
22 view.emailSelection = false;
23 me.setEmptyText();
24 }
25 var emailCombobox = me.lookupReference('email');
26 emailCombobox.setVisible(view.emailSelection);
27 emailCombobox.setDisabled(!view.emailSelection);
28
29 // we to this to trigger the change event of those fields
30 var today = new Date();
31 me.lookupReference('from').setValue(today);
32 me.lookupReference('to').setValue(today);
33
34 me.load();
35 },
36 // extjs has no method to dynamically change the emptytext on
37 // grids, so we have to do it this way
38 setEmptyText: function(emptyText) {
39 var me = this;
40 var view = me.getView();
41 var tableview = view.getView();
42 tableview.emptyText = '<div class="x-grid-empty">'+ (emptyText || view.notFoundText) + '</div>';
43 },
44
45 load: function() {
46 var me = this;
47 var view = me.getView();
48 if (view.emailSelection) {
49 if (!me.lookupReference('email').getSelection()) {
50 // if the combobox has no selection we do not reload
51 return;
52 }
53
54 }
55 view.getStore().load();
56 },
57
58 setFrom: function(from) {
59 var me = this.getView();
60 var params = me.getStore().getProxy().getExtraParams();
61 params.starttime = from;
62 me.getStore().getProxy().setExtraParams(params);
63 },
64
65 setTo: function(to) {
66 var me = this.getView();
67 var params = me.getStore().getProxy().getExtraParams();
68 params.endtime = to;
69 me.getStore().getProxy().setExtraParams(params);
70 },
71
72 setUser: function(user) {
73 var me = this.getView();
74 var params = me.getStore().getProxy().getExtraParams();
75 params.pmail = user;
76 me.getStore().getProxy().setExtraParams(params);
77 me.user = user;
78 },
79
80 changeTime: function(field, value) {
81 var me = this;
82 var list = me.getView();
83
84 if (!value) {
85 return;
86 }
87
88 var val = value.getTime()/1000;
89 var combobox = me.lookupReference('email');
90 var params = combobox.getStore().getProxy().getExtraParams();
91
92 var to = me.lookupReference('to');
93 var from = me.lookupReference('from');
94
95 if (field.name === 'from') {
96 me.setFrom(val);
97 params.starttime = val;
98 to.setMinValue(value);
99
100 } else if (field.name === 'to') {
101 me.setTo(val + 24*60*60);
102 params.endtime = val + 24*60*60;
103 from.setMaxValue(value);
104 } else {
105 return;
106 }
107
108 // the combobox does not know anything about the extraparams
109 // so we disable queryCaching until we expand (and query) again
110 combobox.queryCaching = false;
111 combobox.getStore().getProxy().setExtraParams(params);
112
113 me.load();
114 },
115
116 resetEmail: function() {
117 var me = this;
118 var view = me.getView();
119 if (view.emailSelection) {
120 me.setUser(undefined);
121 }
122 },
123
124 changeEmail: function(tb, value) {
125 var me = this;
126 me.setUser(value);
127 me.load();
128 },
129
130 setQueryCaching: function() {
131 this.lookupReference('email').queryCaching = true;
132 },
133
134 control: {
135 '#':{
136 beforedestroy: 'resetEmail',
137 },
138 'combobox[reference=email]': {
139 change: {
140 fn: 'changeEmail',
141 buffer: 500
142 },
143 expand: 'setQueryCaching'
144 },
145 datefield: {
146 change: {
147 fn: 'changeTime'
148 }
149 }
150
151 }
152 },
153
154 features: [
155 {
156 ftype: 'grouping',
157 groupHeaderTpl: '{columnName}: {name} ({children.length})'
158 }
159 ],
160
161 tbar: {
162 layout: {
163 type: 'vbox',
164 align: 'stretch'
165 },
166 defaults: {
167 margin: 2
168 },
169 items: [
170 {
171 fieldLabel: gettext('From'),
172 reference: 'from',
173 xtype: 'datefield',
174 format: 'Y-m-d',
175 name: 'from'
176 },
177 {
178 fieldLabel: gettext('To'),
179 reference: 'to',
180 xtype: 'datefield',
181 format: 'Y-m-d',
182 name: 'to'
183 },
184 {
185 xtype: 'combobox',
186 hidden: true,
187 displayField: 'mail',
188 valueField: 'mail',
189 store: {
190 proxy: {
191 type: 'proxmox',
192 url: '/api2/json/quarantine/spamusers'
193 }
194 },
195 queryParam: false,
196 queryCaching: false,
197 editable: false,
198 reference: 'email',
199 name: 'email',
200 fieldLabel: 'E-Mail'
201 }
202 ]
203 }
204});