diff --git a/contrib/static/mod.js b/contrib/static/mod.js index 0fcaae6..506fafd 100644 --- a/contrib/static/mod.js +++ b/contrib/static/mod.js @@ -18,20 +18,63 @@ function get_longhash(str) { return str; } +// handle ban command +function nntpchan_ban() { + nntpchan_mod({ + name: "ban", + handle: function(j) { + if (j.banned) { + return document.createTextNode(j.banned); + } + } + }); +} + + // handle delete command function nntpchan_delete() { + nntpchan_mod({ + name: "del", + handle: function(j) { + var elem = document.createElement("div"); + if (j.deleted) { + for ( var idx = 0 ; idx < j.deleted.length ; idx ++ ) { + var msg = "deleted: " + j.deleted[idx]; + var e = document.createTextNode(msg); + var el = document.createElement("div"); + el.appendChild(e); + elem.appendChild(el); + } + } + if (j.notdeleted) { + for ( var idx = 0 ; idx < j.notdeleted.length ; idx ++ ) { + var msg = "not deleted: " + j.notdeleted[idx]; + var e = document.createTextNode(msg); + var el = document.createElement("div"); + el.appendChild(e); + elem.appendChild(el); + } + } + return elem; + } + }); +} + + +function nntpchan_mod(mod_action) { + // get the element - var input = document.getElementById("nntpchan_mod_delete"); + var input = document.getElementById("nntpchan_mod_target"); // get the long hash var longhash = get_longhash(input.value); - // TODO: check long hash - var elem = document.getElementById("nntpchan_mod_result"); // clear old results while( elem.firstChild ) { elem.removeChild(elem.firstChild); } + + // fire off ajax var ajax = new XMLHttpRequest(); ajax.onreadystatechange = function() { @@ -46,29 +89,33 @@ function nntpchan_delete() { var e = document.createTextNode(j.error); elem.appendChild(e); } else { - if ( j.deleted ) { - for ( var idx = 0 ; idx < j.deleted.length ; idx ++ ) { - var deltxt = "deleted " + j.deleted[idx]; - var e = document.createTextNode(deltxt); - elem.appendChild(e); - } - } - if ( j.notdeleted ) { - for ( var idx = 0 ; idx < j.notdeleted.length ; idx ++ ) { - var deltxt = "failed to delete " + j.notdeleted[idx]; - var e = document.createTextNode(deltxt); - elem.appendChild(e); + if (mod_action.handle) { + var result = mod_action.handle(j); + if (result) { + elem.appendChild(result); + } else { + // fail + alert("mod action failed, handler returned nothing"); } + } else { + // fail + alert("mod action has no handler"); } } - } else { - // nah - // http error - elem.innerHTML = "error: HTTP "+status; } - input.value = ""; + } else { + // nah + // http error + elem.innerHTML = "error: HTTP "+status; } + // clear input + input.value = ""; + } + if (mod_action.name) { + var url = mod_action.name + "/" + longhash; + ajax.open("GET", url); + ajax.send(); + } else { + alert("mod action has no name"); } - ajax.open("GET", "del/"+longhash); - ajax.send(); } diff --git a/contrib/templates/default/modpage.mustache b/contrib/templates/default/modpage.mustache index 3cd6437..1a933d3 100644 --- a/contrib/templates/default/modpage.mustache +++ b/contrib/templates/default/modpage.mustache @@ -16,12 +16,13 @@
post actions

- - + +
- - + + +