revamp mod.js add ban function
This commit is contained in:
		@@ -18,20 +18,63 @@ function get_longhash(str) {
 | 
				
			|||||||
  return 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
 | 
					// handle delete command
 | 
				
			||||||
function nntpchan_delete() {
 | 
					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
 | 
					  // get the element
 | 
				
			||||||
  var input = document.getElementById("nntpchan_mod_delete");
 | 
					  var input = document.getElementById("nntpchan_mod_target");
 | 
				
			||||||
  // get the long hash
 | 
					  // get the long hash
 | 
				
			||||||
  var longhash = get_longhash(input.value);
 | 
					  var longhash = get_longhash(input.value);
 | 
				
			||||||
  // TODO: check long hash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var elem = document.getElementById("nntpchan_mod_result");
 | 
					  var elem = document.getElementById("nntpchan_mod_result");
 | 
				
			||||||
  // clear old results
 | 
					  // clear old results
 | 
				
			||||||
  while( elem.firstChild ) {
 | 
					  while( elem.firstChild ) {
 | 
				
			||||||
    elem.removeChild(elem.firstChild);
 | 
					    elem.removeChild(elem.firstChild);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // fire off ajax
 | 
					  // fire off ajax
 | 
				
			||||||
  var ajax = new XMLHttpRequest();
 | 
					  var ajax = new XMLHttpRequest();
 | 
				
			||||||
  ajax.onreadystatechange = function() {
 | 
					  ajax.onreadystatechange = function() {
 | 
				
			||||||
@@ -46,18 +89,17 @@ function nntpchan_delete() {
 | 
				
			|||||||
          var e = document.createTextNode(j.error);
 | 
					          var e = document.createTextNode(j.error);
 | 
				
			||||||
          elem.appendChild(e);
 | 
					          elem.appendChild(e);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          if ( j.deleted ) {
 | 
					          if (mod_action.handle) {
 | 
				
			||||||
            for ( var idx = 0 ; idx < j.deleted.length ; idx ++ ) {
 | 
					            var result = mod_action.handle(j);
 | 
				
			||||||
              var deltxt = "deleted " + j.deleted[idx];
 | 
					            if (result) {
 | 
				
			||||||
              var e = document.createTextNode(deltxt);
 | 
					              elem.appendChild(result);
 | 
				
			||||||
              elem.appendChild(e);
 | 
					            } else {
 | 
				
			||||||
 | 
					              // fail
 | 
				
			||||||
 | 
					              alert("mod action failed, handler returned nothing");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          } else {
 | 
				
			||||||
          if ( j.notdeleted ) {
 | 
					            // fail
 | 
				
			||||||
            for ( var idx = 0 ; idx < j.notdeleted.length ; idx ++ ) {
 | 
					            alert("mod action has no handler");
 | 
				
			||||||
              var deltxt = "failed to delete " + j.notdeleted[idx];
 | 
					 | 
				
			||||||
              var e = document.createTextNode(deltxt);
 | 
					 | 
				
			||||||
              elem.appendChild(e);
 | 
					 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -66,9 +108,14 @@ function nntpchan_delete() {
 | 
				
			|||||||
      // http error
 | 
					      // http error
 | 
				
			||||||
      elem.innerHTML = "error: HTTP "+status;
 | 
					      elem.innerHTML = "error: HTTP "+status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    // clear input
 | 
				
			||||||
    input.value = "";
 | 
					    input.value = "";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					  if (mod_action.name) {
 | 
				
			||||||
  ajax.open("GET", "del/"+longhash);
 | 
					    var url = mod_action.name + "/" + longhash;
 | 
				
			||||||
 | 
					    ajax.open("GET", url);
 | 
				
			||||||
    ajax.send();
 | 
					    ajax.send();
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    alert("mod action has no name");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,12 +16,13 @@
 | 
				
			|||||||
      <div> post actions </div>
 | 
					      <div> post actions </div>
 | 
				
			||||||
      <hr />
 | 
					      <hr />
 | 
				
			||||||
      <div>
 | 
					      <div>
 | 
				
			||||||
        <label for="nntpchan_mod_delete">delete by url</label>
 | 
					        <label for="nntpchan_mod_target">url</label>
 | 
				
			||||||
        <input id="nntpchan_mod_delete" type="text" />
 | 
					        <input id="nntpchan_mod_target" type="text" />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <button id="nntpchan_mod" onclick="nntpchan_delete()">go</button>
 | 
					      <button onclick="nntpchan_delete()">delete</button>
 | 
				
			||||||
      <span id="nntpchan_mod_result"></span>
 | 
					      <button onclick="nntpchan_ban()">ban</button>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div id="nntpchan_mod_result"></div>
 | 
				
			||||||
    <noscript>
 | 
					    <noscript>
 | 
				
			||||||
      <b>enable js to use the mod panel kthx</b>
 | 
					      <b>enable js to use the mod panel kthx</b>
 | 
				
			||||||
    </noscript>
 | 
					    </noscript>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user