MediaWiki:Gadget-PreloadTemplates.js: Difference between revisions
From Tardis Wiki, the free Doctor Who reference
MediaWiki:Gadget-PreloadTemplates.js (view source)
Revision as of 12:31, 20 September 2017
, 20 September 2017Undo revision 63404 by Radagast l'animal (talk)
No edit summary |
(Undo revision 63404 by Radagast l'animal (talk)) |
||
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 51: | Line 91: | ||
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 90: | Line 263: | ||
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); | |||
} | |||
}); |