|
|
Line 44: |
Line 44: |
| var splitLang = lang.split('-')[0]; | | var splitLang = lang.split('-')[0]; |
| var i18n = { | | var i18n = { |
| // English
| |
| en: {
| |
| preload: 'Preload template:',
| |
| choose: '(choose)',
| |
| help: 'Select a template to insert its preloaded syntax at the current position ',
| |
| devWiki: 'Check the documentation on Dev Wiki',
| |
| error: 'No valid syntax found at $1 or page is missing.'
| |
| },
| |
| // Belarusian
| |
| be: {
| |
| preload: 'Гатовы шаблон:',
| |
| choose: '(выберыце)',
| |
| help: 'Выберыце падрыхтаваны шаблон, каб ўставіць код у дадзеным месцы',
| |
| devWiki: 'Паглядзець дакументацыю на Dev Wiki',
| |
| error: 'Не знойдзены правільны сінтаксіс у $1 ці старонка не існуе.'
| |
| },
| |
| // Catalan
| |
| ca: {
| |
| preload: 'Pre-carrega una plantilla:',
| |
| choose: '(tria)',
| |
| help: 'Selecciona una plantilla per inserir la seva sintaxi pre-carregada a la posició actual',
| |
| devWiki: 'Controla la documentació al Dev Wiki',
| |
| error: 'Cap sintaxi vàlida trobada a $1 o la pàgina hi falta.'
| |
| },
| |
| // German
| |
| de: {
| |
| preload: 'Vorlage einfügen:',
| |
| choose: '(Auswählen)',
| |
| help: 'Wähle die Vorlage, deren vorgefertigte Syntax an der aktuellen Position eingefügt werden soll',
| |
| devWiki: 'Lies die Dokumentation im Dev-Wiki',
| |
| error: 'Keine gültige Syntax unter $1 gefunden bzw. keine Seite.'
| |
| },
| |
| // Spanish
| |
| es: {
| |
| preload: 'Precarga una plantilla:',
| |
| choose: '(elige)',
| |
| help: 'Selecciona una plantilla para insertar su sintaxis precargada en la posición actual',
| |
| devWiki: 'Controla la documentación en la Dev Wiki',
| |
| error: 'Ninguna sintaxis válida encontrada en $1 o falta la página.'
| |
| },
| |
| // French | | // French |
| fr: { | | fr: { |
Line 91: |
Line 51: |
| devWiki: 'Contrôlez la documentation sur le Dev Wiki', | | devWiki: 'Contrôlez la documentation sur le Dev Wiki', |
| error: 'Aucune syntaxe valable trouvée sur $1 ou la page est absente.' | | error: 'Aucune syntaxe valable trouvée sur $1 ou la page est absente.' |
| },
| |
| // Finnish
| |
| fi: {
| |
| preload: 'Esilataa malline:',
| |
| choose: '(valitse)',
| |
| help: 'Valitse malline lisätäksesi sen esiladatun syntaksin nykyiseen paikkaan',
| |
| devWiki: 'Katso dokumentointi Dev Wikissä',
| |
| error: 'Väärin syntaksi kohdassa $1 or tai sivu puuttuu.'
| |
| },
| |
| // Galician
| |
| gl: {
| |
| preload: 'Pre-carga un modelo:',
| |
| choose: '(elixe)',
| |
| help: 'Selecciona un modelo para inserir a súa sintaxe pre-cargada na posición actual',
| |
| devWiki: 'Controla a documentación no Dev Wiki',
| |
| error: 'Ningunha sintaxe válida atopada en $1 ou a páxina está a faltar.'
| |
| },
| |
| // Bahasa Indonesia
| |
| 'id': {
| |
| preload: 'Pramuat templat:',
| |
| choose: '(plihan)',
| |
| help: 'Pilihlah sebuah templat untuk dimasukkan ke pramuat sintaksis di posisi sekarang ini ',
| |
| devWiki: 'Mengecek dokumentasi di devwiki',
| |
| error: 'Tidak ditemukan sintaksis yang sah ditemukan $1 atau laman menghilang.'
| |
| },
| |
| // Italian
| |
| it: {
| |
| preload: 'Precarica un template:',
| |
| choose: '(scegli)',
| |
| help: 'Seleziona un template per inserire la sua sintassi precaricata nella posizione corrente',
| |
| devWiki: 'Controlla la documentazione su Dev Wiki',
| |
| error: 'Nessuna sintassi valida trovata su $1 o la pagina è mancante.'
| |
| },
| |
| // Japanese
| |
| ja: {
| |
| preload: 'プリロード・テンプレート:',
| |
| choose: '(選択してください)',
| |
| help: 'テンプレートを選ぶと、文字入力カーソルの位置に埋め込まれます。',
| |
| devWiki: 'Dev Wikiの解説ページをご覧ください。',
| |
| error: '$1は無効な構文か、ページが存在しません。'
| |
| },
| |
| // Occitan
| |
| oc: {
| |
| preload: 'Precarga un modèl:',
| |
| choose: '(escuelh)',
| |
| help: 'Selecciona un modèl per inserir la siá sintaxi precargada dins la posicion actuala',
| |
| devWiki: 'Contròtla la documentacion sul Dev Wiki',
| |
| error: 'Cap de sintaxi valida amassada sus $1 o la pagina i manca.'
| |
| },
| |
| // Polish
| |
| pl: {
| |
| preload: 'Gotowy szablon:',
| |
| choose: '(wybierz)',
| |
| help: 'Wybierz przygotowany szablon, aby wstawić kod w obecnym miejscu',
| |
| devWiki: 'Zobacz dokumentację na Dev Wiki',
| |
| error: 'Nie znaleziono odpowiedniej składni w $1 lub strona nie istnieje.'
| |
| },
| |
| // Portuguese
| |
| pt: {
| |
| preload: 'Pré-carrega uma predefinição:',
| |
| choose: '(escolhe)',
| |
| help: 'Seleciona uma predefinição para inserires a sua sintaxe pré-carregada na posição actual',
| |
| devWiki: 'Controla a documentação no Dev Wiki',
| |
| error: 'Nenhuma sintaxe válida encontrada em $1 ou a página está a faltar.'
| |
| },
| |
| // Brazilian Portuguese
| |
| 'pt-br': {
| |
| preload: 'Pré-carrega uma predefinição:',
| |
| choose: '(escolha)',
| |
| help: 'Selecione uma predefinição para inserir a sintaxe dela pré-carregada na posição atual',
| |
| devWiki: 'Controle a documentação na Dev Wiki',
| |
| error: 'Nenhuma sintaxe válida encontrada em $1 ou a página está faltando.'
| |
| },
| |
| // Romanian
| |
| ro: {
| |
| preload: 'Preîncărcaţi un format:',
| |
| choose: '(alegeţi)',
| |
| help: 'Selecţionaţi un format pentru a insera sintaxa acesta preîncărcată în poziţia actuală',
| |
| devWiki: 'Controlaţi documentaţia pe Dev Wiki',
| |
| eroare: 'Nicio sintaxa validă găsită pe $1 sau pagina lipseşte.'
| |
| },
| |
| // Russian
| |
| ru: {
| |
| preload: 'Готовый шаблон:',
| |
| choose: '(выберите)',
| |
| help: 'Выберите подготовленный шаблон, чтобы вставить код в данном месте',
| |
| devWiki: 'Посмотреть документацию на Dev Wiki',
| |
| error: 'Не найден правильный синтаксис в $1 или страница не существует.'
| |
| },
| |
| // Ukrainian
| |
| uk: {
| |
| preload: 'Готовий шаблон:',
| |
| choose: '(виберіть)',
| |
| help: 'Виберіть підготовлений шаблон, щоб вставити код в даному місці',
| |
| devWiki: 'Подивитися документацію на Dev Wiki',
| |
| error: 'Не знайдений правильний синтаксис в $1 або сторінка не існує.'
| |
| },
| |
| // Valencian
| |
| val: {
| |
| preload: 'Precarrega una plantilla:',
| |
| choose: '(tria)',
| |
| help: 'Selecciona una plantilla per a insertar la sua sintaxis precarregada en la posició actual',
| |
| devWiki: 'Controla la documentació en el Dev Wiki',
| |
| error: 'No hi ha sintaxis vàlides trobades en $1 o falta la pàgina.'
| |
| },
| |
| // Chinese (simplified) (Also in zh)
| |
| zh: {
| |
| preload: '预载模板:',
| |
| choose: '(选择)',
| |
| help: '选择一个模板以于目前位置插入其预载语法',
| |
| devWiki: '于 Dev Wiki 查看相关文件',
| |
| error: '$1 为无效语法或页面遗失。'
| |
| },
| |
| // Chinese (traditional)
| |
| 'zh-hant': {
| |
| preload: '預載模板:',
| |
| choose: '(選擇)',
| |
| help: '選擇一個模板以於目前位置插入其預載語法',
| |
| devWiki: '於 Dev Wiki 查看相關文件',
| |
| error: '$1 為無效語法或頁面遺失。'
| |
| } | | } |
| // thanks http://wlb.wikia.com ! | | // thanks http://wlb.wikia.com ! |
| }; | | }; |
|
| |
|
| // Select language
| |
| // Check if user's language is present
| |
| if (typeof i18n[lang] === 'object') {
| |
| $.extend( i18n, i18n.en, i18n[lang] );
| |
| } else {
| |
| // Check to see if the parent language has a translation, example pt-br -> pt
| |
| if (typeof i18n[splitLang] === 'object') {
| |
| $.extend( i18n, i18n.en, i18n[splitLang] );
| |
| } else {
| |
| // Fallback to English
| |
| $.extend( i18n, i18n.en );
| |
| }
| |
| }
| |
| // END i18n | | // END i18n |
|
| |
|
Line 263: |
Line 90: |
| return; | | return; |
| } | | } |
|
| |
| // Building the list HTML
| |
| for (var i in lines) {
| |
| var title;
| |
| var string;
| |
|
| |
| // Ignore empty lines
| |
| if (lines[i].trim() === '') {
| |
| continue;
| |
| }
| |
| // Text in a list is the template name
| |
| if (lines[i].indexOf('*') === 0) {
| |
| title = lines[i].substring(1).trim();
| |
| $preloadOptionsHtml += '<option value="' + title + '">' + title + '</option>';
| |
| } else {
| |
| // Rest are normal strings
| |
| string = lines[i];
| |
| $preloadOptionsHtml += '<option disabled>' + string + '</option>';
| |
| }
| |
| }
| |
|
| |
| // Build list HTML
| |
| preloadOptionsList = $('<select />').attr('id', 'pt-list').attr('title', i18n.help).css('max-width' , '220px').html(defaultOption + $preloadOptionsHtml).change(function() {
| |
| var templateTitle = $(this).val();
| |
|
| |
| // Restore default option
| |
| $('#pt-list option:first-child').prop('selected', true);
| |
|
| |
| // Preload the template on click
| |
| getPreloadPage(templateTitle);
| |
| });
| |
|
| |
| // Append template list and messageges
| |
| $('div#preload-templates').append(preloadOptionsList).append(preloadHelp);
| |
|
| |
| // Import required CSS for monobook
| |
| if (skin === 'monobook') {
| |
| // Importing sprite for monobook
| |
| $('.sprite.question').css({
| |
| 'background-image': 'url(http://slot1.images.wikia.nocookie.net/__cb1475164013/common/skins/shared/images/sprite.png)',
| |
| 'background-position': '-1144px -20px',
| |
| 'background-color': 'transparent',
| |
| 'background-repeat': 'no-repeat',
| |
| 'height': '12px',
| |
| 'width': '12px'
| |
| });
| |
| }
| |
| }).fail( function(){
| |
| // Add an error if failed to retrieve list
| |
| $('div#preload-templates').append( i18n.error.replace('$1' , '"<a href="/wiki/' + mw.util.wikiUrlencode(config.list) + '">' + config.list + '</a>"') ).append(preloadHelp);
| |
| });
| |
|
| |
| // =============
| |
| // Functions
| |
| // =============
| |
|
| |
| // Get preload text and add it to the text area
| |
| function getPreloadPage(title) {
| |
| var page = namespace + ':' + title + '/' + config.subpage;
| |
|
| |
| $.get(wgScript, {
| |
| title: page,
| |
| action: 'raw',
| |
| ctype: 'text/plain'
| |
| }).done(function(preloadData) {
| |
| // Parse some MediaWiki tags
| |
| var preloadDataParsed = parseMW(preloadData);
| |
|
| |
| // Display error if no useful data is present
| |
| if ( preloadDataParsed === '' ) {
| |
| notFound(page);
| |
| return;
| |
| }
| |
|
| |
| // Insert syntax
| |
| if (document.getElementById('wpTextbox1')) {
| |
| insertAtCursor(document.getElementById('wpTextbox1'), preloadDataParsed);
| |
| } else {
| |
| // Visual editor
| |
| insertAtCursor(document.getElementsByClassName('cke_source')[0], preloadDataParsed);
| |
| }
| |
| }).fail( function(){
| |
| notFound(page);
| |
| });
| |
| }
| |
|
| |
| // Inserts text at the cursor's current position - originally from Wookieepedia
| |
| function insertAtCursor(myField, myValue) {
| |
| //IE support
| |
| if (document.selection) {
| |
| myField.focus();
| |
| sel = document.selection.createRange();
| |
| sel.text = myValue;
| |
| }
| |
| //MOZILLA/NETSCAPE support
| |
| else if (myField.selectionStart || myField.selectionStart == '0') {
| |
| var startPos = myField.selectionStart;
| |
| var endPos = myField.selectionEnd;
| |
| myField.value = myField.value.substring(0, startPos) +
| |
| myValue +
| |
| myField.value.substring(endPos, myField.value.length);
| |
| } else {
| |
| myField.value += myValue;
| |
| }
| |
| }
| |
|
| |
| // Parse MediaWiki code to allow the use of incudeoonly and noninclude tags in the preload page
| |
| function parseMW(source){
| |
| var parsed = source.replace(/<includeonly>(\n)?|(\n)?<\/includeonly>|\s*<noinclude>[^]*?<\/noinclude>/g, '');
| |
|
| |
| return parsed;
| |
| }
| |
|
| |
| // Error alert
| |
| function notFound(page){
| |
| var message = i18n.error.replace('$1' , '"' + page + '"');
| |
|
| |
| alert(message);
| |
| }
| |
| });
| |