MediaWiki:Gadget-sablonbesav.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
  • Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
// -*- mode:java; coding:utf-8 -*-
// <nowiki>

var $currentFocused;

/**
 * Insert a character.
 * @param {Event} e
 */
function insertCharacter( e ) {
	e.preventDefault();
	var char = $( this ).data( 'mw-charinsert-start' );
	if ( $currentFocused.length ) {
		$currentFocused.textSelection(
			'encapsulateSelection', {
				pre: char,
				peri: '',
				post: ''
			}
		);
	}
}

/**
 * Generate the box element containing the spec chars.
 * @return {jQuery} The box
 */
function createCustomBar() {
	var insert = [
		[ '±', '±' ],
		[ '&lt;br&gt;', '<br>' ],
		[ '<small>lektor</small>', '{{lektor}}' ],
		[ '<small>nincs formázva</small>', '{{nincs formázva}}' ],
		[ '<small>szubcsonk</small>', '{{szubcsonk|~~' + '~' + '~~}}' ],
		[ '<small>egyért2</small>', '{{Egyért2|erről|itt}}' ],
		[ '<small>teszt</small>', '{{subst:teszt}}' ],
		[ '<small>teszt2</small>', '{{subst:teszt2}}' ],
		[ '<small>stop!</small>', '{{subst:teszt3}}' ],
		[ '<small>vandál</small>', '{{subst:vandalizmus}}' ],
		[ '<small>utolsó!</small>', '{{subst:teszt4rögtön}}' ],
		[ '<small>blokkolva</small>', '{{subst:blokkolva|1 órára|oka}}' ],
		[ '<small>nemásolj!</small>', '{{subst:nemásolj|lap neve|ahonnan másolta}}' ],
		[ '<small>adjforrást!</small>', '{{subst:adjforrást|kép neve}}' ],
		[ '<small>törlés</small>', '{{törlés}}' ],
		[ '<small>azonnali</small>', '{{azonnal törlendő||2=~~' + '~~}}' ],
		[ '<small>jogsértő</small>', '{{jogsértő|url=}}' ],
		[ '<small>megoldva</small>', '{{megoldva|~~' + '~~}}' ],
		[ '<small>függőben</small>', '{{függőben|~~' + '~~}}' ],
		[ '<small>kategória</small>', '[[Kategória:]]' ],
		[ '<small>kalapos</small>', fixLatin1Chars ],
		[ '<small>idézőjel</small>', fixHungarianQuotes ],
		[ '<small>dátum</small>', translateDatesEnHu ],
		[ '<small>ország</small>', orszagEnHu ],
		[ '<small>orszSabl</small>', orszagSablon ],
		[ '<small>csere</small>', customReplaceForm ],
		[ '<small>aláíratlan</small>', '{{aláíratlan|}}' ],
		[ '<small>üdvözlet</small>', '{{subst:Regisztrált szerkesztők üdvözlése}}' ],
		[ '<small>élő</small>', '{{élő}}' ]
	];
	var $list = $( '<ul>' ).addClass( 'hlist' );
	$.each( insert, function () {
		var text = this[ 0 ],
			func = this[ 1 ],
			$a = $( '<a>' )
				.attr( 'href', '#' )
				.html( text );
		if ( typeof func === 'function' ) {
			$a.click( func );
		} else {
			$a.data( 'mw-charinsert-start', func );
			$a.click( insertCharacter );
		}
		// jQuery doesn't insert any whitespace between <li>s by default
		$list.append( ' ' );
		$( '<li>' )
			.append( $a )
			.appendTo( $list );
	} );
	var $boxDiv = $( '<div>' )
		.attr( 'id', 'customBar' )
		.append(
			$( '<a>' )
				.attr( 'href', '//hu.wiki.x.io/wiki/Wikipédia:Különleges_karakterek' )
				.attr( 'title', 'Wikipédia:Különleges karakterek' )
				.text( 'Sablonok, karakterek:' ),
			$list
		);
	return $boxDiv;
}

/**
 * Replace a regexp in the textbox
 * @param {string|RegExp} replaceWhat The regexp to replace as string literal or RegExp object
 * @param {string} replaceWith The text to replace with
 * @param {string|null} modifiers Regexp modifiers
 */
function replaceRegexp( replaceWhat, replaceWith, modifiers ) {
	if ( !modifiers ) modifiers = '';
	var pattern = new RegExp( replaceWhat, modifiers );
	var $textbox = $( '#wpTextbox1' );
	$textbox.val( $textbox.val().replace( pattern, replaceWith ) );
}
 
/**
 * Replace Latin 1 chars with properly encoded Hungarian Latin 2 equivalents
 * @param {Event} e
 */
function fixLatin1Chars( e ) {
	e.preventDefault();
	replaceRegexp( 'Õ', 'Ő', 'g' );
	replaceRegexp( 'Û', 'Ű', 'g' );
	replaceRegexp( 'õ', 'ő', 'g' );
	replaceRegexp( 'û', 'ű', 'g' );
	replaceRegexp( '&#337;', 'ő', 'g' );
	replaceRegexp( '&#369;', 'ű', 'g' );
}
 
/**
 * Replace English style "" quotes with Hungarian „”
 * @param {Event} e
 */
function fixHungarianQuotes( e ) {
	e.preventDefault();
	replaceRegexp('"([^"]*)"', '„$1”', "mg");
}
 
/**
 * Translate dates from English format to Hungarian
 * Currently it only handles linkified dates
 * @param {Event} e
 */
function translateDatesEnHu( e ) {
	e.preventDefault();
	var months = [
		[ 'January', 'január' ],
		[ 'February', 'február' ],
		[ 'March', 'március' ],
		[ 'April', 'április' ],
		[ 'May', 'május' ],
		[ 'June', 'június' ],
		[ 'July', 'július' ],
		[ 'August', 'augusztus' ],
		[ 'September', 'szeptember' ],
		[ 'October', 'október' ],
		[ 'November', 'november' ],
		[ 'December', 'december' ]
	];

	$.each( months, function () {
		var enMonth = this[ 0 ];
		var huMonth = this[ 1 ];
		// alert( 'Replacing ' + enMonth + ' with ' + huMonth );
		// Replace "[[November 15]], [[2005]]" with "[[2005]]. [[november 15.]]"
		// $1 = "15", $2 = "2005"
		replaceRegexp( '\\[\\[' + enMonth + ' (\\d+)\\]\\],?\\s*\\[\\[(\\d{4})\\]\\]', '[[$2]]. [[' + huMonth + ' $1.]]', 'gm' );
		replaceRegexp( '\\[\\[(\\d+) ' + enMonth + '\\]\\]', '[[' + huMonth + ' $1.]]', 'gm' );
	} );
}

/**
 * Replace all occurences of a user-entered regexp with a user entered replacement
 * @param {Event} e
 */
function customReplaceForm( e ) {
	e.preventDefault();
	var $form = $( '<form>' )
		.html(
			'<label>Cseréld ezt a reguláris kifejezést: <input id="customReplaceThis" type="text" size="40"></label> ' +
			'<label>erre: <input id="customReplaceWith" type="text" size="40"></label> ' +
			'<label><input id="customReplaceCS" type="checkbox"> méretérzékeny</label> ' +
			'<button type="submit">csere</button>'
		)
		.submit( performCustomReplace );
	insertCustomForm( $form );
	$( '#customReplaceThis' ).focus();
}

/**
 * Perform replacement of the user-entered regexp
 * @param {Event} e
 */
function performCustomReplace( e ) {
	var replaceThis = $( '#customReplaceThis', this ).val(),
		replaceWith = $( '#customReplaceWith', this ).val(),
		cs = $( '#customReplaceCS', this ).is( ':checked' ),
		flags = 'gm';
	if ( !cs ) {
		flags += 'i';
	}
	replaceRegexp( replaceThis, replaceWith, flags );
	e.preventDefault();
	return false;
}

/**
 * Insert a custom form.
 * @param {jQuery} $formContent The form to insert
 */
function insertCustomForm( $formContent ) {
	var $customBar = $( '#customBar' );
	if ( !$customBar.length ) return;

	var $customForm = $( '<div>' )
		.attr( 'id', 'customForm' )
		.append(
			$( '<span>' )
				.attr( 'id', 'customFormClose' )
				.click( deleteCustomForm ),
			$formContent
		);

	var $oldForm = $( '#customForm' );
	if ( $oldForm.length ) {
		$oldForm.replaceWith( $customForm );
	} else {
		$customBar.before( $customForm );
	}
}

/**
 * Remove the custom form.
 */
function deleteCustomForm() {
	$( '#customForm' ).remove();
}


var orszag = [
	["Earth|World", "Föld"],
	["Côte d'Ivoire", "Elefántcsontpart"],
	["People's Republic of China|China", "Kína"],
	["Azores", "Azori-szigetek"],
	["American Samoa", "Amerikai Szamoa"],
	["Antarctica", "Antarktisz"],
	["Ashmore and Cartier Islands", "Ashmore- és Cartier-szigetek"],
	["Baker Island", "Baker-sziget"],
	["Bermuda", "Bermuda-szigetek"],
	["Bouvet Island", "Bouvet-sziget"],
	["British Indian Ocean Territory", "Brit Indiai-óceáni Terület"],
	["British Virgin Islands", "Brit Virgin-szigetek"],
	["West Bank", "Ciszjordánia"],
	["Clipperton Island", "Clipperton-sziget"],
	["Cook Islands", "Cook-szigetek"],
	["South Georgia and the South Sandwich Islands", "Déli-Georgia és Déli-Sandwich-szigetek"],
	["Turkish Republic of Northern Cyprus", "Észak-Ciprus"],
	["Northern Mariana Islands", "Északi-Mariana-szigetek"],
	["European Union", "Európai Unió"],
	["Europa Island", "Európa-sziget"],
	["Falkland Islands (Islas Malvinas)", "Falkland-szigetek"],
	["Falkland Islands", "Falkland-szigetek"],
	["Faroe Islands", "Feröer szigetek"],
	["French Southern and Antarctic Lands", "Francia déli területek"],
	["French Guiana", "Francia Guyana"],
	["French Polynesia", "Francia Polinézia"],
	["Gaza Strip", "Gázai övezet"],
	["Gibraltar", "Gibraltár"],
	["Glorioso Islands", "Glorieuse-szigetek"],
	["Greenland", "Grönland"],
	["Heard Island and McDonald Islands", "Heard-sziget és McDonald-szigetek"],
	["Netherlands Antilles", "Holland Antillák"],
	["Hong Kong", "Hongkong"],
	["Howland Island", "Howland-sziget"],
	["Jan Mayen", "Jan Mayen-sziget"],
	["Jarvis Island", "Jarvis-sziget"],
	["Johnston Atoll", "Johnston-atoll"],
	["Juan de Nova Island", "Juan de Nova-sziget"],
	["Cayman Islands", "Kajmán-szigetek"],
	["Christmas Island", "Karácsony-sziget"],
	["Kingman Reef", "Kingman-zátony"],
	["Cocos (Keeling) Islands", "Kókusz (Keeling)-szigetek"],
	["Coral Sea Islands", "Korall-tengeri-szigetek"],
	["Macau", "Makaó"],
	["Macao", "Makaó"],
	["Isle of Man", "Man-sziget"],
	["Man, Isle of", "Man-sziget"],
	["Midway Islands", "Midway-szigetek"],
	["Navassa Island", "Navassa-sziget"],
	["Norfolk Island", "Norfolk-sziget"],
	["Western Sahara", "Nyugat-Szahara"],
	["Palestinian National Authority", "Palesztin Nemzeti Hatóság"],
	["Palmyra Atoll", "Palmyra-atoll"],
	["Paracel Islands", "Paracel-szigetek"],
	["Pitcairn Islands", "Pitcairn-szigetek"],
	["Reunion", "Réunion"],
	["Saint Pierre and Miquelon", "Saint-Pierre és Miquelon"],
	["Saint-Pierre and Miquelon", "Saint-Pierre és Miquelon"],
	["Svalbard", "Spitzbergák"],
	["Spratly Islands", "Spratly-szigetek"],
	["Saint Helena", "Szent Ilona"],
	["Somaliland", "Szomáliföld"],
	["Tokelau", "Tokelau-szigetek"],
	["Tromelin Island", "Tromelin-sziget"],
	["Turks and Caicos Islands", "Turks- és Caicos-szigetek"],
	["New Caledonia", "Új-Kaledónia"],
	["Virgin Islands", "Virgin-szigetek"],
	["Wake Island", "Wake-sziget"],
	["Wallis and Futuna", "Wallis és Futuna"],
	["Taiwan", "Tajvan"],
	["Burma", "Mianmar"],
	["Timor-Leste", "Kelet-Timor"],
	["Gambia", " The", "Gambia"],
	["Democratic People's Republic of Korea", "Koreai Népi Demokratikus Köztársaság"],
	["Republic of Korea", "Koreai Köztársaság"],
	["Korea", " South", "Koreai Köztársaság"],
	["Korea", " North", "Koreai Népi Demokratikus Köztársaság"],
	["Democratic Republic of the Congo", "Kongói Demokratikus Köztársaság"],
	["Democratic Congo", "Kongói Demokratikus Köztársaság"],
	["Congo", " Republic of the", "Kongó"],
	["Republic of Ireland|Ireland", "Írország"],
	["Republic of Ireland", "Írország"],
	["Republic of China (Taiwan)", "Tajvan"],
	["Georgia (country)|Georgia", "Grúzia"],
	["Federated States of Micronesia", "Mikronézia"],
	["Micronesia", " Federated States of", "Mikronézia"],
	["São Tome and Principe", "São Tomé és Príncipe"],
	["Bahamas", " The", "Bahama-szigetek"],
	["The Bahamas", "Bahama-szigetek"],
	["Special Administrative Region|S.A.R.", "Különleges Közigazgatású Régió|KKR"],
	["Special Administrative Region|SAR", "Különleges Közigazgatású Régió|KKR"],
	["Afghanistan", "Afganisztán"],
	["Albania", "Albánia"],
	["Algeria", "Algéria"],
	["United States", "Amerikai Egyesült Államok"],
	["Andorra", "Andorra"],
	["Angola", "Angola"],
	["Antigua and Barbuda", "Antigua és Barbuda"],
	["United Arab Emirates", "Arab Emírségek"],
	["Argentina", "Argentína"],
	["Australia", "Ausztrália"],
	["Austria", "Ausztria"],
	["Azerbaijan", "Azerbajdzsán"],
	["Bahamas", "Bahama-szigetek"],
	["Bahrain", "Bahrein"],
	["Bangladesh", "Banglades"],
	["Barbados", "Barbados"],
	["Belarus", "Fehéroroszország"],
	["Belgium", "Belgium"],
	["Belize", "Belize"],
	["Benin", "Benin"],
	["Bhutan", "Bhután"],
	["Guinea-Bissau", "Bissau-Guinea"],
	["Bolivia", "Bolívia"],
	["Bosnia and Herzegovina", "Bosznia-Hercegovina"],
	["Botswana", "Botswana"],
	["Brazil", "Brazília"],
	["Brunei", "Brunei"],
	["Bulgaria", "Bulgária"],
	["Burkina Faso", "Burkina Faso"],
	["Burundi", "Burundi"],
	["Chile", "Chile"],
	["Cyprus", "Ciprus"],
	["Comoros", "Comore-szigetek"],
	["Costa Rica", "Costa Rica"],
	["Chad", "Csád"],
	["Czech Republic", "Csehország"],
	["Denmark", "Dánia"],
	["South Africa", "Dél-afrikai Köztársaság"],
	["Dominican Republic", "Dominikai Köztársaság"],
	["Dominica", "Dominikai Közösség"],
	["Djibouti", "Dzsibuti"],
	["Ecuador", "Ecuador"],
	["Equatorial Guinea", "Egyenlítői-Guinea"],
	["Egypt", "Egyiptom"],
	["Cote d'Ivoire", "Elefántcsontpart"],
	["Eritrea", "Eritrea"],
	["Estonia", "Észtország"],
	["Ethiopia", "Etiópia"],
	["Fiji", "Fidzsi-szigetek"],
	["Finland", "Finnország"],
	["France", "Franciaország"],
	["Philippines", "Fülöp-szigetek"],
	["Gabon", "Gabon"],
	["The Gambia", "Gambia"],
	["Ghana", "Ghána"],
	["Greece", "Görögország"],
	["Grenada", "Grenada"],
	["Georgia", "Grúzia"],
	["Guatemala", "Guatemala"],
	["Guinea", "Guinea"],
	["Guyana", "Guyana"],
	["Haiti", "Haiti"],
	["Netherlands", "Hollandia"],
	["Honduras", "Honduras"],
	["Croatia", "Horvátország"],
	["India", "India"],
	["Indonesia", "Indonézia"],
	["Iraq", "Irak"],
	["Iran", "Irán"],
	["Ireland", "Írország"],
	["Iceland", "Izland"],
	["Israel", "Izrael"],
	["Jamaica", "Jamaica"],
	["Japan", "Japán"],
	["Yemen", "Jemen"],
	["Jordan", "Jordánia"],
	["Cambodia", "Kambodzsa"],
	["Cameroon", "Kamerun"],
	["Canada", "Kanada"],
	["Qatar", "Katar"],
	["Kazakhstan", "Kazahsztán"],
	["East Timor", "Kelet-Timor"],
	["Kenya", "Kenya"],
	["People's Republic of China", "Kína"],
	["Kyrgyzstan", "Kirgizisztán"],
	["Kiribati", "Kiribati"],
	["Colombia", "Kolumbia"],
	["Republic of the Congo", "Kongó"],
	["Democratic Republic of the Congo", "Kongói Demokratikus Köztársaság"],
	["South Korea", "Koreai Köztársaság"],
	["North Korea", "Koreai Népi Demokratikus Köztársaság"],
	["Central African Republic", "Közép-afrikai Köztársaság"],
	["Cuba", "Kuba"],
	["Kuwait", "Kuvait"],
	["Laos", "Laosz"],
	["Poland", "Lengyelország"],
	["Lesotho", "Lesotho"],
	["Latvia", "Lettország"],
	["Lebanon", "Libanon"],
	["Liberia", "Libéria"],
	["Libya", "Líbia"],
	["Liechtenstein", "Liechtenstein"],
	["Lithuania", "Litvánia"],
	["Luxembourg", "Luxemburg"],
	["Republic of Macedonia", "Macedónia"],
	["Madagascar", "Madagaszkár"],
	["Hungary", "Magyarország"],
	["Malaysia", "Malajzia"],
	["Malawi", "Malawi"],
	["Maldives", "Maldív-szigetek"],
	["Mali", "Mali"],
	["Malta", "Málta"],
	["Morocco", "Marokkó"],
	["Marshall Islands", "Marshall-szigetek"],
	["Mauritania", "Mauritánia"],
	["Mauritius", "Mauritius"],
	["Mexico", "Mexikó"],
	["Myanmar", "Mianmar"],
	["Micronesia", "Mikronézia"],
	["Moldova", "Moldova"],
	["Monaco", "Monaco"],
	["Mongolia", "Mongólia"],
	["Mozambique", "Mozambik"],
	["United Kingdom", "Nagy-Britannia"],
	["Namibia", "Namíbia"],
	["Nauru", "Nauru"],
	["Germany", "Németország "],
	["Nepal", "Nepál"],
	["Nicaragua", "Nicaragua"],
	["Niger", "Niger"],
	["Nigeria", "Nigéria"],
	["Norway", "Norvégia"],
	["Italy", "Olaszország"],
	["Russia", "Oroszország"],
	["Armenia", "Örményország"],
	["Pakistan", "Pakisztán"],
	["Palau", "Palau"],
	["Panama", "Panama"],
	["Papua New Guinea", "Pápua Új-Guinea"],
	["Paraguay", "Paraguay"],
	["Peru", "Peru"],
	["Portugal", "Portugália"],
	["Romania", "Románia"],
	["Oman", "Omán"],
	["Rwanda", "Ruanda"],
	["Saint Kitts and Nevis", "Saint Kitts és Nevis"],
	["Saint Lucia", "Saint Lucia"],
	["Saint Vincent and the Grenadines", "Saint Vincent"],
	["Solomon Islands", "Salamon-szigetek"],
	["El Salvador", "Salvador"],
	["San Marino", "San Marino"],
	["São Tomé and Príncipe", "São Tomé és Príncipe"],
	["Seychelles", "Seychelle-szigetek"],
	["Sierra Leone", "Sierra Leone"],
	["Spain", "Spanyolország"],
	["Sri Lanka", "Srí Lanka"],
	["Suriname", "Suriname"],
	["Switzerland", "Svájc"],
	["Sweden", "Svédország"],
	["Samoa", "Szamoa"],
	["Saudi Arabia", "Szaúd-Arábia"],
	["Senegal", "Szenegál"],
	["Serbia and Montenegro", "Szerbia és Montenegró"],
	["Singapore", "Szingapúr"],
	["Syria", "Szíria"],
	["Slovakia", "Szlovákia"],
	["Slovenia", "Szlovénia"],
	["Somalia", "Szomália"],
	["Sudan", "Szudán"],
	["Swaziland", "Szváziföld"],
	["Tajikistan", "Tádzsikisztán"],
	["Republic of China", "Tajvan"],
	["Tanzania", "Tanzánia"],
	["Thailand", "Thaiföld"],
	["Togo", "Togo"],
	["Tonga", "Tonga"],
	["Turkey", "Törökország"],
	["Trinidad and Tobago", "Trinidad és Tobago"],
	["Tunisia", "Tunézia"],
	["Tuvalu", "Tuvalu"],
	["Turkmenistan", "Türkmenisztán"],
	["Uganda", "Uganda"],
	["New Zealand", "Új-Zéland"],
	["Ukraine", "Ukrajna"],
	["Uruguay", "Uruguay"],
	["Uzbekistan", "Üzbegisztán"],
	["Vanuatu", "Vanuatu"],
	["Vatican City", "Vatikán"],
	["Venezuela", "Venezuela"],
	["Vietnam", "Vietnam"],
	["Zambia", "Zambia"],
	["Zimbabwe", "Zimbabwe"],
	["Cape Verde", "Zöld-foki-szigetek"],
	["Soviet Union", "Szovjetunió"],
	["Czechoslovakia", "Csehszlovákia"],
	["Yugoslavia", "Jugoszlávia"],
	["England", "Anglia"],
	["USA", "USA"],
	["West Germany", "NSZK"],
	["GDR", "NDK"],
	["East Germany", "NDK"]
];

/**
 * Replace English country names to Hungarian ones.
 * @param {Event} e
 */
function orszagEnHu( e ) {
	e.preventDefault();
	$.each( orszag, function () {
		replaceRegexp( this[ 0 ], this[ 1 ], 'gm' );
	} );
}

/**
 * Use country templates for country names (in Hungarian).
 * @param {Event} e
 */
function orszagSablon( e ) {
	e.preventDefault();
	$.each( orszag, function () {
		var huorszag = this[ 1 ];
		var sablon = '{{' + huorszag + '}}';
		replaceRegexp( huorszag, sablon, 'gm' );
	} );
}

/**
 * Initialize edit box
 */
$( function () {
	// Find the element that comes right after the special character box
	$currentFocused = $( '#wpTextbox1' );
	if ( $currentFocused.length ) {
		$( document ).on( 'focus', 'textarea, input:text, .CodeMirror', function () {
			if ( $( this ).is( '.CodeMirror' ) ) {
				// CodeMirror hooks into #wpTextbox1 for textSelection changes
				$currentFocused = $( '#wpTextbox1' );
			} else {
				$currentFocused = $( this );
			}
		} );
		$( '#specialchars' ).after( createCustomBar() );
	}
} );
// </nowiki>