User:GeorgeMoney/UserScripts/RemExternalLinks

From Wikipedia, the free encyclopedia

//

if(wgPageName == 'Special:Linksearch') {
        addOnloadHook(function() {
                addPortletLink('p-cactions', "javascript:rem_spam()", "remove external links", 'ca-remspam', 'Alter all the links on this page to autorem the external link on the page when clicked');
        });
}

if(location.href.indexOf('action=edit') != -1 && location.href.indexOf('remspam=') != -1) {
        addOnloadHook(function() {
                var tag = query_get('remspam');
                var box = document.getElementById('wpTextbox1');
                var txt = box.value;
                var reg = tag.replace('http://', '').replace(/\./g, '\\.').replace(/\*\\?\./g, '(?:.*?\\.)?');
                var newtext = ''+txt;
//              var elreg = /.*\s*={1,6}external\s*links?={1,6}\s*.*/ig;
//              var elreg2 = /(\s*={1,6}external\s*links?={1,6}.*)$/
//              if(elreg.test(newtext)) {
//                                              alert('MATCHED');
//                      var elsect = newtext.replace(elreg, '$1');
//                                              document.getElementById('content').appendChild(document.createTextNode(elreg));
//                                              document.getElementById('content').appendChild(document.createElement('br'));
//                                              document.getElementById('content').appendChild(document.createTextNode(elsect));
//                                              fuu();
//                      elsect = elsect.replace(new RegExp('^\\s*\\*.*?\\[?https?\\://'+reg+'/?.+?(?:\\s+(.+?)\\]|(\\s)).*?$', 'igm'), '');
//                      newtext = newtext.replace(elreg, elsect);
//              }
                if(!query_get('options') || (',' + query_get('options') + ',').indexOf(',lines,') != -1) newtext = newtext.replace(new RegExp('^\\s*\\*.*?\\[?https?\\://'+reg+'/?.+?(?:\\s+(.+?)\\]|.*?)$', 'igm'), '');
                if(!query_get('options') || (',' + query_get('options') + ',').indexOf(',citeweb,') != -1) newtext = newtext.replace(new RegExp('(?:<ref(?:\\s*name=["\'].*?["\'])?>\\s*)?\\{\\{\\s*cite[_ ]web\\s*\\|(?:.*?\\|)*\\s*url\\s*=\\s*https?\\://'+reg+'/?.*?\\s*(?:\\|.*?)?\\}\\}(?:\\s*<\/ref>)?', 'ig'), '');
                if(!query_get('options') || (',' + query_get('options') + ',').indexOf(',inline,') != -1) newtext = newtext.replace(new RegExp('(?:<ref(?:\\s*name=["\'].*?["\'])?>\\s*)?\\[?https?\\://'+reg+'/?.+?(?:\\s+(.+?)\\]|(\\s))(?:\\s*<\/ref>)?', 'ig'), '$1');
                box.value = newtext;
                document.getElementById('wpSummary').value = query_get('usesummary').replace(/__LINK__/g, tag) || 'Removing external link: '+tag+' -- per [[WP:EL|external link guidelines]]';
                document.getElementById('wpMinoredit').checked = true;
                document.getElementById('wpWatchthis').checked = false;
                document.getElementById('wpDiff').click();
        });
}

function rem_spam() {
        var targ = query_get('target') || unescape(location.href).split('/').reverse()[0].split('?')[0].split('#')[0];
        var tag = prompt('Please insert a link (without http://) to remove from\nall pages listed here. Example (and default if textbox is blank):\n'+targ);
        if(tag == null) { alert('Action canceled.'); return; }
        if(tag == "") tag = targ;
        var options = prompt('Please enter the option modes you would want.\nEnter each one in the textbox (without any seperation marker)\ne=Remove lines of External Links that contain the link\ni=Remove links inline in text\nc=Remove Cite_web templates using the link\nExample: ci\nLeave the box blank for all modes');
        if(options == null) { alert('Action canceled.'); return; }
        if(options == "") options = 'eic';
        options = options.split(new RegExp(''));
        var opt = '';
        for(var x in options) {
                var y = options[x];
                if(y == 'c') opt += ',citeweb';
                if(y == 'i') opt += ',inline';
                if(y == 'e') opt += ',lines';
        }
        opt = opt.substring(1);
        options = opt;
        var usesummary = prompt('Please enter a summary to use\nDefault: Removing external link: __LINK__ -- per [[WP:EL|external link guidelines]]');
        if(usesummary == null) { alert('Action canceled.'); return; }
        if(usesummary == '') usesummary = 'Removing external link: __LINK__ -- per [[WP:EL|external link guidelines]]';
        var links = document.getElementById('bodyContent').getElementsByTagName('a');
        for(var i=0; i<links.length; i++) {
                var link = links[i];
                var cha = (link.href.indexOf('?') != -1) ? '&' : '?';
                link.href += cha + 'linkmodified=yes&action=edit&remspam='+escape(tag)+'&options='+escape(options)+'&usesummary='+escape(usesummary);
                link.style.color = "green";
                link.onmouseup = function() { this.style.color = 'orange'; }; 
                link.innerHTML = link.innerHTML.replace(/(<([^>]+)>)/g, '');
        }
        var btn = document.getElementById('ca-remspam').firstChild;
        btn.href = 'javascript:unrem_spam();';
        btn.innerHTML = 'un-highlight links';
        btn.title = '';
}

function unrem_spam() {
        var links = document.getElementById('bodyContent').getElementsByTagName('a');
        for(var i=0; i<links.length; i++) {
                var link = links[i];
                link.href = link.href.split('linkmodified=yes')[0];
                link.style.color = "";
        }
        alert('All links will now be safe to click...');
        var btn = document.getElementById('ca-remspam').firstChild;
        btn.href = 'javascript:rem_spam();';
        btn.innerHTML = 'remove external links';
        btn.title = '';
}

//parse paramName out of query string
//stolen from Lupin's popups
function query_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;
};
//