Користувач:DixonD/navbox.js
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
- Opera: натисніть Ctrl-F5
$(function(){
if ($('#editform').length) {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'groups': {
'dixond': {
'label': 'DixonD'
}
}
});
$('#wpTextbox1').wikiEditor('addToToolbar', {
'section': 'main',
'group': 'dixond',
'tools': {id:{
type:'button',
action: {type:'callback', execute: runMyConversion},
label:'Конвертація до navbox',
icon: 'http://upload.wikimedia.org/wikipedia/commons/4/4f/Nuvola_apps_kbouncey.png'
}}})
}
});
var templateNames = ['navigation', 'Navigation', 'Навігаційна смуга', 'навігаційна смуга', 'Навігаційна полоса', 'навігаційна полоса', 'Navbox generic', 'navbox generic', 'Навігаційна таблиця', 'навігаційна таблиця', 'Навігаційна таблиця'];
var targetTemplate = ['navbox'];
var dictionary = {
'templateName' : {name:'name', value:'{0}'},
'name' : {name:'name', value:'{0}'},
"ім'я" : {name:'name', value:'{0}'},
'color' : {name:'titlestyle', value:'background-color:{0}'},
'колір' : {name:'titlestyle', value:'background-color:{0}'},
'стиль_основного_заголовку' : {name:'titlestyle', value:'{0}'},
'header' : {name:'title', value:'{0}'},
'заголовок' : {name:'title', value:'{0}'},
'image' : {name:'image', value:'{0}'},
'зображення' : {name:'image', value:'{0}'},
'image2' : {name:'image', value:'{0}'},
'зображення2' : {name:'image', value:'{0}'},
'imageleft' : {name:'imageleft', value:'{0}'},
'body' : {name:'list1', value:'{0}'},
'зміст' : {name:'list1', value:'{0}'},
'group-style' : {name:'groupstyle', value:'{0}'},
'стиль_заголовків' : {name:'groupstyle', value:'{0}'},
'стиль_списків' : {name:'liststyle', value:'{0}'},
'even-style' : {name:'evenstyle', value:'{0}'},
'стиль_парних' : {name:'evenstyle', value:'{0}'},
'стиль_тіла' : {name:'style', value:'{0}'},
'стиль' : {name:'style', value:'{0}'},
'стиль_тела' : {name:'bodystyle', value:'{0}'},
'стиль_непарних' : {name:'oddstyle', value:'{0}'},
'заголовок1' : {name:'group1', value:'{0}'},
'список1' : {name:'list1', value:'{0}'},
'заголовок2' : {name:'group2', value:'{0}'},
'список2' : {name:'list2', value:'{0}'},
'заголовок3' : {name:'group3', value:'{0}'},
'список3' : {name:'list3', value:'{0}'},
'заголовок4' : {name:'group4', value:'{0}'},
'список4' : {name:'list4', value:'{0}'},
'заголовок5' : {name:'group5', value:'{0}'},
'список5' : {name:'list5', value:'{0}'},
'заголовок6' : {name:'group6', value:'{0}'},
'список6' : {name:'list6', value:'{0}'},
'заголовок7' : {name:'group7', value:'{0}'},
'список7' : {name:'list7', value:'{0}'},
'заголовок8' : {name:'group8', value:'{0}'},
'список8' : {name:'list8', value:'{0}'},
'заголовок9' : {name:'group9', value:'{0}'},
'список9' : {name:'list9', value:'{0}'},
'заголовок10' : {name:'group10', value:'{0}'},
'список10' : {name:'list10', value:'{0}'},
'заголовок11' : {name:'group11', value:'{0}'},
'список11' : {name:'list11', value:'{0}'},
'заголовок12' : {name:'group12', value:'{0}'},
'список12' : {name:'list12', value:'{0}'},
'заголовок13' : {name:'group13', value:'{0}'},
'список13' : {name:'list13', value:'{0}'},
'заголовок14' : {name:'group14', value:'{0}'},
'список14' : {name:'list14', value:'{0}'},
'заголовок15' : {name:'group15', value:'{0}'},
'список15' : {name:'list15', value:'{0}'},
'заголовок16' : {name:'group16', value:'{0}'},
'список16' : {name:'list16', value:'{0}'},
'заголовок17' : {name:'group17', value:'{0}'},
'список17' : {name:'list17', value:'{0}'},
'заголовок18' : {name:'group18', value:'{0}'},
'список18' : {name:'list18', value:'{0}'},
'заголовок19' : {name:'group19', value:'{0}'},
'список19' : {name:'list19', value:'{0}'},
'заголовок20' : {name:'group20', value:'{0}'},
'список20' : {name:'list20', value:'{0}'},
'заголовок21' : {name:'group21', value:'{0}'},
'список21' : {name:'list21', value:'{0}'},
'заголовок22' : {name:'group22', value:'{0}'},
'список22' : {name:'list22', value:'{0}'},
'заголовок23' : {name:'group23', value:'{0}'},
'список23' : {name:'list23', value:'{0}'},
'заголовок24' : {name:'group24', value:'{0}'},
'список24' : {name:'list24', value:'{0}'},
'заголовок25' : {name:'group25', value:'{0}'},
'список25' : {name:'list25', value:'{0}'},
'зверху' : {name:'above', value:'{0}'},
'стиль_зверху' : {name:'abovestyle', value:'{0}'},
'знизу' : {name:'below', value:'{0}'},
'стиль_знизу' : {name:'belowstyle', value:'{0}'}
}
var catparams = {
'cat':'',
'category':''
};
function runMyConversion() {
var text = $('#wpTextbox1').val();
for (var i=0; i<templateNames.length; ++i){
var templateName = templateNames[i];
var start = -1;
while ((start = text.indexOf('{{' + templateName)) != -1) {
var b = 2;
for (var end = start + 2; b!=0; ++end) {
if (text[end]=='{') ++b;
else if (text[end]=='}') --b;
}
var template = text.substring(start, end);
var navbox = convertToNavbox(template);
text = text.replace(template, navbox);
}
}
$('#wpTextbox1').val(text);
$('#wpSummary').val('уніфікація навігаційних шаблонів');
}
function convertToNavbox(template) {
template = template.substring(0, template.length - 2);
var navbox = '{{' + targetTemplate;
var categories = '';
var params = template.split('|');
for (var i=1; i<params.length; ++i) {
var param = params[i];
var j = param.indexOf('=');
if (j == -1)
{
navbox += '|' + removeNewLines($.trim(param));
} else {
var name = $.trim(param.substring(0, j));
var value = removeNewLines($.trim(param.substring(j+1, param.length)));
if (name in catparams)
categories += value;
else
if (value)
navbox += '\n| ' + convertParam(name, value)
}
}
navbox += '\n}}';
if (navbox.indexOf('| name =') == -1) {
var prefix = '{{' + targetTemplate + '\n';
navbox = navbox.replace(prefix, prefix + '| name = {{subst' + ':PAGENAME}}\n');
}
if (categories.length > 0) {
navbox += '{{main other|' + categories + '}}';
}
return navbox;
}
function convertParam(name, value) {
value = removeNewLines(value)
var replacement = dictionary[name];
if (replacement) {
name = replacement['name'];
value = replacement['value'].replace('{0}', value);
}
return name + ' = ' + value;
}
function removeNewLines(value) {
return value.replace(/\s+/g, ' ');
}