User:Till Kraemer/script-redlinks.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// Based on https://en.wikipedia.org/wiki/User:Alex_21/script-redlinks.js $(document).ready( function () { // Remove redlinks if they exist upon pageload redlinks_removeall(); }); $(function($) { mw.loader.using( ['mediawiki.util'] ).then( function () { var portletlink = mw.util.addPortletLink('p-tb', '#', 'Remove redlinks'); $(portletlink).click( function(e) { e.preventDefault(); // Default parameters, and begin script on regular view of article var loc = window.location.href; var redlinks; var i; // Gather all redlinks with class "new" redlinks = []; var a = document.getElementsByTagName('a'); for (i = 0; i < a.length; i++) { if (a[i].getAttribute('class') == "new") { redlinks[redlinks.length] = a[i].href.replace('https://en.pornopedia.com/w/index.php?title=','').replace('&action=edit&redlink=1',''); redlinks[redlinks.length-1] = redlinks[redlinks.length-1].replace(/_/g,' '); redlinks[redlinks.length-1] = decodeURIComponent(redlinks[redlinks.length-1]); } } // Save all redlinks if (redlinks.length > 0) { localStorage.redlinks = JSON.stringify(redlinks); // If we are in the edit page, then remove redlinks automatically; if we are on the reading page, then go to the edit page if (window.location.href.indexOf('action') >= 0) redlinks_removeall(); else window.location = window.location.href.substr(0, window.location.href.indexOf('#'))+"?action=edit"; } else { alert('No redlinks!'); } }); }); }); function redlinks_removeall() { // Automatic removal of redlinks when stored. if (localStorage.redlinks !== "" && localStorage.redlinks !== undefined) { // Gather saved redlinks var redlinks = JSON.parse(localStorage.redlinks); // Regular expression to escape special characters var totalredlinks = 0; RegExp.quote = function(str) { return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&"); }; var wpTextbox1 = document.getElementById('wpTextbox1'); for (i = 0; i < redlinks.length; i++) { // Regular expression for piped links and direct links var reglink1 = new RegExp('\\[\\[\\s*('+RegExp.quote(redlinks[i]).replace(/\s/g, "[\\s\\_]*")+')\\s*\\|\\s*([^\\]]*)\\s*\\]\\]','gi'); var reglink2 = new RegExp('\\[\\[\\s*('+RegExp.quote(redlinks[i]).replace(/\s/g, "[\\s\\_]*")+')\\s*\\]\\]','gi'); // Add total number of matches for both if (wpTextbox1.value.match(reglink1) !== null) totalredlinks += wpTextbox1.value.match(reglink1).length; if (wpTextbox1.value.match(reglink2) !== null) totalredlinks += wpTextbox1.value.match(reglink2).length; // Includes categories // Remove category rather than simply convert it to unlinked text if (redlinks[i].substr(0,9) == "Category:") { var reglink3 = new RegExp('\\[\\[\\s*('+RegExp.quote(redlinks[i])+')\\s*\\]\\]\\n','gi'); wpTextbox1.value = wpTextbox1.value.replace(reglink3,""); } // Remove redlinks and convert to unlinked text wpTextbox1.value = wpTextbox1.value.replace(reglink1,"$2"); wpTextbox1.value = wpTextbox1.value.replace(reglink2,"$1"); } // Alert for summary of removed redlinks; total in edit summary if (totalredlinks > 0) { document.getElementById('wpSummary').value += "Removed "+totalredlinks+" redlink"+(totalredlinks==1?"":"s")+" via [[User:Alex 21/script-redlinks|script]]."; alert("Automatically removed "+totalredlinks+" redlink"+(totalredlinks==1?"":"s")+"!"); } else { // Redlinks were seen in the article but none were found in the wikicode - check the nevigational boxes for these redlinks alert('No redlinks in the article! (Check transcluded templates and the navigational boxes.)'); } // Remove the template(s) wpTextbox1.value = wpTextbox1.value.replace(/\{\{[Cc]leanup-?\s*[Rr]ed\s*[Ll]inks?[^\}]*\}\}/g, ""); wpTextbox1.value = wpTextbox1.value.replace(/\{\{[Rr]ed\s*links?[^\}]*\}\}/g, ""); wpTextbox1.value = wpTextbox1.value.replace(/\{\{[Tt]oo many red links[^\}]*\}\}/g, ""); // Clear all saved redlinks localStorage.redlinks = ''; } }