]>
Commit | Line | Data |
---|---|---|
d9c3552a DM |
1 | Ext.define('pmg-spam-archive', { |
2 | extend: 'Ext.data.Model', | |
3 | fields: [ | |
4 | { type: 'number', name: 'spamavg' }, | |
5 | { type: 'integer', name: 'count' }, | |
6 | { type: 'date', dateFormat: 'timestamp', name: 'day' } | |
7 | ], | |
8 | proxy: { | |
9 | type: 'proxmox', | |
10 | url: "/api2/json/quarantine/spam" | |
11 | }, | |
12 | idProperty: 'day' | |
13 | }); | |
14 | ||
15 | Ext.define('PMG.SpamArchive', { | |
16 | extend: 'Ext.grid.GridPanel', | |
17 | xtype: 'pmgSpamArchive', | |
18 | ||
19 | controller: { | |
20 | ||
21 | xclass: 'Ext.app.ViewController', | |
22 | ||
23 | init: function(view) { | |
24 | view.store.load({ | |
25 | callback: function() { | |
26 | view.getSelectionModel().select(0); | |
27 | } | |
28 | }); | |
29 | } | |
30 | }, | |
31 | ||
32 | store: { | |
33 | model: 'pmg-spam-archive' | |
34 | }, | |
35 | ||
36 | columns: [ | |
37 | { | |
38 | xtype: 'datecolumn', | |
39 | header: gettext('Date'), | |
40 | format: 'Y-m-d', | |
41 | dataIndex: 'day', | |
42 | flex: 1 | |
43 | }, | |
44 | { | |
45 | header: gettext('Count'), | |
46 | dataIndex: 'count', | |
47 | flex: 1 | |
48 | }, | |
49 | { | |
50 | header: gettext('Spam level'), | |
51 | dataIndex: 'spamavg', | |
52 | flex: 1 | |
53 | } | |
54 | ] | |
55 | }); | |
56 | ||
57 | Ext.define('pmg-spam-list', { | |
58 | extend: 'Ext.data.Model', | |
59 | fields: [ 'id', 'envelope_sender', 'from', 'sender', 'receiver', 'subject', | |
60 | { type: 'number', name: 'bytes' }, | |
61 | { type: 'integer', name: 'bytes' }, | |
62 | { type: 'date', dateFormat: 'timestamp', name: 'time' } | |
63 | ], | |
64 | proxy: { | |
65 | type: 'proxmox', | |
66 | }, | |
67 | idProperty: 'id' | |
68 | }); | |
69 | ||
70 | Ext.define('PMG.SpamList', { | |
71 | extend: 'Ext.grid.GridPanel', | |
72 | xtype: 'pmgSpamList', | |
73 | ||
74 | setDay: function(day) { | |
75 | var me = this; | |
76 | ||
77 | me.setTitle(Ext.Date.format(day, "F j Y")); | |
78 | me.store.load({ | |
79 | url: "/api2/json/quarantine/spam/" + (day.getTime() / 1000) | |
80 | }); | |
81 | }, | |
82 | ||
83 | store: { | |
84 | model: 'pmg-spam-list', | |
85 | }, | |
86 | ||
87 | tbar: [ | |
88 | { | |
89 | text: gettext('Whitelist') | |
90 | }, | |
91 | { | |
92 | text: gettext('Blacklist') | |
93 | }, | |
94 | { | |
95 | text: gettext('Deliver') | |
96 | }, | |
97 | { | |
98 | text: gettext('Delete') | |
99 | } | |
100 | ], | |
101 | ||
102 | columns: [ | |
103 | { | |
104 | header: gettext('Sender/Subject'), | |
105 | dataIndex: 'subject', | |
106 | flex: 1 | |
107 | }, | |
108 | { | |
109 | header: gettext('Arrival Time'), | |
110 | dataIndex: 'time', | |
111 | flex: 1 | |
112 | } | |
113 | ] | |
114 | }); | |
115 | ||
0277bfeb | 116 | Ext.define('PMG.SpamQuarantine', { |
d9c3552a | 117 | extend: 'Ext.container.Container', |
0277bfeb DM |
118 | xtype: 'pmgSpamQuarantine', |
119 | ||
0277bfeb | 120 | border: false, |
d9c3552a DM |
121 | layout: 'border', |
122 | ||
0277bfeb DM |
123 | defaults: { border: false }, |
124 | ||
d9c3552a DM |
125 | controller: { |
126 | ||
127 | xclass: 'Ext.app.ViewController', | |
128 | ||
129 | init: function(view) { | |
130 | }, | |
131 | ||
132 | onSelectDay: function() { | |
133 | var view = this.getView(); | |
134 | ||
135 | var grid = this.lookupReference('archive'); | |
136 | var rec = grid.selModel.getSelection()[0]; | |
137 | ||
138 | if (!rec || !rec.data || !rec.data.day) return; | |
139 | ||
140 | var spamlist = this.lookupReference('spamlist'); | |
141 | spamlist.setDay(rec.data.day); | |
142 | }, | |
143 | ||
144 | onSelectMail: function() { | |
145 | var spamlist = this.lookupReference('spamlist'); | |
146 | var rec = spamlist.selModel.getSelection()[0]; | |
147 | ||
148 | var preview = this.lookupReference('preview'); | |
149 | ||
150 | if (!rec || !rec.data || !rec.data.id) { | |
151 | preview.update(''); | |
152 | return; | |
153 | } | |
154 | ||
155 | var url = '/api2/htmlmail/quarantine/content?id=' + rec.data.id; | |
156 | preview.update("<iframe frameborder=0 width=100% height=100% src='" + url +"'></iframe>"); | |
157 | }, | |
158 | }, | |
159 | ||
0277bfeb DM |
160 | items: [ |
161 | { | |
d9c3552a DM |
162 | xtype: 'pmgSpamArchive', |
163 | reference: 'archive', | |
164 | region: 'west', | |
165 | width: 320, | |
166 | split: true, | |
167 | ||
168 | listeners: { | |
169 | selectionChange: 'onSelectDay' | |
170 | } | |
0277bfeb DM |
171 | }, |
172 | { | |
d9c3552a DM |
173 | xtype: 'panel', |
174 | region: 'center', | |
175 | layout: { type: 'vbox', align: 'stretch' }, | |
176 | items: [ | |
177 | { | |
178 | xtype: 'pmgSpamList', | |
179 | reference: 'spamlist', | |
180 | height: 300, | |
181 | listeners: { | |
182 | selectionChange: 'onSelectMail' | |
183 | } | |
184 | }, | |
185 | { | |
186 | split: true, | |
187 | flex: 1, | |
188 | reference: 'preview', | |
189 | } | |
190 | ] | |
0277bfeb DM |
191 | } |
192 | ] | |
193 | }); |