mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2024-12-25 02:29:32 +02:00
119 lines
3.5 KiB
JavaScript
119 lines
3.5 KiB
JavaScript
|
jQuery(function($){
|
||
|
|
||
|
$(".refresh_table").on('click', function(e) {
|
||
|
e.preventDefault();
|
||
|
var table_name = $(this).data('table');
|
||
|
$('#' + table_name).DataTable().ajax.reload();
|
||
|
});
|
||
|
|
||
|
// Queue item
|
||
|
$('#showQueuedMsg').on('show.bs.modal', function (e) {
|
||
|
$('#queue_msg_content').text(lang.loading);
|
||
|
button = $(e.relatedTarget)
|
||
|
if (button != null) {
|
||
|
$('#queue_id').text(button.data('queue-id'));
|
||
|
}
|
||
|
$.ajax({
|
||
|
type: 'GET',
|
||
|
url: '/api/v1/get/postcat/' + button.data('queue-id'),
|
||
|
dataType: 'text',
|
||
|
complete: function (data) {
|
||
|
$('#queue_msg_content').text(data.responseText);
|
||
|
}
|
||
|
});
|
||
|
})
|
||
|
|
||
|
function draw_queue() {
|
||
|
// just recalc width if instance already exists
|
||
|
if ($.fn.DataTable.isDataTable('#queuetable') ) {
|
||
|
$('#queuetable').DataTable().columns.adjust().responsive.recalc();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$('#queuetable').DataTable({
|
||
|
processing: true,
|
||
|
serverSide: false,
|
||
|
language: lang_datatables,
|
||
|
ajax: {
|
||
|
type: "GET",
|
||
|
url: "/api/v1/get/mailq/all",
|
||
|
dataSrc: function(data){
|
||
|
$.each(data, function (i, item) {
|
||
|
item.chkbox = '<input type="checkbox" data-id="mailqitems" name="multi_select" value="' + item.queue_id + '" />';
|
||
|
rcpts = $.map(item.recipients, function(i) {
|
||
|
return escapeHtml(i);
|
||
|
});
|
||
|
item.recipients = rcpts.join('<hr style="margin:1px!important">');
|
||
|
item.action = '<div class="btn-group">' +
|
||
|
'<a href="#" data-bs-toggle="modal" data-bs-target="#showQueuedMsg" data-queue-id="' + encodeURI(item.queue_id) + '" class="btn btn-xs btn-secondary">' + lang.queue_show_message + '</a>' +
|
||
|
'</div>';
|
||
|
});
|
||
|
return data;
|
||
|
}
|
||
|
},
|
||
|
columns: [
|
||
|
{
|
||
|
// placeholder, so checkbox will not block child row toggle
|
||
|
title: '',
|
||
|
data: null,
|
||
|
searchable: false,
|
||
|
orderable: false,
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: '',
|
||
|
data: 'chkbox',
|
||
|
searchable: false,
|
||
|
orderable: false,
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: 'QID',
|
||
|
data: 'queue_id',
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: 'Queue',
|
||
|
data: 'queue_name',
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: lang.arrival_time,
|
||
|
data: 'arrival_time',
|
||
|
defaultContent: '',
|
||
|
render: function (data, type){
|
||
|
var date = new Date(data ? data * 1000 : 0);
|
||
|
return date.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
title: lang.message_size,
|
||
|
data: 'message_size',
|
||
|
defaultContent: '',
|
||
|
render: function (data, type){
|
||
|
return humanFileSize(data);
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
title: lang.sender,
|
||
|
data: 'sender',
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: lang.recipients,
|
||
|
data: 'recipients',
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
{
|
||
|
title: lang.action,
|
||
|
data: 'action',
|
||
|
className: 'text-md-end dt-sm-head-hidden dt-body-right',
|
||
|
defaultContent: ''
|
||
|
},
|
||
|
]
|
||
|
});
|
||
|
}
|
||
|
|
||
|
draw_queue();
|
||
|
|
||
|
})
|