User:Lenore/autolink.js: Difference between revisions

Content deleted Content added
disabilito nelle pagine normali (si blocca in quelle troppo grosse)
m Bugfix: Allow for &diff or ?diff; Better ways to do this would involve more editing
 
(6 intermediate revisions by 3 users not shown)
Line 1:
// Autolink [[wikilinks]], [external links] and {{templates}} (especially useful for monobook.js
// and similar pages); adapted from [[Wikipedia:WikiProject User scripts/Scripts/Autolink]]
 
/* ---------------------------------------------------------------------------------------------- */
 
addOnloadHook $(function () {
 
var autolinkCronoSpecial = mw.config.get('wgCanonicalSpecialPageName') == "Recentchanges" || /*
*/ mw.config.get('wgCanonicalSpecialPageName') == "Watchlist" || /*
*/ mw.config.get('wgCanonicalSpecialPageName') == "Recentchangeslinked" || /*
*/ mw.config.get('wgCanonicalSpecialPageName') == "Newpages" || /*
*/ mw.config.get('wgCanonicalSpecialPageName') == "Log" || /*
*/ mw.config.get('wgCanonicalSpecialPageName') == "Contributions";
// Special crono pages where this script is enabled
 
if ((typeof(autolinkMySpecialPage) != "undefined"))
autolinkCronoSpecial = autolinkCronoSpecial || mw.config.get('wgPageName') == autolinkMySpecialPage;
 
if (mw.config.get('wgCanonicalNamespace') == "Special" && !autolinkCronoSpecial) {
 
return; // Disabled in the other special pages
Line 31:
/* ---------------------------------------- Variables ------------------------------------------- */
 
var autolinkDiff = ___location.href.indexOf('&diff=') != -1;
// It says if I'm in a diff page
 
var autolinkCrono = (mw.config.get('wgAction') == 'history' || autolinkCronoSpecial);
// It says if I'm in a history page
 
var autolinkEdit = ($.inArray(mw.config.get('wgAction'), == ['edit' ||, wgAction'submit']) !== 'submit'-1);
// It says if I'm in an edit or submit page
Line 46:
if (autolinkDiff) { // in diff pages
if (autolinkParseLink) { // without wikEd
autolinkTargetDiv[0] = document.getElementsByClassName$('.diff');
 
autolinkTargetDiv[1] = document.getElementsByClassName$('.firstrevisionheader');
autolinkColor = 'inherit'; // not coloured links
} else { // with wikEd
autolinkTargetDiv[0] = document.getElementsByClassName$('.comment');
autolinkColor = ''; // coloured links
}
} else if (autolinkCrono || autolinkEdit) { // in comments
autolinkTargetDiv[0] = document.getElementsByClassName$('.comment');
autolinkColor = ''; // coloured links
} else return;{ // in code sections
autolinkTargetDiv[0] = $('source');
autolinkTargetDiv[1] = $('.javascript');
autolinkTargetDiv[2] = $('.source-javascript');
autolinkTargetDiv[3] = $('.css');
autolinkTargetDiv[4] = $('.source-css');
autolinkColor = ''; // coloured links
}
 
/* ------------------------------------------ Regex --------------------------------------------- */
Line 82 ⟶ 89:
var autolinkActivateHTML = false;
 
/* ------------------------------------------------------------------------------------------ */
 
autolinkRegexTl = /([^{]{{2}\s*[Tt]l\|)([^[\]{}|:<>\n]+)/g;
Line 92 ⟶ 99:
// Regex for diffs
 
autolinkRegexURLinWcodeWoLabel = /((?:[^\[]|^)\[\s*(?:<\/span>)?\s*(?:<span class="diffchange">)?\s*)((?:https?|ftps?):\/\/[\w._\/\\~%\-+&#?!=()@:]+)((?:<\/span>)?(?:<span class="diffchange">)?)([\w._\/\\~%\-+&#?!=()@:]*)((?:<\/span>)?(?:<span class="diffchange">)?)([\w._\/\\~%\-+&#?!=()@:]*)([^\]\n]*\])/gm;
autolinkRegexSubstinWcodeWoLabel = '$1<a class="external autolink" style="color:' + autolinkColor + '" href="$2$4$6">$2</a>$3<a class="external autolink" style="color:' + autolinkColor + '" href="$2$4$6">$4</a>$5<a class="external autolink" style="color:' + autolinkColor + '" href="$2$4$6">$6</a>$7';
// External links in diff pages, wikicode without label
Line 104 ⟶ 111:
// Other pages included in diff pages
autolinkRegexTemplate = /((?:[^{]|^)\{{2}\s*(?:<\/span>)?\s*(?:<span class="diffchange">)?\s*(?:(?:[Ss][Uu][Bb][Ss][Tt]|[Mm][Ss][Gg]|[Mm][Ss][Gg][Nn][Ww])\s*:)?\s*(?:<\/span>)?\s*(?:<span class="diffchange">)?)([^[\]{}|:<>\n]+)((?:<\/span>)?(?:<span class="diffchange">)?)([^[\]{}|:<>\n]*)((?:<\/span>)?(?:<span class="diffchange">)?)([^[\]{}|:<>\n]*)(\||}{2}|:)/gm;
autolinkRegexSubstTemplate = '$1<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/Template:$2$4$6">$2</a>$3<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/Template:$2$4$6">$4</a>$5<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/Template:$2$4$6">$6</a>$7';
// Templates in diff pages
autolinkRegexWlink1 = /(\[{2}\s*(?:<\/span>)?\s*(?:<span class="diffchange">)?\s*)([^[\]{}|<>\n]+)((?:<\/span>)?(?:<span class="diffchange">)?)([^[\]{}|<>\n]*)((?:<\/span>)?(?:<span class="diffchange">)?)([^[\]{}|<>\n]*)((?:[^\]\n]|\][^\]])*\]{2})/g;
autolinkRegexSubstWlink1 = '$1<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/$2$4$6">$2</a>$3<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/$2$4$6">$4</a>$5<a class="autolink" style="color:' + autolinkColor + '" href="/wiki/$2$4$6">$6</a>$7';
// Wikilinks in diff pages
Line 154 ⟶ 161:
// ImportScript
 
/* ---------------------------------------------------------------------------------------------- */
 
for (i=0; i<autolinkTargetDiv.length; i++) {
Line 195 ⟶ 202:
// Make wikilink code into links
 
autolinkContent = autolinkContent.replace(autolinkRegexInternalURL, '$1$2<a class="external autolink" style="color:' + autolinkColor + '" href="' + mw.config.get('wgServer') + '$3">$3</a>$2');
// Parse inactive external links (no wikicode, under wgServer)