Content deleted Content added
-1.7 |
-1.8 |
||
Line 2:
// Some minor link helpers
// ResourceLoader: compatible; dependencies: user, mediawiki.util
/// 2014-12-
/// Fingerprint: #0#0#
/// <nowiki>
Line 11:
( function ( mw, $ ) {
"use strict";
var Version = -1.
Sign = "pageLinkHelper",
Signature = "ext.gadget." + Sign,
Line 17:
Config = { PermanentLink: { "*": "PermaLink" },
Redirect: { de: "Weiterleitung" },
permTitle: { "*": "PermaLink" },
purgeTip: { en: "PURGE this page from server cache",
de: "PURGE:"
Line 25 ⟶ 27:
purgeTitle: { en: "Purge cache",
de: "Seite purgen" },
qqxTip: { en: "Reload"
+ " and show interface element IDs" },
qqxTitle: { en: "lang=qqx" },
translate: { "als" : "de",
"bar" : "de",
Line 40 ⟶ 45:
"stq" : "de",
"vmf" : "de" }
}; // 2014-12-
Line 50 ⟶ 55:
// Uses:
// > Sign
// 2014-12-
var space = "4px",
style = "#
$r = $( "<div>" );
$r.attr( { "class": Sign,
"id": access } );
"
"
"
"
"margin-
"margin-
"
"padding-
"padding-right": space,
"padding-left": space } );
return $r;
} // $factory()
Line 72 ⟶ 79:
function $float( $apply ) {
// Insert/exchange upper right corner element
// Precondition:
// $apply -- jQuery element to insert
// false to
// Postcondition:
// Returns true, if insertion possible
Line 81 ⟶ 88:
// > Sign
// >< Env
// 2014-12-
var r,
sequence, suitable, $
if ( typeof Env.$
Env.$
Env.$corner.attr( { "class": Sign,
"id": Sign + "Corner" } );
if ( ! Env.skin ) {
Env.skin = mw.config.get( "skin" );
}
switch ( Env.skin ) {
case "cologneblue" :
suitable = "firstHeading";
sequence = "after";
break;
case "modern" :
suitable = "contentSub";
sequence = "before";
break;
case "monobook" :
case "vector" :
suitable = "bodyContent";
sequence = "prepend";
break;
} // switch Env.skin
$anchor = $( "#" + suitable );
if ( ! $anchor.length ) {
$anchor = $( "#firstHeading" );
sequence = "after";
}
if ( $anchor.length ) {
$anchor[ sequence ]( Env.$corner );
$clear = $( "<div>" );
$clear.css( { "clear": "left" } );
Env.$corner.after( $clear );
} else {
Env.$corner = false;
}
}
if ( Env.$
Env.$corner.empty();
Env.$corner.prepend( $apply );
r = true;
}
return r;
Line 104 ⟶ 138:
function face() {
// Initialize environment and application object, if user defined
// Precondition:
// module 'user' loaded
Line 114 ⟶ 148:
// > Version
// >< PLH
// 2014-12-
if ( typeof mw.libs[ Sign ]
PLH = mw.libs[ Sign ];
PLH.vsn = Version;
}
} // face()
function facet( applied ) {
// Check for user option
// Precondition:
// applied -- option keyword
// module 'user' loaded
// Postcondition:
// Returns value, or undefined
// Uses:
// > PLH
// 2014-12-19 PerfektesChaos@de.wikipedia
var r; // = undefined
face();
if ( PLH && typeof PLH[ applied ] !== "undefined" ) {
r = PLH[ applied ];
}
return r;
} // facet()
Line 170 ⟶ 222:
function fair( access, adapt, alter ) {
// Localization
// Precondition:
// access -- configuration keyword
// adapt --
// else
// alter -- default string (en)
// Postcondition:
// Returns value, or keyword 'access'
Line 185 ⟶ 238:
// facility()
// mw.config.get()
// 2014-12-
var
face();
if (
r = alter;
} else {
r = access;
}
if ( PLH &&
typeof PLH.config === "object" &&
PLH.config &&
typeof PLH.config[ access ] === "object" ) {
el
}
if ( ! el ) {
Line 202 ⟶ 260:
if ( say ) {
r = say;
} else if ( typeof
r = "???" + access + "???";
}
Line 231 ⟶ 287:
//
// Precondition:
//
//
// .skins -- default skins, if any
// true; or "|vector|" etc.
// .fun -- callback for link generation
// .show -- link title keyword
// .support -- tooltip keyword
// OPTIONAL:
// .suffix -- selector creation
// DOM.ready
// mediawiki.util loaded
// user resources loaded
// Postcondition:
// Returns
// Uses:
// ><
//
// mw.util.addPortletLink()
//
// 2014-12-19 PerfektesChaos@de.wikipedia
var opt = facet( apply.signature ),
seed = null,
slot = "p-cactions",
start = "ca",
got, r, re, skins, suffix, swap;
switch ( typeof opt ) {
case "boolean" :
if ( opt ) {
seed = false;
skins = true;
} 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;
} // switch got.2
break;
case "ca" :
break;
case "n" :
slot = "p-navigation";
break;
case "t" :
slot = "p-tb";
break;
} // switch got.1
}
break;
} // switch typeof opt
if ( slot && seed === null ) {
if ( ! skins ) {
switch ( typeof apply.skins ) {
case "boolean" :
case "string" :
skins = apply.skins;
break;
} // switch typeof apply.skins
}
if ( skins === true ) {
skins = "|vector|";
}
if ( skins ) {
if ( ! Env.skin ) {
Env.skin = mw.config.get( "skin" );
}
if ( skins.indexOf( Env.skin ) < 0 ) {
if ( opt ) {
slot = "p-tb";
start = "t";
} else {
slot = false;
}
}
} else {
slot = false;
}
}
if ( slot ) {
swap = apply.fun();
if ( typeof apply.suffix === "string" ) {
suffix = apply.suffix;
} else {
suffix = apply.signature;
}
if ( seed ) {
seed = "#" + seed;
}
r = mw.util.addPortletLink( slot,
swap,
fair( apply.show, true ),
start + "-" + suffix,
fair( apply.support, true ),
null,
seed );
}
return r;
} //
Line 292 ⟶ 448:
}
} // fiat()
function flat( ahead ) {
// Provide "uselang=qqx" link
// Precondition:
// ahead -- true if initializing, false to link
// DOM.ready
// mediawiki.util loaded
// user resources loaded
// Postcondition:
// Returns link, or undefined
// Uses:
// > ___location
// favorite()
// (flat)
// 2014-12-19 PerfektesChaos@de.wikipedia
var r;
if ( ahead ) {
favorite( { signature: "slangQQX",
skins: false,
fun: flat,
show: "qqxTitle",
support: "qqxTip",
suffix: "langQQX"
} );
} else {
r = window.___location.href;
r = r.replace( /^(.+)#.+$/, "$1" )
.replace( /([?&])uselang=[^&]*(&.*)?$/, "$1$2" );
if ( ! /[?&]$/.test( r ) ) {
if ( r.indexOf( "?" ) > 0 ) {
r = r + "&";
} else {
r = r + "?";
}
}
r = r + "uselang=qqx";
}
return r;
} // flat()
Line 421 ⟶ 618:
$div.append( $spanBeg.clone() );
show = special
+ fair( "PermanentLink", false, "PermaLink" )
+ "/" + Env.oldid;
$a.attr( { "href": mw.util.getUrl( show ) + swift } );
Line 433 ⟶ 630:
$div.append( $spanBeg );
show = special
+ fair( "Redirect", false )
+ "/page/" + Env.curid;
$a.attr( { "href": mw.util.getUrl( show ) + swift } );
Line 454 ⟶ 651:
// > Sign
// > Version
// fair()
// (freeze)
// 2014-12-
var $portlet = $( "#t-permalink" ),
show, support, $a, $span;
Line 464 ⟶ 662:
$a.attr( { "title": support } );
$a.click( freeze );
$a.text( fair( "permTitle", false, "PermaLink" ) );
$portlet.empty();
$portlet.append( $a );
Line 484 ⟶ 682:
function fresh( ahead ) {
// Provide purge link
// Precondition:
// ahead -- true if initializing, false to link
// DOM.ready
// mediawiki.util loaded
// user resources loaded
// Postcondition:
// Returns link, or undefined
// Uses:
// >< Env
//
// mw.config.get()
// mw.util.getUrl()
// 2014-12-19
var r;
if ( ahead ) {
suffix: "purge"
}
Env.wgPageName = mw.config.get( "wgPageName" );
}
return r;
} // fresh()
Line 577 ⟶ 727:
// >< Env
// mw.util.getUrl()
//
// history.___pushState()
// history.___replaceState()
// 2014-12-07 PerfektesChaos@de.wikipedia
var caused, opts
if ( typeof window.history.___pushState === "function" &&
typeof window.history.___replaceState === "function" ) {
Line 591 ⟶ 741:
}
if ( ! last ) {
opts =
if ( opts &&
typeof opts === "object" &&
Line 671 ⟶ 821:
// fresh()
// from()
//
// 2014-12-19 PerfektesChaos@de.wikipedia
Env = { skin: false,
wgCanonicalSpecialPageName:
mw.config.get( "wgCanonicalSpecialPageName" ) };
if ( Env.wgCanonicalSpecialPageName ) {
Line 707 ⟶ 860:
freezer( true );
}
fresh( true );
Env.wgRedirectedFrom
= mw.config.get( "wgRedirectedFrom" );
Line 713 ⟶ 866:
from();
}
break;
case "info" :
fresh( true );
break;
default:
Line 718 ⟶ 874:
} // switch wgAction
}
}
if ( facet( "slangQQX" ) ) {
flat( true );
}
} // fire()
|