User:GeorgeMoney/UserScripts/autodel

From Wikipedia, the free encyclopedia

//

autodel = {};
autodel.enabled = true;
autodel.default_summary = 'Per CSD.';
autodel.delete_talks = true;
autodel.delete_talks_summary = 'Per CSD G8. The reason for deleting the non-talk page was: $1';

if(autodel.enabled) {

function query_string_get(paramName) {
  var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  var h=document.location;
  var m;
  if (m=cmdRe.exec(h)) {
    try { 
      return unescape(m[1]);
    } catch (someError) {}
  }
  return null;
};

addOnloadHook(function() {
        addPortletLink('p-cactions', "javascript:prepare_for_autodel()", "links autodel", 'ca-autodellinks', 'Alter all the links on this page to autodel the page when clicked');
});

if(query_string_get('autodel') != null && query_string_get('action') == 'delete') {
        addOnloadHook(function() {
                var reasonbox = document.getElementById('wpReason');
                if(!reasonbox) window.close();
                var olddelsum = reasonbox.value;
                var newdelsum = query_string_get('autodel')+' '+olddelsum;
                reasonbox.value = newdelsum;
                var inputs = document.getElementsByTagName('input');
                if(!inputs) window.close();
                for (i=0; i<inputs.length; i++) {
                        if (inputs[i].name == 'wpConfirmB') {
                                inputs[i].click();
                                window.close();
                        }
                }
                window.close();
        });
}

newlinks = [];
function prepare_for_autodel() {
        var tag = prompt('Please enter a summary:');
        if(tag == null) { alert('Action canceled.'); return; }
        if(tag == "") tag = autodel.default_summary;
        var links = document.getElementById('bodyContent').getElementsByTagName('a');
        len = links.length;
        for(var i=0; i<len; i++) {
                var link = links[i];
                if(link.className == 'new'||link.href.indexOf('linkmodified=yes') != -1) continue;
                if(!((/^.*?\/wiki\/([^:]+:|)([^?]+).*$/).test(link.href))) continue;
                var mtc = link.href.match('^.*?\/wiki\/([^?#]+).*$');
                if(mtc[1] == wgPageName) continue;
                var linkpage = link.href.match(/^.*?\/wiki\/([^:]+:|)([^?]+).*$/);
                var usetalk = true;
                var talkpage = '';
                if(linkpage[1].toLowerCase().indexOf('talk:') != -1) {
                        usetalk = false;
                } else {
                        if(linkpage[1] == '') {
                                talkpage = "Talk:"+linkpage[2];
                        } else {
                                talkpage = linkpage[1].replace(':', '')+"_talk:"+linkpage[2];
                        }
                }
                link.href = link.href+'?linkmodified=yes&action=delete&autodel='+escape(tag);
                if(autodel.delete_talks&&usetalk) {
                        var nli = document.createElement('a');
                        nli.innerHTML = ' [Talk page]';
                        nli.href = '/wiki/'+talkpage+'?linkmodified=yes&action=delete&autodel='+escape(autodel.delete_talks_summary.replace(/\$1/g, tag));
                        nli.style.color = "green";
                        nli.onmouseup = function() { this.style.color = 'red'; };
                        nli.numb = i;
                        nli.className = 'temporary';
                        newlinks[newlinks.length] = nli;
                }
                link.style.color = "green";
                link.onmouseup = function() { this.style.color = 'red'; }; 
                link.innerHTML = link.innerHTML.replace(/(<([^>]+)>)/g, '');
        }
        
        if(autodel.delete_talks) for(var i = 0; i < newlinks.length; i++) {
                var nlii = newlinks[i];
                var linko = document.getElementById('bodyContent').getElementsByTagName('a')[parseInt(nlii.numb)+i];
                if(linko.nextSibling) {
                        linko.parentNode.insertBefore(nlii, linko.nextSibling);
                } else {
                        linko.parentNode.appendChild(nlii);             
                }
        }
        var btn = document.getElementById('ca-autodellinks').firstChild;
        btn.href = 'javascript:unprepare_for_autodel();';
        btn.innerHTML = 'REMOVE links autodel';
        btn.title = '';
}

function unprepare_for_autodel() {
        var links = document.getElementById('bodyContent').getElementsByTagName('a');
        for(var i=0; i<links.length; i++) {
                var link = links[i];
                link.onclick = function() { return true; };
                link.onmouseup = function() { return true; };
                link.href = link.href.split('linkmodified=yes')[0];
                if(link.className.indexOf('temporary') != -1) {
                        link.style.display = 'none';
                        link.className = 'new';
                }
                if(link.style.color != 'red') link.style.color = "";
        }
        alert('All links will now be safe to click...');
        var btn = document.getElementById('ca-autodellinks').firstChild;
        btn.href = 'javascript:prepare_for_autodel();';
        btn.innerHTML = 'links autodel';
        btn.title = '';
}
}

//