Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • 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, ' ');
}