Wikipedysta:Rzuwig/replylinks.js

Z Wikipedii, wolnej encyklopedii

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/**
	@file Odpowiedzi z linkami (Reply links with backtrack links)
 
	Opis (pl):
		- http://pl.wikipedia.org/wiki/Wikipedia:Narz%C4%99dzia/Odpowiedzi_z_linkami
 
    Main functions:
		- adding reply links near user links
		- inserting text given in newsectionname (as PHP param in the location string of the page)
 
    Copyright:  ©2006-2011 Maciej Jaros (pl:User:Nux, en:User:EcceNux)
     Licencja:  GNU General Public License v2
                http://opensource.org/licenses/gpl-license.php
 
	@note Please keep MW 1.16 compatible (i.e. do not use mw.config)
	@note jQuery is required though
	@note Dev version contains more comments see: http://pl.wikipedia.org/wiki/Wikipedysta:Nux/replylinks.dev.js
*/
// EOC@line#21
if (typeof(window.oRepLinks) != 'undefined')
{
	throw ("oRepLinks already used");
}
var oRepLinks = {};
// EOC@line#30
oRepLinks.version = oRepLinks.ver = '1.6.5';
// EOC@line#36
oRepLinks.i18n = {'':''
	,'en' : {'':''
		,'std prefix'        : 'Re:'
		,'no section prefix' : 'Ad:'
		,'reply link text'   : 'reply'
	}
	,'pl' : {'':''
		,'std prefix'        : 'Odp:'
		,'no section prefix' : 'Ad:'
		,'reply link text'   : '⇒'
	}
};
 
oRepLinks.hrefOnlineIPwhois = 'http://www.ripe.net/perl/whois?form_type=simple&searchtext=';
// EOC@line#55
(function($G){
 return; // temporarily disabled due to [[phab:T72470]].
 
 
 
$G.Lang = "en";
if (wgUserLanguage in $G.i18n)
{
	$G.Lang = wgUserLanguage;
}
$G.i18n = $G.i18n[$G.Lang];
// EOC@line#72
$G.getNamespaceNames = function(namespaceNumber, encodingFunction)
{
	var found = [];
	for (var id in wgNamespaceIds)
	{
		if (wgNamespaceIds[id] == namespaceNumber)
		{
			if (encodingFunction)
			{
				id = encodingFunction(id);
			}
			found.push(id);
		}
	}
	return found;
}
 
 
 
 
 
 
$G.strReHrefBase          = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1',  '(?:' + $G.getNamespaceNames(2, encodeURIComponent).join('|') + ')') + ':';
 
$G.strReHrefNewBase       = mw.config.get('wgServer') + mw.config.get('wgScript') + '\\?title=' + '(?:' + $G.getNamespaceNames(2, encodeURIComponent).join('|') + ')' + ':';
 
$G.strReHrefAnonimBase    = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', encodeURIComponent(wgFormattedNamespaces[-1])) + ':(?:Contributions|Wk%C5%82ad)/';
 
$G.strBaseUserTalkURL     = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', encodeURIComponent(wgFormattedNamespaces[3])) + ':';
// EOC@line#107
$G.oBotToOwner = {'':''
,'Ab.awbot':'Abronikowski'
,'AkBot':'Ankry'
,'AlohaBOT':'Patrol110'
,'AutoPur':'Pur'
,'Beau.bot':'Beau'
,'Beau.bot.admin':'Beau'
,'Bluebot':'Blueshade'
,'BotOks':'Skalee'
,'Bugbot':'Lcamtuf'
,'Cookie.bot':'Jwitos'
,'DodekBot':'Dodek'
,'g.bot':'gregul'
,'Holek.Bot':'Holek'
,'KamikazeBot':'Karol007'
,'Kbot':'Kb'
,'Lambot':'Lampak'
,'LeafBot':'Leafnode'
,'MagulBot':'Magul'
,'MalarzBOT':'malarz_pl'
,'MastiBot':'Masti'
,'MatmaBot':'Matma_Rex'
,'MBot':'maikking'
,'McBot':'McMonster'
,'Merdis.bot':'Merdis'
,'MiszaBot':'Misza13'
,'Miner':'Saper'
,'NickyBot':'Wpedzich'
,'PowerBot':'Powerek38'
,'RooBot':'Roo72'
,'RewersBot':'Awersowy'
,'Staszek_Jest_Jeszcze_Szybszy':'Staszek_Szybki_Jest'
,'Szczepan.bot':'Szczepan1990'
,'TAMMBot':'TAMM'
,'ToBot':'ToSter'
,'Trivelt.bot':'Trivelt'
,'tsca.bot':'Tsca'
,'Ver-bot':'Verwolff'
,'VindiBot':'Vindicator'
,'WarXboT':'WarX'
,'WiktorynBot':'Wiktoryn'
,'YarluBot':'Yarl'
};
// EOC@line#156
$G.autoNewSectionName = function()
{
	//
 
	//
	var elInput = document.getElementById('wpTextbox1');
	if (elInput)
	{
		//
 
		//
		var reParam = new RegExp ("&newsectionname=([^&]*)", "i");
		var matches = reParam.exec(location.search);
		var sectxt;
 
		if (matches)
		{
			sectxt = decodeURIComponent(matches[1]);
			elInput.value += ';'+sectxt+'\n\n';
		}
 
		//
 
		elInput = document.getElementById('wpSummary');
		if (elInput)
		{
			matches = /[ ](.*)\]/.exec(sectxt);
 
			if (matches)
			{
				elInput.value += decodeURIComponent(matches[1]);
			}
		}
	}
};
// EOC@line#195
$G.addReplyLinks = function()
{
	//
 
	//
	// if (!document.getElementById('t-permalink') && !document.getElementById('t-ispermalink') )
	if (wgCurRevisionId==0)
	{
		return;
	}
 
	//
 
	//
	var hrefPermalink;
 
	if (document.location.href.indexOf('&oldid=')!=-1)
	{
		hrefPermalink = document.location.href.replace(/#.+$/,'');
	}
 
	else
	{
		hrefPermalink = '{{fullurl:' + wgPageName + '|oldid=' + wgCurRevisionId + '}}';
	}
 
	//
 
	//
 
	//
 
	var reHref = new RegExp ($G.strReHrefBase + "([^/]*)$", "i");
	var reHrefNew = new RegExp ($G.strReHrefNewBase + "([^/?&]*)", "i");
	var reHrefAnonim = new RegExp ($G.strReHrefAnonimBase + "([\\.0-9]*)$");
 
	var content = document.getElementById('content');
	if (!content)
	{
		content = document.getElementById('mw_content');
		if (!content)
		{
			return;
		}
	}
	var bodyContent_id = 'bodyContent';
	var bodyContent = document.getElementById(bodyContent_id);
	if (!bodyContent)
	{
		bodyContent = document.getElementById('mw_contentholder');
	}
 
	//
 
	var secAbove = {
		'id' : bodyContent_id,
		'text' : $G.parseSectionText(wgPageName)
	};
	var secReplyText = $G.i18n['no section prefix'];
	//
 
	var a = $G.getElementsByTagNames ('A,SPAN', bodyContent);
	for (var i = 0; i < a.length; i++)
	{
		//
 
		if (a[i].nodeName.toLowerCase()=='a' && a[i].href != '' && a[i].getAttribute('href').indexOf('#')==-1)
		{
			var anonimous = false;
			var matches = (a[i].className.indexOf('new')>=0) ? reHrefNew.exec(a[i].href) : reHref.exec(a[i].href);
			if (!matches)
			{
				matches = reHrefAnonim.exec(a[i].href);
				anonimous = true;
			}
 
			else if ($G.oBotToOwner[matches[1]] != undefined)
			{
				matches[1] = $G.oBotToOwner[matches[1]];
			}
 
			if (matches)
			{
				//
 
 
				var hrefReply = $G.strBaseUserTalkURL + matches[1] + '?action=edit&section=new';
				//
 
				var newSectionName = '['+hrefPermalink+'#'+secAbove.id+' '+secReplyText+secAbove.text+']';
				hrefReply += '&newsectionname=' + encodeURIComponent(newSectionName);
				var newEl = document.createElement('small');
				var newA = document.createElement('a');
				newA.setAttribute('href', hrefReply);
				newA.setAttribute('title', $G.i18n['std prefix']+secAbove.text);
				newA.appendChild(document.createTextNode('['+$G.i18n['reply link text']+']'));
				newEl.appendChild(newA);
				$G.insertAfterGivenElement(a[i],newEl);
 
 
				if (anonimous)
				{
					newA = document.createElement('a');
					newA.setAttribute('href', $G.hrefOnlineIPwhois+matches[1]);
					newA.setAttribute('title', 'IP whois');
					newA.appendChild(document.createTextNode('[?]'));
					newEl.appendChild(newA);
 
				}
			}
		}
 
		//
 
		if (a[i].nodeName.toLowerCase()=='a' && wgNamespaceNumber != 6 && a[i].id != '' && a[i].parentNode.nodeName=='P')
		{
			var header = a[i].parentNode;
 
			var found;
			for (found=3; found; found--)
			{
				header = header.nextSibling;
				if (header!=null && header.nodeType==document.ELEMENT_NODE && header.nodeName.search(/h[0-9]/i)==0)
				{
					break;
				}
			}
			if (found)
			{
				secAbove.id = a[i].id;
 
				secAbove.text = $G.parseSectionText(header.innerHTML);
				// should be set only once (as it is always the same), but let's leave it that way
				secReplyText = $G.i18n['std prefix'];
				//header.innerHTML = '['+secAbove.id+'@'+found+']&rarr;'+secAbove.text;
			}
		}
		//
 
		if (a[i].className=='mw-headline')
		{
			secAbove.id = a[i].id;
 
			secAbove.text = $G.parseSectionText(a[i].innerHTML);
			// should be set only once (as it is always the same), but let's leave it that way
			secReplyText = $G.i18n['std prefix'];
			//header.innerHTML = '['+secAbove.id+'@'+found+']&rarr;'+secAbove.text;
		}
		//
 
		if (secAbove.text.search(/^[0-9.]+ /) > -1)
		{
			var isNumbered = true;
			if (secAbove.id.search(/^[0-9.]+_/) > -1)
			{
				if (secAbove.text.replace(/^([0-9. ]+) .*/, '$1').length == secAbove.id.replace(/^([0-9._]+)_.*/, '$1').length)
				{
					isNumbered = false;
				}
			}
			if (isNumbered)
			{
				secAbove.text = secAbove.text.replace(/^[0-9.]+ (.*)/, '$1');
			}
		}
	}
};
// EOC@line#371
$G.insertAfterGivenElement = function (el, newEl)
{
	if (el.nextSibling)
	{
		el.parentNode.insertBefore(newEl, el.nextSibling);
	}
	else
	{
		el.parentNode.appendChild(newEl);
	}
};
// EOC@line#392
$G.parseSectionText = function (html)
{
 
	html = html.replace(/<\S[^<>]*>/g, '');
 
	html = html.replace(/\[[^\]]*\]/,'');
 
	html = html.replace(/[\{\}]/g,'');
 
	html =  html.replace(/[ \t]*$/,'').replace(/^[ \t]*/,'');
	return html;
};
// EOC@line#416
$G.getElementsByTagNames = function (list, obj)
{
	// for some reason sourceIndex doesn't work in Opera when NOT in debug mode (returns -1)...
 
	var resultArray = new Array();
	$(list, obj).each(function(){
		resultArray.push(this);
	})
	return resultArray;
};
 
 
 
 
 
if (wgAction=='edit' && wgCanonicalNamespace=='User_talk')
{
	$($G.autoNewSectionName);
}
 
if (wgAction!='edit' && wgAction!='submit')
{
	$($G.addReplyLinks);
}
// EOC@line#444
})(oRepLinks);