مستخدم:Omar ssofoB/script-redlinks.js
يمكن توفير توثيق لسكربت المستخدم هذا في الصفحة : مستخدم:Omar ssofoB/script-redlinks. |
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات ( ).
$(document).ready( function () {
// Remove redlinks if they exist upon pageload
redlinks_removeall();
});
$(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://ar.wikipedia.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');
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:AlexTheWhovian/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(/\{\{[C|c]leanup red links[^\}]*\}\}/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[C|c]leanup Red Link[^\}]*\}\}/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[C|c]leanup redlinks[^\}]*\}\}/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[C|c]leanup-redlinks[^\}]*\}\}/g, "");
wpTextbox1.value = wpTextbox1.value.replace(/\{\{[T|t]oo many red links[^\}]*\}\}/g, "");
// Clear all saved redlinks
localStorage.redlinks = '';
}
}