User:Saintrain/J/deSpamWiki.js
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//<pre>
//================ deSpamWiki ============================================================
function deSpamWiki()
{
var GBUG = false;
var BUG = GBUG;
var SpamObj = { id:"", class:"", clsNdx:0, act:"" };
var spamList = new Array();
var sndx = 0;
///-m- spamList[sndx] = SpamObj = { id : "newarticletext", act : "delete node" }; sndx++;
///-m- spamList[sndx] = SpamObj = { id : "userinvalidcssjstitle", act : "delete node" }; sndx++;
///-m- spamList[sndx] = SpamObj = { id : "editpage-copywarn", act : "delete node" }; sndx++;
///-m- spamList[sndx] = SpamObj = { id : "editpage-copywarn2", act : "delete node" }; sndx++;
///-m- spamList[sndx] = SpamObj = { id : "editpage-copywarn3", act : "delete node" }; sndx++;
spamList[sndx] = SpamObj = { id : "editpage-specialchars", act : "hide node" }; sndx++;
///-m- spamList[sndx] = SpamObj = { id : "talkpagetext", act : "delete node" }; sndx++;
for(var s=0; s<spamList.length; s++) {
if(BUG)console.log('dSW: spamList[',s,'].id={',spamList[s].id,'} .class={',spamList[s].class,'} .act={',spamList[s].act,'} ');
var spamStr;
with( spamList[s] ) {
if( "" != id ) {
spamStr = id;
var spam = document.getElementById( id );
}
else if( "" != class ) {
spamStr = class;
var hits = document.getElementsByClass( class, null, null );
if( hits )
var spam = hits[clsNdx]; // this is silly! just use 1st.
}
else { if(BUG)console.log('dSW: spamList[s][',s,'].id == .class == "" '); continue; }
if ( !spam ) { if(BUG)console.log('dSW: NO FIND spam={',spamStr,'}' ); continue; }
switch( act ) {
case "delete node": //========== "delete node" =======================================
if( !GBUG ) BUG = false;
var spamMom = spam.parentNode;
if ( !spamMom ) { if(BUG)console.log('dSW: NO FIND spam={',spamStr,'}.parentNode' ); continue; }
spamMom.removeChild( spam );
spam = null;
break;
case "hide node": //========== "hide node" =======================================
if( !GBUG ) BUG = false;
var spamMom = spam.parentNode;
if ( !spamMom ) { if(BUG)console.log('dSW: NO FIND spam={',spamStr,'}.parentNode' ); continue; }
var hndx = 666 + s; // bump index so as not to interfere with "legit" navframe stuff
var NavFrame = document.createElement("div");
NavFrame.setAttribute('id', 'NavFrame' + hndx );
NavFrame.className = 'NavFrame';
spamMom.insertBefore( NavFrame, spam );
var NavHead = document.createElement( "div" );
NavHead.textContent = spamStr;
NavHead.className = 'NavHead';
NavFrame.appendChild( NavHead );
var NavToggle = document.createElement("a");
NavHead.appendChild( NavToggle );
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + hndx );
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + hndx + ');');
NavToggle.textContent = "[hide]";
spam.id = "NavFrame" + hndx;
spam.className += " NavContent";
NavFrame.appendChild( spam ); // re-parents "spam"
toggleNavigationBar( hndx );
break;
case "delete last kids": //========== "delete last kids" =======================================
if( !GBUG ) BUG = false;
if( ! spam.hasChildNodes()) { if(BUG)console.log('dSW: NO FIND spam={',spamStr,'}.hasChildNodes()' ); continue; }
var c0 = spam.firstChild;
if(BUG)console.log('dSW: LEAVING: tagName={',c0.tagName,'}, name={',c0.name,'}, kid=',c0 );
if(BUG)console.log(' innerHTML={',c0.innerHTML,'}' );
while( 1 < spam.childNodes.length ) {
var lc = spam.lastChild;
if(BUG)console.log('dSW: removing: tagName={',lc.tagName,'}, name={',lc.name,'}, kid=',lc );
if(BUG)console.log(' innerHTML={',lc.innerHTML,'}' );
spam.removeChild( spam.lastChild );
if(BUG)console.log(' ');
}
break;
case "delete last tags": //========== "delete last tags" =======================================
if( !GBUG ) BUG = false;
if( ! spam.hasChildNodes()) { if(BUG)console.log('dSW: NO FIND spam={',spamStr,'}.hasChildNodes()' ); continue; }
var it0 = -1;
for(k=0; k<spam.childNodes.length; k++) {
if( spam.childNodes[k].tagName ) { // 1st tag
it0 = k + 1;
break;
}
}
if( it0 < 0 ) // no tags
break;
var tag0 = spam.childNodes[it0];
if(BUG)console.log('dSW: LEAVING: tagName={',tag0.tagName,'}, name={',tag0.name,'}, kid=',tag0 );
if(BUG)console.log(' innerHTML={',tag0.innerHTML,'}' );
while( it0 < spam.childNodes.length ) {
var lc = spam.lastChild;
if(BUG)console.log('dSW: removing: tagName={',lc.tagName,'}, name={',lc.name,'}, kid=',lc );
if(BUG)console.log(' innerHTML={',lc.innerHTML,'}' );
spam.removeChild( spam.lastChild );
if(BUG)console.log(' ');
}
break;
default:
if(BUG)console.log('dSW: UNKNOWN act[',s,'] = {',act,'}.' );
continue;
} // switch
} // with( spam )
BUG = GBUG;
} // for(s)
}
//============================================================================
addOnloadHook( deSpamWiki);
//</pre>