/// Gadget-pageLinkHelper.js
/// 2014-12-07 PerfektesChaos@de.wikipedia
/// Fingerprint:#0#B086D209#
///<nowiki>
(function(mw,$){
"use strict";
var VERSION=1.2,Env,PLH;
function feature(applied){
var r;
if(typeof mw.libs.pageLinkHelper==="object"){
PLH=mw.libs.pageLinkHelper;
if(PLH){
PLH.vsn=VERSION;
if(typeof PLH[applied]!=="undefined"){
r=PLH[applied];}}}
return r;}
function flip(){
var sign="pageLinkHelperDifflink",$div=$("#"+sign),got,i,id1,id2,j,re,show,$container,$span;
if(!$div.length){
$container=$("#contentSub");
if($container.length){
if(Env.wgCanonicalSpecialPageName){
re=/\/wiki\/[^:]+:[^\/]+\/(\d+)(?:\/(\.+))?$/;
got=re.exec(window.___location.pathname);
if(got){
id1=got[1];
id2=got[2];}
}else{
id1=mw.util.getParamValue("diff");
id2=mw.util.getParamValue("oldid");}
if(id1){
i=parseInt(id1,10);
if(id2){
if(isNaN(i)){
i=id1;
id1=id2;
id2=i;
}else{
j=parseInt(id2,10);
if(!isNaN(j)){
if(i>j){
id2=i;
id1=j;}}}
if(id2==="prev"){
id2=false;}
}else if(isNaN(i)){
id1=false;}}
if(id1){
show="[["+mw.config.get("wgFormattedNamespaces")["-1"]+":Diff/"+id1+(id2?"/"+id2:"")+"]]";
$span=$("<code>");
$span.text(show);
$div=$("<div>");
$div.attr({"id":sign});
$div.css({"float":"right","margin-top":"1em"});
$div.append($span);
$container.append($div);}}}}
function fresh(){
var opt=feature("purge"),say="PURGE this page from server cache",seed=null,slot="p-cactions",show="Purge cache",start="ca",got,re,swap;
switch(typeof opt){
case "boolean":
if(opt){
seed=false;
}else{
slot=false;}
break;
case "string":
seed=opt;
re=/^([a-z]+)-(.+)$/;
got=re.exec(seed);
if(got){
switch(got[1]){
case "p":
slot=seed;
seed=false;
switch(got[2]){
case "navigation":
start="n";
break;
case "tb":
start="t";
break;}
break;
case "ca":
break;
case "n":
slot="p-navigation";
break;
case "t":
slot="p-tb";
break;}}
break;}
if(slot&&seed===null){
Env.skin=mw.config.get("skin");
if(Env.skin!=="vector"){
slot=false;}}
if(slot){
Env.wgPageName=mw.config.get("wgPageName");
swap=mw.util.getUrl(Env.wgPageName,{action:"purge"});
if(seed){
seed="#"+seed;}
mw.util.addPortletLink(slot,swap,show,start+"-purge",say,null,seed);}}
function from(){
var caused,opts,show,last,legacy,showed,state,swap;
if(typeof window.history.___pushState==="function"&&typeof window.history.___replaceState==="function"){
swap=mw.util.getUrl(Env.wgRedirectedFrom,{redirect:"no"});
if(window.history.previous){
last=(window.history.previous.indexOf(swap)>=0);}
if(!last){
opts=feature("redirect");
if(opts&&typeof opts==="object"&&typeof opts.legacy==="boolean"){
legacy=opts.legacy;}
caused={caused:"pageLinkHelper"};
showed=window.document.title;
if(legacy){
state=mw.util.getUrl(Env.wgRedirectedFrom);
}else{
state=window.___location.href;}
show="#REDIRECT "+Env.wgRedirectedFrom;
window.history.___replaceState(caused,show,swap);
window.history.___pushState(caused,showed,state);}}}
function fire(){
Env=mw.config.get(["wgAction","wgCanonicalSpecialPageName","wgRedirectedFrom"]);
if(mw.util.getParamValue("diff")||Env.wgCanonicalSpecialPageName==="Diff"){
flip();
}else if(!Env.wgCanonicalSpecialPageName&&Env.wgAction==="view"){
fresh();
if(Env.wgRedirectedFrom){
from();}}}
if(mw.loader.state("ext.gadget.pageLinkHelper")!=="ready"){
mw.loader.state("ext.gadget.pageLinkHelper","ready");
mw.loader.using(["mediawiki.util","user"],function(){
$(fire);
});}
}(window.mediaWiki,window.jQuery));
/// EOF</nowiki>pageLinkHelper.js