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