MediaWiki:Gadget-PreloadTemplates.js: Difference between revisions
From Tardis Wiki, the free Doctor Who reference
(display name, case-by-case preload page) |
mNo edit summary |
||
Line 46: | Line 46: | ||
// English | // English | ||
en: { | en: { | ||
preload: | preload: "Preload template:", | ||
choose: | choose: "(choose)", | ||
help: | help: "Select a template to insert its preloaded syntax at the current position", | ||
devWiki: | devWiki: "Check the documentation on Dev Wiki", | ||
error: | error: "No valid syntax found at $1 or page is missing." | ||
}, | }, | ||
// Belarusian | // Belarusian | ||
be: { | be: { | ||
preload: | preload: "Гатовы шаблон:", | ||
choose: | choose: "(выберыце)", | ||
help: | help: "Выберыце падрыхтаваны шаблон, каб ўставіць код у дадзеным месцы", | ||
devWiki: | devWiki: "Паглядзець дакументацыю на Dev Wiki", | ||
error: | error: "Не знойдзены правільны сінтаксіс у $1 ці старонка не існуе." | ||
}, | }, | ||
// Catalan | // Catalan | ||
ca: { | ca: { | ||
preload: | preload: "Pre-carrega una plantilla:", | ||
choose: | choose: "(tria)", | ||
help: | help: "Selecciona una plantilla per inserir la seva sintaxi pre-carregada a la posició actual", | ||
devWiki: | devWiki: "Controla la documentació al Dev Wiki", | ||
error: | error: "Cap sintaxi vàlida trobada a $1 o la pàgina hi falta." | ||
}, | }, | ||
// German | // German | ||
de: { | de: { | ||
preload: | preload: "Vorlage einfügen:", | ||
choose: | choose: "(Auswählen)", | ||
help: | help: "Wähle die Vorlage, deren vorgefertigte Syntax an der aktuellen Position eingefügt werden soll", | ||
devWiki: | devWiki: "Lies die Dokumentation im Dev-Wiki", | ||
error: | error: "Keine gültige Syntax unter $1 gefunden bzw. keine Seite." | ||
}, | }, | ||
// Spanish | // Spanish | ||
es: { | es: { | ||
preload: | preload: "Precarga una plantilla:", | ||
choose: | choose: "(elige)", | ||
help: | help: "Selecciona una plantilla para insertar su sintaxis precargada en la posición actual", | ||
devWiki: | devWiki: "Controla la documentación en la Dev Wiki", | ||
error: | error: "Ninguna sintaxis válida encontrada en $1 o falta la página." | ||
}, | }, | ||
// French | // French | ||
fr: { | fr: { | ||
preload: | preload: "Précharger un modèle :", | ||
choose: | choose: "(choisir)", | ||
help: | help: "Sélectionnez un modèle pour insérer sa syntaxe préchargée dans la position actuelle", | ||
devWiki: | devWiki: "Contrôlez la documentation sur le Dev Wiki", | ||
error: | error: "Aucune syntaxe valable trouvée sur $1 ou la page est absente." | ||
}, | }, | ||
// Finnish | // Finnish | ||
fi: { | fi: { | ||
preload: | preload: "Esilataa malline:", | ||
choose: | choose: "(valitse)", | ||
help: | help: "Valitse malline lisätäksesi sen esiladatun syntaksin nykyiseen paikkaan", | ||
devWiki: | devWiki: "Katso dokumentointi Dev Wikissä", | ||
error: | error: "Väärin syntaksi kohdassa $1 or tai sivu puuttuu." | ||
}, | }, | ||
// Galician | // Galician | ||
gl: { | gl: { | ||
preload: | preload: "Pre-carga un modelo:", | ||
choose: | choose: "(elixe)", | ||
help: | help: "Selecciona un modelo para inserir a súa sintaxe pre-cargada na posición actual", | ||
devWiki: | devWiki: "Controla a documentación no Dev Wiki", | ||
error: | error: "Ningunha sintaxe válida atopada en $1 ou a páxina está a faltar." | ||
}, | }, | ||
// Bahasa Indonesia | // Bahasa Indonesia | ||
"id": { | |||
preload: | preload: "Pramuat templat:", | ||
choose: | choose: "(plihan)", | ||
help: | help: "Pilihlah sebuah templat untuk dimasukkan ke pramuat sintaksis di posisi sekarang ini ", | ||
devWiki: | devWiki: "Mengecek dokumentasi di devwiki", | ||
error: | error: "Tidak ditemukan sintaksis yang sah ditemukan $1 atau laman menghilang." | ||
}, | }, | ||
// Italian | // Italian | ||
it: { | it: { | ||
preload: | preload: "Precarica un template:", | ||
choose: | choose: "(scegli)", | ||
help: | help: "Seleziona un template per inserire la sua sintassi precaricata nella posizione corrente", | ||
devWiki: | devWiki: "Controlla la documentazione su Dev Wiki", | ||
error: | error: "Nessuna sintassi valida trovata su $1 o la pagina è mancante." | ||
}, | }, | ||
// Japanese | // Japanese | ||
ja: { | ja: { | ||
preload: | preload: "プリロード・テンプレート:", | ||
choose: | choose: "(選択してください)", | ||
help: | help: "テンプレートを選ぶと、文字入力カーソルの位置に埋め込まれます。", | ||
devWiki: | devWiki: "Dev Wikiの解説ページをご覧ください。", | ||
error: | error: "$1は無効な構文か、ページが存在しません。" | ||
}, | }, | ||
// Occitan | // Occitan | ||
oc: { | oc: { | ||
preload: | preload: "Precarga un modèl:", | ||
choose: | choose: "(escuelh)", | ||
help: | help: "Selecciona un modèl per inserir la siá sintaxi precargada dins la posicion actuala", | ||
devWiki: | devWiki: "Contròtla la documentacion sul Dev Wiki", | ||
error: | error: "Cap de sintaxi valida amassada sus $1 o la pagina i manca." | ||
}, | }, | ||
// Polish | // Polish | ||
pl: { | pl: { | ||
preload: | preload: "Gotowy szablon:", | ||
choose: | choose: "(wybierz)", | ||
help: | help: "Wybierz przygotowany szablon, aby wstawić kod w obecnym miejscu", | ||
devWiki: | devWiki: "Zobacz dokumentację na Dev Wiki", | ||
error: | error: "Nie znaleziono odpowiedniej składni w $1 lub strona nie istnieje." | ||
}, | }, | ||
// Portuguese | // Portuguese | ||
pt: { | pt: { | ||
preload: | preload: "Pré-carrega uma predefinição:", | ||
choose: | choose: "(escolhe)", | ||
help: | help: "Seleciona uma predefinição para inserires a sua sintaxe pré-carregada na posição actual", | ||
devWiki: | devWiki: "Controla a documentação no Dev Wiki", | ||
error: | error: "Nenhuma sintaxe válida encontrada em $1 ou a página está a faltar." | ||
}, | }, | ||
// Brazilian Portuguese | // Brazilian Portuguese | ||
"pt-br": { | |||
preload: | preload: "Pré-carrega uma predefinição:", | ||
choose: | choose: "(escolha)", | ||
help: | help: "Selecione uma predefinição para inserir a sintaxe dela pré-carregada na posição atual", | ||
devWiki: | devWiki: "Controle a documentação na Dev Wiki", | ||
error: | error: "Nenhuma sintaxe válida encontrada em $1 ou a página está faltando." | ||
}, | }, | ||
// Romanian | // Romanian | ||
ro: { | ro: { | ||
preload: | preload: "Preîncărcaţi un format:", | ||
choose: | choose: "(alegeţi)", | ||
help: | help: "Selecţionaţi un format pentru a insera sintaxa acesta preîncărcată în poziţia actuală", | ||
devWiki: | devWiki: "Controlaţi documentaţia pe Dev Wiki", | ||
eroare: | eroare: "Nicio sintaxa validă găsită pe $1 sau pagina lipseşte." | ||
}, | }, | ||
// Russian | // Russian | ||
ru: { | ru: { | ||
preload: | preload: "Готовый шаблон:", | ||
choose: | choose: "(выберите)", | ||
help: | help: "Выберите подготовленный шаблон, чтобы вставить код в данном месте", | ||
devWiki: | devWiki: "Посмотреть документацию на Dev Wiki", | ||
error: | error: "Не найден правильный синтаксис в $1 или страница не существует." | ||
}, | }, | ||
// Ukrainian | // Ukrainian | ||
uk: { | uk: { | ||
preload: | preload: "Готовий шаблон:", | ||
choose: | choose: "(виберіть)", | ||
help: | help: "Виберіть підготовлений шаблон, щоб вставити код в даному місці", | ||
devWiki: | devWiki: "Подивитися документацію на Dev Wiki", | ||
error: | error: "Не знайдений правильний синтаксис в $1 або сторінка не існує." | ||
}, | }, | ||
// Valencian | // Valencian | ||
val: { | val: { | ||
preload: | preload: "Precarrega una plantilla:", | ||
choose: | choose: "(tria)", | ||
help: | help: "Selecciona una plantilla per a insertar la sua sintaxis precarregada en la posició actual", | ||
devWiki: | devWiki: "Controla la documentació en el Dev Wiki", | ||
error: | error: "No hi ha sintaxis vàlides trobades en $1 o falta la pàgina." | ||
}, | }, | ||
// Chinese (simplified) (Also in zh) | // Chinese (simplified) (Also in zh) | ||
zh: { | zh: { | ||
preload: | preload: "预载模板:", | ||
choose: | choose: "(选择)", | ||
help: | help: "选择一个模板以于目前位置插入其预载语法", | ||
devWiki: | devWiki: "于 Dev Wiki 查看相关文件", | ||
error: | error: "$1 为无效语法或页面遗失。" | ||
}, | }, | ||
// Chinese (traditional) | // Chinese (traditional) | ||
"zh-hant": { | |||
preload: | preload: "預載模板:", | ||
choose: | choose: "(選擇)", | ||
help: | help: "選擇一個模板以於目前位置插入其預載語法", | ||
devWiki: | devWiki: "於 Dev Wiki 查看相關文件", | ||
error: | error: "$1 為無效語法或頁面遺失。" | ||
} | } | ||
// thanks http://wlb.wikia.com ! | // thanks http://wlb.wikia.com ! |
Revision as of 22:04, 17 October 2017
// ================================
// Custom preload templates
// ================================
/* @author Grunny
From http://harrypotter.wikia.com/wiki/MediaWiki:Wikia.js
edited by leviathan_89
** Info: **
Template list loaded by default from "MediaWiki:Custom-PreloadTemplates",
each syntax is loaded by default from the "/preload" subpage of the
template.
*/
$(function() {
// Run conditions
if ( wgAction != 'edit' ||
(!$('div.module_content').length && skin == 'oasis') ||
(!$('div.editButtons').length && skin == 'monobook') ||
mw.config.get('wgNamespaceNumber') == 8 // MediaWiki:
) {
console.log('[PreloadTemplates]: container not found or page is not supported.');
return;
}
console.log('[PreloadTemplates]: version 1.02 - 17/10/2017.');
// =================
// Configuration
// =================
var config = {
list: null,
subpage: null
};
// Checking user's custom settings
config.list = ( typeof preloadTemplates_list == 'string' ) ? preloadTemplates_list : 'MediaWiki:Custom-PreloadTemplates';
config.subpage = ( typeof preloadTemplates_subpage == 'string' ) ? preloadTemplates_subpage : 'preload';
// ========
// i18n
// ========
var lang = mw.config.get('wgUserLanguage');
var splitLang = lang.split('-')[0];
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
fr: {
preload: "Précharger un modèle :",
choose: "(choisir)",
help: "Sélectionnez un modèle pour insérer sa syntaxe préchargée dans la position actuelle",
devWiki: "Contrôlez la documentation sur le Dev Wiki",
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 !
};
// 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
// =============
// Execution
// =============
// Variables
var namespace = mw.config.get('wgFormattedNamespaces')['10'];
var $preloadOptionsHtml;
var $preloadOptionsList;
var defaultOption = '<option selected disabled>' + i18n.choose + '</option>';
var preloadHelp = '<span style="display:inline-block; vertical-align:middle; cursor:help; margin-left:5px;" class="sprite question"><a href="http://dev.wikia.com/wiki/PreloadTemplates" target="_blank" title="' + i18n.devWiki + '" style="display:inline-block; width:12px; height:12px;"></a></span>';
// Append HTML container
if (skin === 'oasis') {
$('div.module_content:first').append('<div id="preload-templates" style="display:block; padding:0 10px;"><h3 style="font-size:14px;">' + i18n.preload + '</h4></div>');
} else {
$('div.editButtons').append('<div id="preload-templates" style="display:block; float:right; padding:10px;">' + i18n.preload + ' </div>');
}
// Create template list
// Get list
$.get(wgScript, {
title: config.list,
action: 'raw',
ctype: 'text/plain'
}).done( function(listData) {
var listDataParsed = parseMW(listData); // Parse data for MediaWiki tags
var lines = listDataParsed.split('\n'); // Split data in lines
// Display error if no valid data is present
if ( listDataParsed === '' ) {
$('div#preload-templates').append( i18n.error.replace('$1' , '"<a href="/wiki/' + mw.util.wikiUrlencode(config.list) + '">' + config.list + '</a>"') ).append(preloadHelp);
return;
}
// Building the list HTML
for (var i in lines) {
var title;
// 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();
// Text after pipe is display name
if (title.indexOf('|') !== -1) {
var parts = title.split('|');
$preloadOptionsHtml += '<option value="' + parts[0].trim() + '">' + parts[1].trim() + '</option>';
} else {
// No display name
$preloadOptionsHtml += '<option value="' + title + '">' + title + '</option>';
}
} else {
// Rest are normal strings
title = lines[i].trim();
$preloadOptionsHtml += '<option disabled>' + title + '</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) {
// check if subpage is standard or is case by case
var page = ( config.subpage === 'case-by-case' ) ? namespace + ':' + title : 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);
}
});