]> git.proxmox.com Git - pmg-gui.git/blame - js/AttachmentQuarantine.js
tree wide: eslint --fix
[pmg-gui.git] / js / AttachmentQuarantine.js
CommitLineData
0023ef6a
DC
1/*global Proxmox*/
2/*jslint confusion: true*/
3/*format is a string and a function*/
4Ext.define('pmg-attachment-list', {
5 extend: 'Ext.data.Model',
c87d46fb 6 fields: ['id', 'envelope_sender', 'from', 'sender', 'receiver', 'subject',
0023ef6a
DC
7 { type: 'integer', name: 'bytes' },
8 { type: 'date', dateFormat: 'timestamp', name: 'time' },
9 {
10 type: 'string',
11 name: 'day',
12 convert: function(v, rec) {
13 return Ext.Date.format(rec.get('time'), 'Y-m-d');
c87d46fb
TL
14 }, depends: ['time'],
15 },
0023ef6a
DC
16 ],
17 proxy: {
18 type: 'proxmox',
c87d46fb 19 url: "/api2/json/quarantine/attachment",
0023ef6a 20 },
c87d46fb 21 idProperty: 'id',
0023ef6a
DC
22});
23
24Ext.define('PMG.AttachmentQuarantine', {
25 extend: 'Ext.container.Container',
26 xtype: 'pmgAttachmentQuarantine',
27
28 border: false,
29 layout: { type: 'border' },
30
31 defaults: { border: false },
32
33 controller: {
34
35 xclass: 'Ext.app.ViewController',
36
37 updatePreview: function(raw, rec) {
38 var preview = this.lookupReference('preview');
39
c87d46fb 40 if (!rec || !rec.data || !rec.data.id) {
0023ef6a
DC
41 preview.update('');
42 preview.setDisabled(true);
43 return;
44 }
45
c87d46fb 46 var url = '/api2/htmlmail/quarantine/content?id=' + rec.data.id + (raw?'&raw=1':'');
0023ef6a
DC
47 preview.setDisabled(false);
48 preview.update("<iframe frameborder=0 width=100% height=100% sandbox='allow-same-origin' src='" + url +"'></iframe>");
49 },
50
51 toggleRaw: function(button) {
52 var me = this;
53 var list = this.lookupReference('list');
54 var rec = list.getSelection()[0] || {};
4935e8fb 55 me.lookup('mailinfo').setVisible(me.raw);
0023ef6a
DC
56 me.raw = !me.raw;
57 me.updatePreview(me.raw, rec);
58 },
59
60 btnHandler: function(button, e) {
61 var list = this.lookupReference('list');
62 var selected = list.getSelection();
63 if (!selected.length) {
64 return;
65 }
66
67 var action = button.reference;
68
69 PMG.Utils.doQuarantineAction(action, selected[0].data.id, function() {
70 list.getController().load();
71 });
72 },
73
74 onSelectMail: function() {
ac6c1fb8
DC
75 let me = this;
76 let list = me.lookup('list');
77 let rec = list.getSelection()[0] || {};
78 let mailinfo = me.lookup('mailinfo');
0023ef6a
DC
79
80 me.updatePreview(me.raw || false, rec);
ac6c1fb8 81 me.lookup('attachmentlist').setID(rec);
72d8403c 82 mailinfo.setVisible(!!rec.data && !me.raw);
ac6c1fb8 83 mailinfo.update(rec.data);
0023ef6a
DC
84 },
85
86 control: {
87 'button[reference=raw]': {
c87d46fb 88 click: 'toggleRaw',
0023ef6a
DC
89 },
90 'pmgQuarantineList': {
c87d46fb
TL
91 selectionChange: 'onSelectMail',
92 },
93 },
0023ef6a
DC
94
95 },
96
97 items: [
98 {
99 title: gettext('Attachment Quarantine'),
100 xtype: 'pmgQuarantineList',
101 emptyText: gettext('No data in database'),
102 emailSelection: false,
103 reference: 'list',
104 region: 'west',
105 width: 500,
106 split: true,
107 collapsible: false,
108 store: {
109 model: 'pmg-attachment-list',
110 groupField: 'day',
111 groupDir: 'DESC',
112 sorters: [{
113 property: 'time',
c87d46fb
TL
114 direction: 'DESC',
115 }],
0023ef6a
DC
116 },
117
118 columns: [
119 {
120 header: gettext('Sender/Subject'),
121 dataIndex: 'subject',
122 renderer: PMG.Utils.sender_renderer,
c87d46fb 123 flex: 1,
0023ef6a
DC
124 },
125 {
126 header: gettext('Size') + ' (KB)',
127 renderer: function(v) { return Ext.Number.toFixed(v/1024, 0); },
128 dataIndex: 'bytes',
129 align: 'right',
c87d46fb 130 width: 90,
0023ef6a
DC
131 },
132 {
133 header: gettext('Date'),
134 dataIndex: 'day',
c87d46fb 135 hidden: true,
0023ef6a
DC
136 },
137 {
138 xtype: 'datecolumn',
139 header: gettext('Time'),
140 dataIndex: 'time',
c87d46fb
TL
141 format: 'H:i:s',
142 },
143 ],
0023ef6a
DC
144 },
145 {
146 title: gettext('Selected Mail'),
147 border: false,
148 region: 'center',
149 split: true,
150 reference: 'preview',
151 disabled: true,
152 dockedItems: [
153 {
154 xtype: 'toolbar',
155 dock: 'top',
156 items: [
157 {
158 xtype: 'button',
159 reference: 'raw',
160 text: gettext('Toggle Raw'),
161 enableToggle: true,
c87d46fb 162 iconCls: 'fa fa-file-code-o',
0023ef6a
DC
163 },
164 '->',
165 {
166 reference: 'deliver',
167 text: gettext('Deliver'),
168 iconCls: 'fa fa-paper-plane-o',
c87d46fb 169 handler: 'btnHandler',
0023ef6a
DC
170 },
171 {
172 reference: 'delete',
173 text: gettext('Delete'),
174 iconCls: 'fa fa-trash-o',
c87d46fb
TL
175 handler: 'btnHandler',
176 },
177 ],
0023ef6a
DC
178 },
179 {
180 xtype: 'pmgAttachmentGrid',
181 minHeight: 50,
182 maxHeight: 250,
183 scrollable: true,
184 reference: 'attachmentlist',
ac6c1fb8
DC
185 },
186 {
187 xtype: 'pmgMailInfo',
188 hidden: true,
189 reference: 'mailinfo',
190 },
c87d46fb
TL
191 ],
192 },
193 ],
0023ef6a 194});