MediaWiki:Gadget-kinai.js
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
*
* [[Sablon:Kínai]] stb.
* Eredeti kód: [[User:Chery/kínai.js]]
*/
var kinai_primary = 'magyaros';
/**
* Switch between transliterations
*
* @param {jQuery.Event|null} e The jQuery event, if available. The default
* action will be prevented if given.
* @param {jQuery|undefined} $content Content block to work on. If omitted,
* work on whole page.
*/
function switchKinai( e, $content ) {
if ( e ) e.preventDefault();
$( '.kinai-szoveg', $content ).each( function kinai_switch_foreach() {
var pinyin = $( 'span.pinyin', this ).prop( 'outerHTML' ) || '';
var magyaros = $( 'span.magyaros', this ).prop( 'outerHTML' ) || '';
var hanzi = $( 'span.hanzi', this ).prop( 'outerHTML' );
var egyeb = $( 'span.egyeb', this ).prop( 'outerHTML' );
var cimszo = $( 'span.cimszo', this ).length;
var hidden = $( 'span.hidden', this ).length;
var str0 = (kinai_primary === 'pinyin') ? magyaros : pinyin;
var str1 = (kinai_primary === 'pinyin') ? pinyin : magyaros;
if (cimszo) {
str0 = '<span class="cimszo"><b>' + str0 + '</b></span>';
}
if (!hidden) {
str0 += ' ';
str0 += (hanzi) ? '(' + hanzi + ', <i>' : '<i>(';
str0 += str1;
str0 += (egyeb) ? ',</i> ' + egyeb + ')' : ')</i>';
} else {
if (hanzi) {
str0 += ' (' + hanzi + ')';
}
str0 += '<span class="hidden">' + str1 + '</span>';
}
$(this).html(str0);
} );
if (kinai_primary === 'pinyin') {
kinai_primary = 'magyaros';
mw.storage.set('kinai-primary', 'magyaros');
} else {
kinai_primary = 'pinyin';
mw.storage.set('kinai-primary', 'pinyin');
}
}
/**
* Initialization on page or content load
*
* @param {jQuery} $content The content element
*/
function magyarosKinaiInit( $content ) {
// Csak akkor rakjuk ki a fület, ha van a cikkben megjelölt kínai név.
if ( !$content.find( '.kinai-szoveg' ).length ) {
return;
}
// Odacsapjuk a fület, ha még nincs.
$.when(
mw.loader.using( 'mediawiki.util' ),
$.ready
).then( function addTab() {
if ( !$( '#ca-kinai-switch' ).length ) {
var portletLink = mw.util.addPortletLink( 'p-cactions', '#', 'p./m.', 'ca-kinai-switch', 'Váltás pinjin és magyaros átírás közt' );
$( portletLink ).click( switchKinai );
}
} );
// Meg a kapcsolót a szócikk fölötti szöveghez is.
$content.find( '#kinai_switch, .kinai_switch' ).each( function addInlineLink() {
$( '<a>' )
.attr( 'href', '#' )
.addClass( 'kinai_switch' )
.click( switchKinai )
.html( $( this ).html() )
.replaceAll( this );
} );
// Váltunk is rögtön, hogy kezdetben is a szkript szerint jelenjen meg. Persze ezt szebben is lehetne.
kinai_primary = (mw.storage.get('kinai-primary') == 'pinyin') ? 'magyaros' : 'pinyin';
// Ha elég gyorsak voltunk, akkor itt még mindig nincs a DOM-ban a cikk szövege, úgyhogy átadjuk.
switchKinai( null, $content );
}
mw.hook( 'wikipage.content' ).add( magyarosKinaiInit );