function disableList(listEmail){
$.post('/api/list/disable',{list:listEmail},showListResult,'json');
}
function dropList(listEmail){
console.log('dopList('+listEmail+')');
}
function enableList(listEmail){
$.post('/api/list/enable',{list:listEmail},showListResult,'json');
}
function hideList(listEmail){
$.post('/api/list/hide',{list:listEmail},showListResult,'json');
}
function loadListAdminList(){
$.getJSON('/api/list/list', showListAdminList);
}
function loadListList(){
$.getJSON('/api/list/list', showListList);
}
function loadMembers(listEmail){
$.post('/api/list/members',{list:listEmail},showMembers,'json');
}
function loadUserList(){
$.getJSON('/api/user/list', showUserList);
}
function reload(){
window.location.reload(true);
}
function showList(listEmail){
$.post('/api/list/show',{list:listEmail},showListResult,'json');
}
function showListAdminList(data){
for (let i in data.lists){
let list = data.lists[i];
let row = $('
');
let addr = list.email.prefix+'@'+list.email.domain;
let inspect = 'inspect?list='+addr;
let td = $('
').text(list.state).appendTo(row);
let select = $('',{name:addr}).change(function () {
let action = $(this).children("option:selected").val();
let list = $(this).attr('name');
if (confirm("This will "+action+" '"+list+"'. Are you sure?"))self[action+'List'](list);
});
$('').text('Actions').appendTo(select);
['enable','disable','drop','hide','show','test'].forEach(val => $('',{value:val}).text(val).appendTo(select));
select.appendTo($('
')).appendTo(row);
$('
').text(list.imap_host).appendTo(row);
$('
').text(list.imap_port).appendTo(row);
$('
').text(list.imap_user).appendTo(row);
$('
').text(list.smtp_host).appendTo(row);
$('
').text(list.smtp_port).appendTo(row);
$('
').text(list.smtp_user).appendTo(row);
row.appendTo('#listlist');
}
if (data.user.name == 'Admin'){
$('a[href=register]').show();
} else {
$('a[href=register]').hide();
}
}
function showListList(data){
for (let i in data.lists){
let list = data.lists[i];
let row = $('
',{class:'actions'});
$('',{onclick:"subscribeTo('"+list.email.domain+"', '"+list.email.prefix+"');"}).text('subscribe').appendTo(td);
$('',{onclick:"unsubscribeFrom('"+list.email.domain+"', '"+list.email.prefix+"');"}).text('unsubcribe').appendTo(td);
td.appendTo(row);
row.appendTo('#listlist');
}
}
function showListResult(result){
console.log(result);
if ('error' in result){
alert(result.error);
return;
}
if ('success' in result){
alert(result.success);
reload();
return;
}
alert("Api call did not return result");
}
function showMembers(data){
for (let i in data.members){
let member = data.members[i];
let row = $('
');
$('
').text(member.name).appendTo(row);
$('
').text(member.email).appendTo(row);
$('
').text(member.state).appendTo(row);
row.appendTo('#memberlist');
}
}
function showUserList(data){
for (let i in data.users){
let user = data.users[i];
let row = $('
');
$('
').text(user.name).appendTo(row);
$('
').text(user.email).appendTo(row);
$('
').text(user.password).appendTo(row);
row.appendTo('#userlist');
}
if (data.user.name == 'Admin'){
$('a[href=register]').show();
} else {
$('a[href=register]').hide();
}
}
function start(){
console.log("application started");
}
function subscribeTo(domain,prefix){
window.location.href='subscribe?list='+prefix+'@'+domain;
}
function testList(listEmail){
$.post('/api/list/test',{list:listEmail},showListResult,'json');
}
function unsubscribeFrom(domain,prefix){
window.location.href='unsubscribe?list='+prefix+'@'+domain;
}
$(start); // document.on ready