MediaWiki:Gadget-properties.js

De WikiMinecraft
Saltar a: navegación, buscar
( function ( mw, $ ) {

	var i18nData = {
		'en': {
			'PropertyTool-box-title': 'Array Properties',
			'PropertyTool-box-warning': 'This tool only set request for bot and after request review it will be done!',
			'PropertyTool-box-lang': 'Language: ',
			'PropertyTool-box-source': 'Source: Input Category or Template that you want to select items by.',
			'PropertyTool-box-category': 'Category of wiki pages (items): ',
			'PropertyTool-box-template': 'Template which wiki pages (items) use: ',
			'PropertyTool-box-pn': 'Property which should be copied: ',
			'PropertyTool-box-item': 'The item which the property Should be Linked to: ',
			'PropertyTool-box-ignoreprefix': 'Ignore prefix word: ',
			'PropertyTool-box-ignore': 'Ignore article(s): ',
			'PropertyTool-box-create': 'Create: ',
			'PropertyTool-box-recursion': 'Recursion: ',
			'PropertyTool-success': 'Request is Reported successfully!',
			'PropertyTool-Error': 'Unknown Error!',
			'PropertyTool-warning-sitebox': 'You should Input prefix of a Wikipedia language site!',
			'PropertyTool-warning-sourcebox': 'You should Input Category or Template that you want to refer!',
			'PropertyTool-warning-pnbox': 'You should Input correct Property Link!',
			'PropertyTool-warning-itembox': 'You should Input correct Item Link!',
			'PropertyTool-send': 'Send request',
			'PropertyTool-reset': 'Reset'
		},
		'ar': {
			'PropertyTool-box-title': 'نسخ الخاصیات',
			'PropertyTool-box-warning': 'هذه الأداة لإرسال الطلب فقط. ستقوم البوتات بتنفيذ الطلب بعد تأييد الإداريون !',
			'PropertyTool-box-lang': 'اللغة: ',
			'PropertyTool-box-source': 'المصدر : إدخل القالب أو التصنيف الذي تريد تحديد الصفحاب حسبه.',
			'PropertyTool-box-category': 'التصنيف الذي يحتوي على الصفحات:  ',
			'PropertyTool-box-template': 'القالب الذي يحتوي على الصفحات: ',
			'PropertyTool-box-pn': 'الخاصية التي يجب نسخها: ',
			'PropertyTool-box-item': 'الصفة التي ينبغي ربط الخاصية إليها: ',
			'PropertyTool-box-ignoreprefix': 'إستثناء بداية الكلمة: ',
			'PropertyTool-box-ignore': 'الإستثناءات: ',
			'PropertyTool-box-create': 'إنشاء: ',
			'PropertyTool-box-recursion': 'عدد الصفحات: ',
			'PropertyTool-success': 'تم ارسال الطلب بنجاح!',
			'PropertyTool-Error': 'خطأ غير معروف!',
			'PropertyTool-warning-sitebox': 'يجب عليك إدخال الرمز الخاص بلغتك (ar للعربية)‍‌',
			'PropertyTool-warning-sourcebox': 'يجب عليك إدخال التصنيف أو القالب الذي تريد أن تشير اليه!',
			'PropertyTool-warning-pnbox': 'يجب عليك إدخال رابط الصحيح للخاصية!',
			'PropertyTool-warning-itembox': 'يجب عليك إدخال رابط الصحيح للصفة!',
			'PropertyTool-send': 'ارسال الطلب',
			'PropertyTool-reset': 'تفريغ الإستمارة'
		},
		'es': {
			'PropertyTool-box-title': 'Organizar las propiedades',
			'PropertyTool-box-warning': 'Esta herramienta unicamente realiza la solicitud al bot. ¡No ocurrirá nada hasta que se revise la solicitud!',
			'PropertyTool-box-lang': 'Idioma: ',
			'PropertyTool-box-source': 'Fuente: Introduce la categoría o la plantilla desde la que quieres seleccionar los elementos',
			'PropertyTool-box-category': 'Categoría de las páginas wiki (elementos): ',
			'PropertyTool-box-template': 'Plantilla que utilizan las páginas wiki (elementos): ',
			'PropertyTool-box-pn': 'Propiedad a copiar: ',
			'PropertyTool-box-item': 'El elemento al que debería enlazar la propiedad: ',
			'PropertyTool-box-ignoreprefix': 'Ignorar el prefijo: ',
			'PropertyTool-box-ignore': 'Ignorar el(los) artículo(s): ',
			'PropertyTool-box-create': 'Crear: ',
			'PropertyTool-box-recursion': 'Recursividad: ',
			'PropertyTool-success': '¡La solicitud se envió correctamente!',
			'PropertyTool-Error': '¡Error desconocido!',
			'PropertyTool-warning-sitebox': '¡Es necesario introducir el prefijo del idioma de una Wikipedia!',
			'PropertyTool-warning-sourcebox': '¡Es necesario la categoría o la plantilla sobre la que realizar la solicitud!',
			'PropertyTool-warning-pnbox': '¡Es necesario introducir un propiedad de elemento correcto!',
			'PropertyTool-warning-itembox': '¡Es necesario introducir un enlace de elemento correcto!',
			'PropertyTool-send': 'Enviar la solicitud',
			'PropertyTool-reset': 'Restablecer'
		},
		'fa': {
			'PropertyTool-box-title': 'تکثیر خصوصیات',
			'PropertyTool-box-warning': 'این ابزار فقط برای درخواست است. پس از بررسی درخواست توسط مدیران، ربات آن را اجرا خواهد کرد!',
			'PropertyTool-box-lang': 'زبان: ',
			'PropertyTool-box-source': 'منبع:به عنوان منبع رده یا الگوی مورد نظرتان را وارد کنید.',
			'PropertyTool-box-category': 'رده‌ای که صفحات ویکی (آیتم‌ها) در آن هستند:  ',
			'PropertyTool-box-template': 'الگویی که صفحات ویکی (آیتم‌ها) از آن استفاده می‌کنند: ',
			'PropertyTool-box-pn': 'خصوصیتی که باید تکثیر شود: ',
			'PropertyTool-box-item': 'آیتمی که خصوصیت باید به آن پیوند دهد: ',
			'PropertyTool-box-ignoreprefix': 'استثنای ابتدای عبارت: ',
			'PropertyTool-box-ignore': 'استثناها: ',
			'PropertyTool-box-create': 'ایجاد: ',
			'PropertyTool-box-recursion': 'تعداد زیر رده: ',
			'PropertyTool-success': 'درخواست با موفقیت انجام شد!',
			'PropertyTool-Error': 'خطای نامعلوم!',
			'PropertyTool-warning-sitebox': 'باید کد ویکی‌پدیای مورد نظرتان را وارد کنید‍‌',
			'PropertyTool-warning-sourcebox': 'باید رده یا الگوی مورد نظرتان را وارد کنید!',
			'PropertyTool-warning-pnbox': 'باید پیوند درست به خصوصیت مورد نظرتان را وارد کنید!',
			'PropertyTool-warning-itembox': 'باید پیوند درست به آیتم خصوصیت مورد نظرتان را وارد کنید!',
			'PropertyTool-send': 'درخواست تکثیر',
			'PropertyTool-reset': 'خالی کردن فرم'
		},
		'gl': {
			'PropertyTool-box-title': 'Organizar as propiedades',
			'PropertyTool-box-warning': 'Esta ferramenta unicamente realiza a solicitude ao bot. Non acontecerá nada ata que se revise a solicitude!',
			'PropertyTool-box-lang': 'Lingua: ',
			'PropertyTool-box-source': 'Fonte: Introduza a categoría ou o modelo desde o que quere seleccionar os elementos.',
			'PropertyTool-box-category': 'Categoría das páxinas wiki (elementos): ',
			'PropertyTool-box-template': 'Modelo que utilizan as páxinas wiki (elementos): ',
			'PropertyTool-box-pn': 'Propiedade a copiar: ',
			'PropertyTool-box-item': 'O elemento ao que debería ligar a propiedade: ',
			'PropertyTool-box-ignoreprefix': 'Ignorar o prefixo: ',
			'PropertyTool-box-ignore': 'Ignorar o(s) artigo(s): ',
			'PropertyTool-box-create': 'Crear: ',
			'PropertyTool-box-recursion': 'Recursividade: ',
			'PropertyTool-success': 'A solicitude enviouse correctamente!',
			'PropertyTool-Error': 'Erro descoñecido!',
			'PropertyTool-warning-sitebox': 'Cómpre introducir o prefixo de lingua dunha Wikipedia!',
			'PropertyTool-warning-sourcebox': 'Cómpre introducir a categoría ou o modelo sobre o que realizar a solicitude!',
			'PropertyTool-warning-pnbox': 'Cómpre introducir unha ligazón de propiedade correcta!',
			'PropertyTool-warning-itembox': 'Cómpre introducir unha ligazón de elemento correcta!',
			'PropertyTool-send': 'Enviar a solicitude',
			'PropertyTool-reset': 'Restablecer'
		},
		'id': {
			'PropertyTool-box-title': 'Ragam Properti',
			'PropertyTool-box-warning': 'Alat ini hanya melakukan permintaan pada bot dan setelah ditinjau, permintaan akan dilaksanakan!',
			'PropertyTool-box-lang': 'Bahasa: ',
			'PropertyTool-box-source': 'Sumber: Masukkan Kategori atau Templat yang berkaitan dengan item.',
			'PropertyTool-box-category': 'Kategori pada halaman wiki (item): ',
			'PropertyTool-box-template': 'Templat yang digunakan (items): ',
			'PropertyTool-box-pn': 'Properti yang harus dicopy: ',
			'PropertyTool-box-item': 'Item yang harus terkait pada properti: ',
			'PropertyTool-box-ignoreprefix': 'Abaikan awalan: ',
			'PropertyTool-box-ignore': 'Abaikan artikel: ',
			'PropertyTool-box-create': 'Buat: ',
			'PropertyTool-box-recursion': 'Rekursi: ',
			'PropertyTool-success': 'Permintaan berhasil!',
			'PropertyTool-Error': 'Error!',
			'PropertyTool-warning-sitebox': 'Anda harus masukkan kode bahasa untuk wiki yang dimaksud!',
			'PropertyTool-warning-sourcebox': 'Anda harus masukkan kategori atau templat yang ingin dirujuk!',
			'PropertyTool-warning-pnbox': 'Anda harus masukkan Properti yang benar!',
			'PropertyTool-warning-itembox': 'Anda harus masukkan Item yang benar!',
			'PropertyTool-send': 'Kirim permintaan',
			'PropertyTool-reset': 'Reset'
		},
		'min': {
			'PropertyTool-box-title': 'Ragam Properti',
			'PropertyTool-box-warning': 'Alaik ko hanyo malakuan pamintaan pado bot dan satalah ditinjau, pamintaan dilaksanakan!',
			'PropertyTool-box-lang': 'Bahaso: ',
			'PropertyTool-box-source': 'Sumber: Masuakan Kategori atau Templat nan takaik jo item.',
			'PropertyTool-box-category': 'Kategori pado laman wiki (item): ',
			'PropertyTool-box-template': 'Templat nan digunoan (items): ',
			'PropertyTool-box-pn': 'Properti nan ka dicopy: ',
			'PropertyTool-box-item': 'Item nan ka takaik jo properti: ',
			'PropertyTool-box-ignoreprefix': 'Abaikan awalan: ',
			'PropertyTool-box-ignore': 'Abaikan artikel: ',
			'PropertyTool-box-create': 'Buek: ',
			'PropertyTool-box-recursion': 'Rekursi: ',
			'PropertyTool-success': 'Pamintaan sukses!',
			'PropertyTool-Error': 'Error!',
			'PropertyTool-warning-sitebox': 'Sanak musti masuakan kode bahaso untuak wiki nan dimakasuik!',
			'PropertyTool-warning-sourcebox': 'Sanak musti masuakan kategori atau templat nan nio dirujuak!',
			'PropertyTool-warning-pnbox': 'Sanak musti masuakan Properti nan batua!',
			'PropertyTool-warning-itembox': 'Sanak musti masuakan Item nan batua!',
			'PropertyTool-send': 'Kirim pamintaan',
			'PropertyTool-reset': 'Reset'
		},
		'mk': {
			'PropertyTool-box-title': 'Организирање на својства',
			'PropertyTool-box-warning': 'Алаткава поднесува барање до бот, и истото се извршува по негово разгледување!',
			'PropertyTool-box-lang': 'Јазик: ',
			'PropertyTool-box-source': 'Извор: Внесете категорија или шаблон според кој(а) сакате да изберете предмети.',
			'PropertyTool-box-category': 'Категорија на викистраниците (предметите): ',
			'PropertyTool-box-template': 'Шаблон што го користат викистраниците (предметите): ',
			'PropertyTool-box-pn': 'Својство што треба да се копира: ',
			'PropertyTool-box-item': 'Со кој предмет да се врзе својството: ',
			'PropertyTool-box-ignoreprefix': 'Занемари го префиксот: ',
			'PropertyTool-box-ignore': 'Занемари статии: ',
			'PropertyTool-box-create': 'Создај: ',
			'PropertyTool-box-recursion': 'Јавувања: ',
			'PropertyTool-success': 'Барањето е успешно поднесено!',
			'PropertyTool-Error': 'Непозната грешка!',
			'PropertyTool-warning-sitebox': 'Треба да внесете префикс на вики!',
			'PropertyTool-warning-sourcebox': 'Треба да внесете категорија или шаблон што сакате да ја/го повикате!',
			'PropertyTool-warning-pnbox': 'Внесете исправна врска за својството!',
			'PropertyTool-warning-itembox': 'Внесете исправна врска за предметот!',
			'PropertyTool-send': 'Поднеси',
			'PropertyTool-reset': 'Одново'
		},
	};

	var lang, parts = mw.user.options.get( 'language' ).split("-");
	/*
	if ( parts[1]=='hans' || parts[1]=='cn' || parts[1]=='sg' || parts[1]=='my' ) {
		lang = 'zh-hans';
	} else if ( parts[1]=='hant' || parts[1]=='hk' || parts[1]=='tw' || parts[1]=='mo' ) {
		lang = 'zh-hant';
	} else */
	if ( i18nData[parts[0]] ) {
		lang = parts[0];
	} else {
		lang = 'en';
	}

	/**
	 * Return the localized version of a message
	 */
	function i18n( key ) {
		if ( i18nData[ lang ][ key ] ) {
			return i18nData[ lang ][ key ];
		} else {
			return i18nData[ 'en' ][ key ];
		}
	}

	/**
	 * Create the dialog and add a link in toolBox
	 */

	function init() {
		mw.loader.using( ['jquery.ui.dialog'], function () {
			var formFind = '<div id="PropertyTool" title="' + i18n( 'PropertyTool-box-title' ) + '"><form>';
			formFind += '<p>' + i18n( 'PropertyTool-box-warning' ) + '</p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-lang' ) + ' <input type="text" id="langbox" size="9" value="' + lang + '"/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-source' ) + '</p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-category' ) + ' <input type="text" id="catbox" size="20" value="Category:" /></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-template' ) + ' <input type="text" id="tempbox" size="20" value="Template:"/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-pn' ) + ' <input type="text" id="pnbox" size="5" value="P"/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-item' ) + ' <input type="text" id="itembox" size="8" value="Q"/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-ignoreprefix' ) + ' <input type="text" id="prefixbox" size="9" value=""/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-ignore' ) + ' <input type="text" id="ignobox1" size="9" value=""/>,<input type="text" id="ignobox2" size="9" value=""/>,<input type="text" id="ignobox3" size="9" value=""/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-create' ) + ' <input type="text" id="createbox" size="4" value=""/></p>';
			formFind += '<p>' + i18n( 'PropertyTool-box-recursion' ) + ' <input type="text" id="recurbox" size="3" value=""/></p>';
			formFind += '</form></div>';
			var messageFind = $( formFind ).appendTo( '#content' );
			messageFind.dialog( {
				autoOpen: false,
				modal: true,
				width: 600,
				buttons: [ {
					id: 'PropertyTool-button-import',
					text: i18n( 'PropertyTool-send' ),
					click: function () {
						work();
					}
				}/*,
				{
					id: 'PropertyTool-button-reset',
					text: i18n( 'PropertyTool-reset' ),
					click: function () {
						document.getElementById("pnbox").value='P';
						document.getElementById("itembox").value='Q';
						document.getElementById("prefixbox").value=lang;
						document.getElementById("ignobox1").value='';
						document.getElementById("ignobox2").value='';
						document.getElementById("ignobox3").value='';
						document.getElementById("createbox").value='';
						document.getElementById("recurbox").value='';
					}*/ ]
			} );

			var PorpertyToolLink = mw.util.addPortletLink( 'p-tb', '#', i18n( 'PropertyTool-box-title' ), 't-PropertyTool', i18n( 'PropertyTool-box-title' ) );
			$( PorpertyToolLink ).click( show );
		} );
	}

	/**
	 * Show the dialog
	 */
	function show() {
		$( 'div#PropertyTool' ).dialog( 'open' );
	}

	function work() {
		var sourcebox, langbox=document.getElementById("langbox").value;
		var catbox = document.getElementById("catbox").value;
		var tempbox = document.getElementById("tempbox").value;
		if ( catbox != "Category:" && catbox ) {
			sourcebox = catbox;
			sourcebox = sourcebox.replace(/Category\:/g, '');
			sourcebox = sourcebox.replace(/category\:/g, '');
			sourcebox = 'Category:' + sourcebox;
		}
		if ( tempbox != 'Template:' && tempbox ) {
			sourcebox = tempbox;
			sourcebox = sourcebox.replace(/Template\:/g, '');
			sourcebox = sourcebox.replace(/template\:/g, '');
			sourcebox = 'Template:' + sourcebox;
		}
		var pnbox = document.getElementById("pnbox").value;
		var itembox = document.getElementById("itembox").value;
		var RequsterUser = mw.config.get('wgUserName');
		var prefixbox = document.getElementById("prefixbox").value;
		var ignobox1 = document.getElementById("ignobox1").value;
		if ( document.getElementById("ignobox2").value ) { ignobox1 += ',' + document.getElementById("ignobox2").value; }
		if ( document.getElementById("ignobox3").value ) { ignobox1 += ',' + document.getElementById("ignobox3").value; }
		var createbox = document.getElementById("createbox").value;
		var recurbox = document.getElementById("recurbox").value;
		if ( ! langbox ) {
			alert( i18n( 'PropertyTool-warning-sitebox' ) );
			return;
		}
		if ( ! sourcebox ) {
			alert( i18n( 'PropertyTool-warning-sourcebox' ) );
			return;
		}
		if ( ! ( pnbox != 'P' && pnbox != '' ) ) {
			alert( i18n( 'PropertyTool-warning-pnbox' ) );
			return;
		}
		if ( ! ( itembox != 'Q' && itembox != '' ) ) {
			alert( i18n( 'PropertyTool-warning-itembox' ) );
			return;
		}
		var requestTemplate = '\n{{User:Legobot/properties.js/row|' + langbox + '|' + sourcebox + '|' + pnbox + '|' + itembox + '|' + RequsterUser;
		if ( prefixbox ) {
			requestTemplate += '|ignoreprefix=' + prefixbox;
		}
		if ( ignobox1 ) {
			requestTemplate += '|ignore=' + ignobox1;
		}
		if ( createbox ) {
			requestTemplate += '|create=' + createbox;
		}
		if ( recurbox ) {
			requestTemplate += '|recursion=' + recurbox;
		}
		requestTemplate += '}}';

		//prompt(requestTemplate);
		addRequest(
			requestTemplate,
			function () {
				mw.notify( i18n( 'PropertyTool-success' ) );
			},
			'Add a property Array Request'
		);
		$( 'div#PropertyTool' ).dialog( 'close' );
	}

	function onError() {
		mw.notify( i18n( 'PropertyTool-Error' ) );
	}

	/**
	 * Add new error request.
	 */
	function addRequest( entity, success, reason ) {
		var title = 'User_talk:Legobot/properties.js/requests';
		$.ajax( {
			type: 'POST',
			url: mw.util.wikiScript( 'api' ),
			data: {
				'format': 'json',
				'action': 'edit',
				'title': title,
				'summary': reason,
				'appendtext': entity,
				'token': mw.user.tokens.get( 'editToken' )
			},
			success: function ( data ) {
					if ( data.error && data.error.info ) {
						onError();
					} else {
						success();
					}
			},
			error: function () {
				onError();
			}
		} );
	}
	$( document ).ready( init );
} ( mediaWiki, jQuery ) );