Wikipedysta:Rzuwig/replylinks.js
/**
@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§ion=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+']→'+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+']→'+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);
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.