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