Szerkesztő:Winston/kínai.js

A Wikipédiából, a szabad enciklopédiából

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
  • Opera: Nyomj Ctrl–F5-öt
/*
 * Knávom, azaz a kínai nevek átírását váltogató mechanika.
 *
 * A [[MediaWiki:Common.js]] tölti be, a [[Sablon:Kínai]] párja.
 */

kinai_primary = 'pinyin';

function kinai_switch() {
  var elements = document.getElementsByTagName('span');
  for (var i = 0; i < elements.length; i++) {
    if (elements[i].className != 'kinai-szoveg') {
      continue;
    }
    var pinyin = '';
    var magyaros = '';
    var hanzi = '';
    var egyeb = '';
    var cimszo = 0;
    var hidden = 0;

    var children = elements[i].getElementsByTagName('span');
    for (var j = 0; j < children.length; j++) {
      switch (children[j].className) {
        case 'pinyin':
          pinyin = children[j].innerHTML;
          break;
        case 'magyaros':
          magyaros = children[j].innerHTML;
          break;
        case 'hanzi':
          hanzi = children[j].innerHTML;
          break;
        case 'egyeb':
          egyeb = children[j].innerHTML;
          break;
        case 'cimszo':
          cimszo = 1;
          break;
        case 'hidden':
          hidden = 1;
          break;
      }
    }

    var str0 = '';
    var str1 = '';

    if (kinai_primary == 'pinyin') {
      str0 = '<span class="magyaros">' + magyaros + '</span>';
      if (hanzi || egyeb) {
        if (hanzi) {
          str1 = '(<span class="hanzi">' + hanzi + '</span>, <i>';
        } else {
          str1 = '<i>(';
        }
        str1 += '<span class="pinyin">' + pinyin + '</span>';
        if (egyeb) {
          str1 += ',</i> <span class="egyeb">' + egyeb + '</span>)';
        } else {
          str1 += '</i>)';
        }
      } else {
        str1 = '<i>(<span class="pinyin">' + pinyin + '</span>)</i>';
      }
    } else {
      str0 = '<span class="pinyin">' + pinyin + '</span>';
      if (hanzi || egyeb) {
        if (hanzi) {
          str1 = '(<span class="hanzi">' + hanzi + '</span>, <i>';
        } else {
          str1 = '<i>(';
        }
        str1 += '<span class="magyaros">' + magyaros + '</span>';
        if (egyeb) {
          str1 += ',</i> <span class="egyeb">' + egyeb + '</span>)';
        } else {
          str1 += '</i>)';
        }
      } else {
        str1 = '<i>(<span class="magyaros">' + magyaros + '</span>)</i>';
      }
    }

    if (cimszo) {
      str0 = '<span class="cimszo"><b>' + str0 + '</b></span>';
    }

    if (hidden) {
      elements[i].innerHTML = str0 + '<span class="hidden"> ' + str1 + '</span>';
    } else {
      elements[i].innerHTML = str0 + ' ' + str1;
    }
  }

  if (kinai_primary == 'pinyin') {
    kinai_primary = 'magyaros';
    document.cookie = 'kinai_primary=magyaros;path=/;expires=Tue, 19 Jan 2038 03:14:07 GMT';
  } else {
    kinai_primary = 'pinyin';
    document.cookie = 'kinai_primary=pinyin;path=/;expires=Tue, 19 Jan 2038 03:14:07 GMT';
  }
}

$(function () {
  if (!document.getElementById || !document.getElementsByTagName) {
    return;
  }

  /*
   * Csak akkor rakjuk ki a fület, ha van a cikkben megjelölt kínai név.
   */
  var kinai_inside = 0;
  var spans = document.getElementsByTagName('span');
  for (var i = 0; i < spans.length; i++) {
    if (spans[i].className == 'kinai-szoveg') {
      kinai_inside = 1;
      break;
    }
  }
  if (!kinai_inside) {
    return;
  }

  /*
   * Odacsapjuk a fület.
   */
  mw.util.addPortletLink('p-cactions', 'javascript:kinai_switch();', 'p./m.', 'ca-kinai-switch', 'Váltás pinyin és magyaros átírás közt');

  /*
   * Meg a kapcsolót a szócikk fölötti szöveghez is.
   */
   var switchInMagyarosKinai = document.getElementById("kinai_switch");
   switchInMagyarosKinai.style.display = "none";
   var switchLink = document.createElement('a');
   switchLink.setAttribute('href', 'javascript:kinai_switch();');
   switchLink.innerHTML = switchInMagyarosKinai.innerHTML;
   switchInMagyarosKinai.parentNode.insertBefore(switchLink,switchInMagyarosKinai);

  /*
   * Váltunk is rögtön, ha a user korábban magyarost választott. Persze ezt szebben is lehetne.
   */
  if (document.cookie.indexOf('kinai_primary=magyaros') != -1) {
    kinai_switch();
  }
});