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.wikipedia.org/w/index.php?title=','').replace('','');
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 {
var pageTitle;
if (window.location.href.indexOf('?title=') >= 0) {
var regex = /\?title=(.+?)&/;
var regexMatch = window.location.href.match(regex);
pageTitle = regexMatch[1];
} else {
pageTitle = window.location.href;
if (window.location.href.indexOf('#') >= 0) pageTitle = pageTitle.substr(0, pageTitle.indexOf('#'));
pageTitle = pageTitle.substr(window.location.href.indexOf('/wiki/')+6);
}
window.location.href = "https://en.wikipedia.org/wiki/"+pageTitle+"?action=edit";
}
} else {
alert('No redlinks!');
}
});
});
});
function redlinks_removeall() {
var wpTextbox1 = document.getElementById('wpTextbox1');
if(!wpTextbox1) return;
// Automatic removal of redlinks when stored.
if (localStorage.redlinks !== "" && localStorage.redlinks !== undefined) {
// Gather saved redlinks
try { var redlinks = JSON.parse(localStorage.redlinks); } catch (e) {return;}
// Regular expression to escape special characters
var totalredlinks = 0;
RegExp.quote = function(str) { return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&"); };
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?[^\}]*\}\}\r?\n/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[Rr]ed\s*links?[^\}]*\}\}\r?\n/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[Tt]oo many red links[^\}]*\}\}\r?\n/g, "");
// Clear all saved redlinks
localStorage.redlinks = '';
}
}
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.