User:Taavi/script-redlinks.js
(Redirected from User:Majavah/script-redlinks.js)
Note: After saving, changes may not occur immediately. Click here to learn how to bypass your browser's cache.
- Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac);
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5;
- Konqueror: simply click the Reload button, or press F5;
- Opera users may need to completely clear their cache in Tools→Preferences.
Warning: Malicious code can compromise your account. Page preview will cause your web browser to execute this page's content as code under some skins, including Monobook. If you have any questions about any code you plan to add, you can ask at the appropriate reading room. |
![]() |
This script seems to have a documentation page at User:Taavi/script-redlinks. |
$(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.wikibooks.org/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');
var editBox = $('#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 (editBox.val().match(reglink1) !== null) totalredlinks += editBox.val().match(reglink1).length;
if (editBox.val().match(reglink2) !== null) totalredlinks += editBox.val().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');
editBox.val(editBox.val().replace(reglink3,""));
}
// Remove redlinks and convert to unlinked text
editBox.val(editBox.val().replace(reglink1,"$2"));
editBox.val(editBox.val().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:Majavah/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.)');
}
// Clear all saved redlinks
localStorage.redlinks = '';
}
}