From 7ec109cdd8a53d9345353dda0603272e9395fca6 Mon Sep 17 00:00:00 2001 From: echicken <echicken@bbs.electronicchicken.com> Date: Sun, 8 Jan 2017 12:04:23 -0500 Subject: [PATCH] Removed 000-mail.ssjs, added new 000-mail.xjs private mail page. Added delete-mail API call and backend function for deletion of multiple messages. Select-all and delete-selected-messages now available on the mail page. --- web/lib/forum.js | 20 ++++++++- web/root/api/forum.ssjs | 96 +++++++++++++++++++++++++---------------- 2 files changed, 79 insertions(+), 37 deletions(-) diff --git a/web/lib/forum.js b/web/lib/forum.js index da1b292f42..231f32cbc4 100644 --- a/web/lib/forum.js +++ b/web/lib/forum.js @@ -572,7 +572,6 @@ function deleteMessage(sub, number) { var msgBase = new MsgBase(sub); if (!msgBase.open()) return false; var header = msgBase.get_msg_header(number); - log(JSON.stringify(header)); if (header === null) return false; if (sub === 'mail' && (header.to_ext == user.number || header.from_ext == user.number) @@ -587,6 +586,25 @@ function deleteMessage(sub, number) { return ret; } +function deleteMail(numbers) { + if (typeof numbers === 'undefined' || !Array.isArray(numbers)) return false; + var msgBase = new MsgBase('mail'); + if (!msgBase.open()) return false; + numbers.forEach( + function (e) { + e = parseInt(e); + if (isNaN(e) || e < msgBase.first_msg || e > msgBase.last_msg) return; + var header = msgBase.get_msg_header(e); + if (header === null) return; + if (header.to_ext == user.number || header.from_ext == user.number) { + msgBase.remove_msg(e); + } + } + ); + msgBase.close(); + return true; +} + function voteMessage(sub, number, up) { if (typeof msg_area.sub[sub] === 'undefined' && sub !== 'mail') { return false; diff --git a/web/root/api/forum.ssjs b/web/root/api/forum.ssjs index 063eca097f..fe15e56154 100644 --- a/web/root/api/forum.ssjs +++ b/web/root/api/forum.ssjs @@ -23,42 +23,6 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && switch(http_request.query.call[0].toLowerCase()) { - case 'list-groups': - reply = listGroups(); - break; - - case 'list-subs': - if (typeof http_request.query.group !== 'undefined') { - reply = listSubs(http_request.query.group[0]); - } - break; - - case 'list-threads': - if (typeof http_request.query.sub !== 'undefined') { - reply = listThreads(http_request.query.sub[0]); - } - break; - - case 'get-group-unread-count': - if (typeof http_request.query.group !== 'undefined') { - http_request.query.group.forEach( - function(group) { - reply[group] = getGroupUnreadCount(group); - } - ); - } - break; - - case 'get-sub-unread-count': - if (typeof http_request.query.sub !== 'undefined') { - http_request.query.sub.forEach( - function(sub) { - reply[sub] = getSubUnreadCount(sub); - } - ); - } - break; - case 'get-mail-unread-count': reply.count = getMailUnreadCount(); break; @@ -118,6 +82,14 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && } break; + case 'delete-mail': + if (typeof http_request.query.number !== 'undefined') { + reply.success = deleteMail(http_request.query.number); + } else { + reply.success = false; + } + break; + case 'set-scan-cfg': if (typeof http_request.query.sub !== 'undefined' && typeof http_request.query.cfg !== 'undefined' @@ -188,7 +160,9 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && // Unauthenticated calls if (!handled) { + switch(http_request.query.call[0].toLowerCase()) { + case 'get-thread-votes': if (typeof http_request.query.sub !== 'undefined' && typeof http_request.query.id !== 'undefined' @@ -202,11 +176,13 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && } } break; + case 'get-sub-votes': if (typeof http_request.query.sub !== 'undefined') { reply = getVotesInThreads(http_request.query.sub[0]); } break; + case 'get-poll-results': if (typeof http_request.query.sub !== 'undefined' && typeof http_request.query.id !== 'undefined' @@ -217,9 +193,57 @@ if ((http_request.method === 'GET' || http_request.method === 'POST') && ); } break; + + case 'list-groups': + reply = listGroups(); + break; + + case 'list-subs': + if (typeof http_request.query.group !== 'undefined') { + reply = listSubs(http_request.query.group[0]); + } + break; + + case 'list-threads': + if (typeof http_request.query.sub !== 'undefined' && + typeof http_request.query.offset !== 'undefined' + ) { + if (typeof http_request.query.count !== 'undefined') { + var count = http_request.query.count[0]; + } + reply = listThreads( + http_request.query.sub[0], + http_request.query.offset[0], + count || settings.page_size + ); + } + break; + + case 'get-group-unread-count': + if (typeof http_request.query.group !== 'undefined') { + http_request.query.group.forEach( + function(group) { + reply[group] = getGroupUnreadCount(group); + } + ); + } + break; + + case 'get-sub-unread-count': + if (typeof http_request.query.sub !== 'undefined') { + http_request.query.sub.forEach( + function(sub) { + reply[sub] = getSubUnreadCount(sub); + } + ); + } + break; + default: break; + } + } } -- GitLab