//<nowiki>
// begin namespace: foCatNavi
(function( _public, $, undefined ) {
var browseCat = "";
var catLinks;
_public.init = function ()
{
var pv = mw.util.getParamValue('cnCategory');
if (pv && pv.length > 0) {
browseCat = pv;
catLinks = document.getElementById("mw-content-text"); //old id="firstHeading"
catLinks.insertAdjacentHTML("afterbegin",'<div id="gadgets"></div>');
catLinks = document.getElementById("gadgets");
} else {
catLinks = document.getElementById("mw-normal-catlinks"); //id="mw-hidden-catlinks"
if (catLinks) {
// Alle Links aus der Liste, die auch existieren
var catLinksList = catLinks.querySelectorAll("li a");
for (var i = 0; i < catLinksList.length; i++) {
if (browseCat == "") { // erste gefundene Kategorie wählen
browseCat = "Kategorie:" + catLinksList[i].innerText;
}
if (catLinksList[i].title.indexOf('(') > 0) { // erste gefundene Kategorie mit '(' wählen
browseCat = "Kategorie:" + catLinksList[i].innerText;
break; // leave for loop
}
}
catLinks = document.getElementById("catlinks"); // Aufhänger
}
}
if (browseCat != "") {
catLinks.insertAdjacentHTML("afterend",
'<div class="catlinks" style="font-size: small; text-align: center; margin-bottom: 1em">' +
'<ul style="margin: 0">' +
'<li id="liL5"></li><li id="liL4"></li><li id="liL3"></li><li id="liL2"></li><li id="liL1"></li>' +
'</ul><span style="font-size: large" title="Einträge aus der ' + browseCat.replace(/_/g, " ") +
'">⇐ ' + '<a href="' + buildUrl2(browseCat,'') + '">📖</a> ⇒</span>' +
'<ul style="margin: 0">' +
'<li id="liR1"></li><li id="liR2"></li><li id="liR3"></li><li id="liR4"></li><li id="liR5"></li>' +
'</ul></div>'
);
var url = buildApi('',
"action=query&list=categorymembers&cmnamespace=0&cmprop=title&cmlimit=9&format=json");
$.post(url, {
cmtitle: browseCat,
cmdir: "descending",
cmstartsortkeyprefix: mw.config.get("wgPageName").replace(/_/g, " ")
}, handleResponseCatsDesc);
$.post(url, {
cmtitle: browseCat,
cmdir: "ascending",
cmstartsortkeyprefix: mw.config.get("wgPageName").replace(/_/g, " ")
}, handleResponseCatsAsc);
}
};
_public.initCat = function ()
{
// Auf den Kategorieseiten einen Eventhandler aktivieren, um Memberseiten mit CatNavi zu öffnen
$("#mw-pages li a").each(function(index, element) {
element.addEventListener("click", function(event) {
event.stopPropagation();
event.preventDefault();
var url = buildUrl2(this.innerText,"&cnCategory=" +
mw.util.wikiUrlencode(mw.config.get("wgPageName")));
location.href = url;
});
});
};
_public.config = function ()
{
// toDo
};
_public.help = function (chapter) {
window.location.href = mw.config.get("wgServer") + mw.config.get("wgScript")
+ "?title=" + mw.util.wikiUrlencode("Hilfe:CatNavi");
};
function handleResponseCatsAsc(data) {
if (data.query !== undefined && data.query.categorymembers !== undefined) {
var dqc = data.query.categorymembers;
var title = mw.config.get("wgPageName").replace(/_/g, " ");
var liIdx = -1;
for (var i = 0; i < dqc.length; i++) {
if (liIdx >= 0 && liIdx <= 5) { // skip until this title
liIdx++;
var lix = document.getElementById("liR" + liIdx);
if (lix) {
lix.innerHTML = '<a href="' + buildUrl2(dqc[i].title,"&cnCategory=" + mw.util.wikiUrlencode(browseCat)) +
'">' + dqc[i].title + '</a>';
}
}
if (dqc[i].title == title) { // start processing
liIdx = i;
}
}
}
}
function handleResponseCatsDesc(data) {
if (data.query !== undefined && data.query.categorymembers !== undefined) {
var dqc = data.query.categorymembers;
var title = mw.config.get("wgPageName").replace(/_/g, " ");
var liIdx = -1;
for (var i = 0; i < dqc.length; i++) {
if (liIdx >= 0 && liIdx <= 5) { // skip until this title
liIdx++;
var lix = document.getElementById("liL" + liIdx);
if (lix) {
lix.innerHTML = '<a href="' + buildUrl2(dqc[i].title,"&cnCategory=" + mw.util.wikiUrlencode(browseCat)) +
'">' + dqc[i].title + '</a>';
}
}
if (dqc[i].title == title) { // start processing
liIdx = i;
}
}
}
}
function addCORS(){
if (window.location.hostname.indexOf(".m.") >= 0) { // mobile site
return "origin=" + window.location.protocol + "//" + window.location.hostname + "&";
}
return "";
}
function buildServer() {
if (window.location.hostname.indexOf(".m.") >= 0) { // mobile site
return mw.config.get("wgServer").replace(".", ".m.");
}
return mw.config.get("wgServer");
}
function buildApi(t,p) {
return buildServer() + mw.config.get("wgScriptPath") + "/api.php?" + addCORS() +
p + mw.util.wikiUrlencode(t);
}
function buildUrl2(t,p) {
return buildServer() + mw.config.get("wgScript")+"?title="+mw.util.wikiUrlencode(t)+p;
}
// end namespace: foCatNavi
}( window.foCatNavi = window.foCatNavi || {}, jQuery ));
if (mw.config.get("wgAction") == "view") {
var ns = mw.config.get("wgNamespaceNumber");
if (ns == 14) { // Kategorie:
jQuery(document).ready(foCatNavi.initCat);
}
if (ns == 0) {
jQuery(document).ready(foCatNavi.init);
}
}
if (mw.config.get("wgPageName") == "Hilfe:CatNavi" && mw.config.get("wgAction") == "view") {
jQuery(document).ready(foCatNavi.config);
}
//</nowiki>