MediaWiki:Gadget-MiniMe.js

Aus Wiktionary, dem freien Wörterbuch
// <nowiki>
"use strict";

/* MiniMe.js
** Minimizer for Wiktionary Entries
** Versteckt die Flexionstabellen und weitere Abschnitte

ft Flexionstabellen
wt Trennungsmöglichkeiten
as Aussprache
be Bedeutungen
hk Herkunft
gm Grammatische Merkmale
sy Synonyme
sv Sinnverwandte Wörter
gw Gegenwörter
vf Verkleinerungsformen
ob Oberbegriffe
ub Unterbegriffe
bs Beispiele
rw Redewendungen
sw Sprichwörter
cw Charakteristische Wortkombinationen
wb Wortbildungen
re Referenzen und weiterführende Informationen:
qu Quellen

**
*/

(function( _public, $, undefined ) {

 var hiddenFlexbox = false;

 var prefs = {};

_public.init = function () {
 debugger;
 _public.load();

 if (prefs.wt) _public.hideElements("Trennungsmöglichkeiten");
 if (prefs.as) _public.hideElements("Phonetik");
 if (prefs.be) _public.hideElements("Sinn und");
 if (prefs.hk) _public.hideElements("Etymologie");
 if (prefs.gm) _public.hideElements("Grammatische");
 if (prefs.sy) _public.hideElements("bedeutungsgleich");
 if (prefs.sv) _public.hideElements("Sinnverwandte");
 if (prefs.gw) _public.hideElements("Antonyme");
 if (prefs.vf) _public.hideElements("Diminutiv");
 if (prefs.ob) _public.hideElements("Hyperonyme");
 if (prefs.ub) _public.hideElements("Hyponyme");
 if (prefs.bs) _public.hideElements("Verwendungs");
 if (prefs.rw) _public.hideElements("Phraseologismen");
 if (prefs.sw) _public.hideElements("Parömien");
 if (prefs.cw) _public.hideElements("Signifikante");
 if (prefs.wb) _public.hideElements("Derivate");
// if (prefs.re) _public.hideElements("Wiktionary:Referenzen");
// if (prefs.qu) _public.hideElements("Quellen");


  var tabs = document.querySelectorAll(".inflection-table tr, .flexbox tr");

  if (tabs.length > 0) {

   var nl = document.createElement("a");
   nl.innerHTML = " \u00A0 \u2261 \u00A0 ";
   nl.href = mw.config.get("wgArticlePath").replace('$1',"Hilfe:MiniMe");
   nl.setAttribute("style", "color:#00E000");
   tabs[0].firstElementChild.insertBefore(nl, tabs[0].firstElementChild.firstChild);

   hiddenFlexbox = !prefs.ft;

   nl = document.createElement("a");
   if (!hiddenFlexbox) {
    nl.innerHTML = " ▽ ";
   } else {
    nl.innerHTML = " △ ";
   }
   nl.href = "#";
   nl.setAttribute("style", "color:#00E000;user-select:none;");
   nl.onclick = MiniMe.showFlexbox;
   nl.classList.add("minimeFlexbox");
   tabs[0].firstElementChild.insertBefore(nl, tabs[0].firstElementChild.firstChild);

   if (prefs.ft) {
    hideFlexboxes();
   }
  }

}


_public.showFlexbox = function () {
 var alla = document.querySelectorAll(".minimeFlexbox");
 for (var i = 0; i < alla.length; i++) {
  if (hiddenFlexbox) {
   alla[i].innerHTML = " ▽ ";
  } else {
   alla[i].innerHTML = " △ ";
  }
 }
 hiddenFlexbox = !hiddenFlexbox;
 hideFlexboxes();

 return false;
}


_public.config = function ()
{
  _public.load();
  $("#MiniMeConfig").after(
    '<form>', '<b><span id="minimelangs" name="form1">Verstecken:</span','</b><br />',
    newBox("ft", "Flexionstabellen") +
    newBox("wt", "Worttrennung") +
    newBox("as", "Aussprache") +
    newBox("be", "Bedeutungen") +
    newBox("hk", "Herkunft") +
    newBox("gm", "Grammatische Merkmale") +
    newBox("sy", "Synonyme") +
    newBox("sv", "Sinnverwandte Wörter") +
    newBox("gw", "Gegenwörter") +
    newBox("kf", "Verkleinerungsformen") +
    newBox("gf", "Vergrößerungsformen") +
    newBox("ob", "Oberbegriffe") +
    newBox("ub", "Unterbegriffe") +
    newBox("bs", "Beispiele") +
    newBox("rw", "Redewendungen") +
    newBox("sw", "Sprichwörter") +
    newBox("cw", "Charakteristische Wortkombinationen") +
    newBox("wb", "Wortbildungen") +
//    newBox("re", "Referenzen und weiterführende Informationen") +
//    newBox("qu", "Quellen") +
    '</form>');
  document.getElementById("cbox_ft").checked = prefs.ft;
  document.getElementById("cbox_wt").checked = prefs.wt;
  document.getElementById("cbox_as").checked = prefs.as;
  document.getElementById("cbox_be").checked = prefs.be;
  document.getElementById("cbox_hk").checked = prefs.hk;
  document.getElementById("cbox_gm").checked = prefs.gm;
  document.getElementById("cbox_sy").checked = prefs.sy;
  document.getElementById("cbox_sv").checked = prefs.sv;
  document.getElementById("cbox_gw").checked = prefs.gw;
  document.getElementById("cbox_kf").checked = prefs.kf;
  document.getElementById("cbox_gf").checked = prefs.gf;
  document.getElementById("cbox_ob").checked = prefs.ob;
  document.getElementById("cbox_ub").checked = prefs.ub;
  document.getElementById("cbox_bs").checked = prefs.bs;
  document.getElementById("cbox_rw").checked = prefs.rw;
  document.getElementById("cbox_sw").checked = prefs.sw;
  document.getElementById("cbox_cw").checked = prefs.cw;
  document.getElementById("cbox_wb").checked = prefs.wb;
//  document.getElementById("cbox_re").checked = prefs.re;
//  document.getElementById("cbox_qu").checked = prefs.qu;
  createButtonSave();
}


function newBox(id,txt) {
  return '<input type="checkbox" id="cbox_' + id + '" name="form1" value="' + txt +
         '">' + txt + '<br />'
}


function hideFlexboxes() {

  var i;
  var tabs = document.querySelectorAll(".inflection-table tr, .flexbox tr");

  if (!hiddenFlexbox) {
   for (i = 1; i < tabs.length; i++) {
    tabs[i].style.display = "none";
   }
  } else {
   for (i = 1; i < tabs.length; i++) {
    tabs[i].style.display = "";
   }
  }

}


_public.hideElements = function(title) {
 var a = document.querySelectorAll('p[title^="' + title + '"');
 var node;

 var i = 0;
 for (i = 0; i < a.length; i++) {
  node = a[i];
  var sibl = a[i].nextSibling;
  while (sibl && sibl.nodeName != "P" && sibl.nodeName != "H1" && sibl.nodeName != "H2"
   && sibl.nodeName != "H3" && sibl.nodeName != "H4" && sibl.nodeName != "H5" && sibl.nodeName != "H6") {
   if (sibl.style) {
    sibl.style.display = "none";
   }
   sibl = sibl.nextSibling;
  }

 }

 var tabs = document.querySelectorAll('p[title^="' + title + '"');
 var inner = " ▽ ";
 if (title == "Sinn und") {
   inner = "<br />" + inner;
 }

 if (tabs.length > 0) {
  for (i = 0; i < tabs.length; i++) {
   var nl = document.createElement("SPAN");
   nl.innerHTML = inner;
   nl.setAttribute("style", "color:#00E000;user-select:none;");
   nl.onclick = function(){ MiniMe.showElements(title); };
   if (tabs[i].firstChild && tabs[i].firstChild.nodeName == "SPAN") {
    tabs[i].firstChild.onclick = function(){ MiniMe.showElements(title); };
    tabs[i].firstChild.innerHTML = inner;
   } else {
    tabs[i].insertBefore(nl, tabs[i].firstChild);
   }
  }
 }

};


_public.showElements = function(title) {
 var a = document.querySelectorAll('p[title^="' + title + '"');
 var node;

 var i = 0;
 for (i = 0; i < a.length; i++) {
  node = a[i];
  var sibl = a[i].nextSibling;
  while (sibl && sibl.nodeName != "P" && sibl.nodeName != "H1" && sibl.nodeName != "H2"
   && sibl.nodeName != "H3" && sibl.nodeName != "H4" && sibl.nodeName != "H5" && sibl.nodeName != "H6") {
   if (sibl.style) {
    sibl.style.display = "";
   }
   sibl = sibl.nextSibling;
  }

 }

 var tabs = document.querySelectorAll('p[title^="' + title + '"');
 var inner = " △ ";
 if (title == "Sinn und") {
   inner = "<br />" + inner;
 }

 if (tabs.length > 0) {
  for (i = 0; i < tabs.length; i++) {

   var nl = document.createElement("SPAN");
   nl.setAttribute("style", "color:#00E000;user-select:none;");
   nl.onclick = function(){ MiniMe.hideElements(title); };
   if (tabs[i].firstChild && tabs[i].firstChild.nodeName == "SPAN") {
    tabs[i].firstChild.onclick = function(){ MiniMe.hideElements(title); };
    tabs[i].firstChild.innerHTML = inner;
   } else {
    tabs[i].insertBefore(nl, tabs[i].firstChild);
   }
  }
 }

};


_public.load = function () {
  var value = mw.cookie.get('PreferencesMiniMeJs') || '';
  if (value.length >= 0) {
    prefs.ft = value.includes("|FT|");
    prefs.wt = value.includes("|WT|");
    prefs.as = value.includes("|AS|");
    prefs.be = value.includes("|BE|");
    prefs.hk = value.includes("|HK|");
    prefs.gm = value.includes("|GM|");
    prefs.sy = value.includes("|SY|");
    prefs.sv = value.includes("|SV|");
    prefs.gw = value.includes("|GW|");
    prefs.kf = value.includes("|KF|");
    prefs.gf = value.includes("|GF|");
    prefs.ob = value.includes("|OB|");
    prefs.ub = value.includes("|UB|");
    prefs.bs = value.includes("|BS|");
    prefs.rw = value.includes("|RW|");
    prefs.sw = value.includes("|SW|");
    prefs.cw = value.includes("|CW|");
    prefs.wb = value.includes("|WB|");
//    prefs.re = value.includes("|RE|");
//    prefs.qu = value.includes("|QU|");
  }
}


_public.save = function () {

  prefs.ft = document.getElementById("cbox_ft").checked;
  prefs.wt = document.getElementById("cbox_wt").checked;
  prefs.as = document.getElementById("cbox_as").checked;
  prefs.be = document.getElementById("cbox_be").checked;
  prefs.hk = document.getElementById("cbox_hk").checked;
  prefs.gm = document.getElementById("cbox_gm").checked;
  prefs.sy = document.getElementById("cbox_sy").checked;
  prefs.sv = document.getElementById("cbox_sv").checked;
  prefs.gw = document.getElementById("cbox_gw").checked;
  prefs.kf = document.getElementById("cbox_kf").checked;
  prefs.gf = document.getElementById("cbox_gf").checked;
  prefs.ob = document.getElementById("cbox_ob").checked;
  prefs.ub = document.getElementById("cbox_ub").checked;
  prefs.bs = document.getElementById("cbox_bs").checked;
  prefs.rw = document.getElementById("cbox_rw").checked;
  prefs.sw = document.getElementById("cbox_sw").checked;
  prefs.cw = document.getElementById("cbox_cw").checked;
  prefs.wb = document.getElementById("cbox_wb").checked;
//  prefs.re = document.getElementById("cbox_re").checked;
//  prefs.qu = document.getElementById("cbox_qu").checked;

  var value = "|";
  if (prefs.ft) { value += "FT|"; } else { value += "ft|"; }
  if (prefs.wt) { value += "WT|"; } else { value += "wt|"; }
  if (prefs.as) { value += "AS|"; } else { value += "as|"; }
  if (prefs.be) { value += "BE|"; } else { value += "be|"; }
  if (prefs.hk) { value += "HK|"; } else { value += "hk|"; }
  if (prefs.gm) { value += "GM|"; } else { value += "gm|"; }
  if (prefs.sy) { value += "SY|"; } else { value += "sy|"; }
  if (prefs.sv) { value += "SV|"; } else { value += "sv|"; }
  if (prefs.gw) { value += "GW|"; } else { value += "gw|"; }
  if (prefs.kf) { value += "KF|"; } else { value += "kf|"; }
  if (prefs.gf) { value += "GF|"; } else { value += "gf|"; }
  if (prefs.ob) { value += "OB|"; } else { value += "ob|"; }
  if (prefs.ub) { value += "UB|"; } else { value += "ub|"; }
  if (prefs.bs) { value += "BS|"; } else { value += "bs|"; }
  if (prefs.rw) { value += "RW|"; } else { value += "rw|"; }
  if (prefs.sw) { value += "SW|"; } else { value += "sw|"; }
  if (prefs.cw) { value += "CW|"; } else { value += "cw|"; }
  if (prefs.wb) { value += "WB|"; } else { value += "wb|"; }
//  if (prefs.re) { value += "RE|"; } else { value += "re|"; }
//  if (prefs.qu) { value += "QU|"; } else { value += "qu|"; }

  mw.cookie.set('PreferencesMiniMeJs', value, {expires: 86400 * 399});
  document.getElementById("speicher").style.display = '';
}


function createButtonSave(){
  $("#MiniMeSave").after('<br />',
    '<input type="button" title="Einstellungen in einem Cookie speichern" value="Einstellungen speichern" onclick="MiniMe.save();return false;">','<span id="speicher" style="display:none"> gespeichert</span>');
}


}( window.MiniMe = window.MiniMe || {}, jQuery ));


if (mw.config.get("wgNamespaceNumber") == 0 && mw.config.get("wgAction") == "view") { // Einträge
 jQuery(document).ready(MiniMe.init);
}

if (mw.config.get("wgPageName") == "Hilfe:MiniMe" && mw.config.get("wgAction") == "view") {
  jQuery(document).ready(MiniMe.config);
}

// </nowiki>