Различие между версиями «MediaWiki:Editpage.js»

Материал из Викисловаря
Содержимое удалено Содержимое добавлено
назад
Нет описания правки
Строка 343: Строка 343:
function updateToolbar(){
function updateToolbar(){
if( mw.user.options.get('usebetatoolbar') ) {
if( mw.user.options.get('usebetatoolbar') ) {
mw.loader.using( 'ext.wikiEditor.toolbar', function () {
mw.loader.using( 'ext.wikiEditor', function () {
updateNewToolbar();
updateNewToolbar();
});
});

Версия от 16:56, 2 февраля 2018

//<!--
//Toolbar buttons

importScript('MediaWiki:Wikificator.js')

// Добавление кода обработчка как в [[mw:extension:CharInsert]]
function addHandlers() {
	$('#editpage-specialchars').find('a.mw-charinsert-item').each( function () {
		var $elm = $( this ),
			start = $elm.data( 'mw-charinsert-start' ),
			end = $elm.data( 'mw-charinsert-end' );
		if ( $elm.data( 'mw-charinsert-done' ) ) {
			return;
		}
		$elm.click( function ( e ) {
			e.preventDefault();
			mw.toolbar.insertTags( start, end, '' );
		} )
		.data( 'mw-charinsert-done', true )
		.attr( 'href', '#' );
    } );
}

// Временно повторно установливаем обработчики
// $(addHandlers);

/* select subsection of special characters */
window.chooseCharSubset = function ( s ) {
  var l = document.getElementById('editpage-specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
    l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
  jQuery.cookie('edittoolscharsubset', s);
}

/* add menu for selecting subsets of special characters */
function addCharSubsetMenu() {
	$('#editpage-specialchars').prepend("<select id=\"charSubsetControl\" style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">");
	$( "#editpage-specialchars > p").each(function ()  {
		$('#charSubsetControl').append('<option>' + decodeURIComponent($( this ).attr('id').replace(/\.(?!_)/g, "%")).replace(/_/g, ' ') + '</option>');
		});
    /* default subset from cookie */
    var s = parseInt( jQuery.cookie('edittoolscharsubset') );
    if ( isNaN(s) ) s = 0;    
  	$('#charSubsetControl').prop('selectedIndex', s);
	/* display the subset indicated by the cookie */
	chooseCharSubset( s );
}

$(addCharSubsetMenu);

//Summary buttons 
function SummaryButtons(){
 var sum = document.getElementById('wpSummary')
 if (!sum || (sum.form.wpSection && sum.form.wpSection.value == 'new')) return
 var sp = document.createElement('div'); sp.id = 'userSummaryButtonsA'
 sum.parentNode.insertBefore(sp, sum.nextSibling)
 addSumButton('викиф.','викификация')
 addSumButton('оформл.','оформление')
 addSumButton('стандарт.','стандартизация структуры')
 addSumButton('стиль','стилевые правки')
 addSumButton('орфогр.','орфография')
 addSumButton('пункт.','пунктуация')
 addSumButton('кат.','категория','Исправлена категоризация')
 addSumButton('шаб.','шаблон','Добавлен / изменён шаблон')
 addSumButton('к удал.','к удалению','Страница предложена к удалению')
 addSumButton('доп.','дополнение')
 addSumButton('илл.','иллюстрация')
 addSumButton('обнов.','обновление данных')
 addSumButton('уточн.','уточнение')
 addSumButton('испр.', 'исправление')
}

function addSumButton(name, text, title) {
 var btn = document.createElement('a')
 btn.appendChild(document.createTextNode(name))
 btn.title = title || text
 btn.onclick = function(){insertSummary(text);return(false)}
 document.getElementById('userSummaryButtonsA').appendChild(btn)
}

function insertSummary(text) {
 var sum = document.getElementById('wpSummary')
 if (sum.value.indexOf(text) != -1) return 
 if (sum.value.match(/[^,; \/]$/)) sum.value += ','
 if (sum.value.match(/[^ ]$/)) sum.value += ' '
 sum.value += text
}

$(SummaryButtons);

// Служебная функция, добавляет к тулбару кнопку спереди
function prependFuncButton(img, tip, func){
 var toolbar = document.getElementById('toolbar') || document.getElementById('wikiEditor-ui-toolbar');
 first = toolbar.firstChild;
 if (!toolbar) return
 var i=document.createElement('img')
 i.src=img; i.alt=tip;  i.title=tip; i.onclick=func; i.style.cursor='pointer'
 toolbar.insertBefore(i, first);
}
// Служебная функция, добавляет к тулбару кнопку сзади
function addFuncButton(img, tip, func){
 var toolbar = document.getElementById('toolbar') || document.getElementById('wikiEditor-ui-toolbar');
 if (!toolbar) return
 var i=document.createElement('img')
 i.src=img; i.alt=tip;  i.title=tip; i.onclick=func; i.style.cursor='pointer'
 toolbar.appendChild(i)
}

//Update toolbar buttons 
function updateNewToolbar() {
  if ($('body').hasClass('ns-0')) {
  	// move replace button
  	$('div.tabs').after($('div.group-search[rel="search"]'))
    // remove useless sections
    $('#wpTextbox1').wikiEditor('removeFromToolbar', 
    {'section': 'main', 'group': 'insert', 'tool' : 'signature'});
    $('#wpTextbox1').wikiEditor('removeFromToolbar', 
    {'section': 'advanced'});
    //$('#wpTextbox1').wikiEditor('removeFromToolbar', 
    //{'section': 'characters'});
    $('#wpTextbox1').wikiEditor('removeFromToolbar', 
    {'section': 'help'});
    $('.sections').css('height', '0px');
  }
  // Adding groups to an existing toolbar section:
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
    'section': 'main',
    'groups': {
      'extra': {
        'tools': {
          'wikif': {
            'label': 'Викификатор',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/0/06/Wikify-toolbutton.png',
            'action': {
              'type': 'callback',
              'execute': function() {Wikify()}
            }
          }
        }
      },
      'insert': {
        'tools': {
          'redirect': {
            'labelMsg': 'wikieditor-toolbar-tool-redirect',
            'type': 'button',
            'icon': {'default': 'insert-redirect.png', 'default-rtl': 'insert-redirect-rtl.png'},
            'action': {
              'type': 'encapsulate',
                'options': {
                  'pre': "#перенаправление [[",
                  'periMsg': 'wikieditor-toolbar-tool-redirect-example',
                  'post': "]]",
                  'ownline': true
                }
              }
          },
          'link': {
            'label': 'Ссылка',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/7/7f/Vector_toolbar_brackets_button.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "[[",
                'peri': 'Заголовок ссылки',
                'post': "]]"
              }
            }
          },
          'template': {
            'label': 'Шаблон',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/d/dd/Vector_toolbar_template_button.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "{{",
                'peri': 'Название шаблона',
                'post': "}}"
              }
            }
          },
          'category': {
            'label': 'Категория',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/c/c4/Toolbar_category.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "[[Категория:",
                'peri': 'Название категории',
                'post': "]]"
              }
            }
          },
          'vertical_bar': {
            'label': 'Вертикальная черта',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/3/32/Toolbaricon_vertical_bar.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "|"
              }
            }
          },
          'number_sign': {
            'label': 'Знак решётки',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/c/cd/Number_Sign_button.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "#"
              }
            }
          },
          'nonbreakspace': {
            'label': 'Неразрывный пробел',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/e/ed/Toolbaricon_nbsp.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "&nbsp;"
              }
            }
          },
          'wikipedialink': {
            'label': 'Ссылка на Википедию',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/b/b0/Wikipedia-favicon.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "{{wikipedia",
                'post': "}}"
              }
            }
          },
          'acute': {
            'label': 'Ударение',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/a/a2/A_with_acute.svg/22px-A_with_acute.svg.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "́"
              }
            }
          },
          'grave': {
            'label': 'Гравис',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/b/b2/A_with_grave.svg/22px-A_with_grave.svg.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "̀"
              }
            }
          },
          'double_grave': {
            'label': 'Двойной гравис',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/c/c2/A_with_double_grave.svg/22px-A_with_double_grave.svg.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "̏"
              }
            }
          },
          'inverted_breve': {
            'label': 'Арка',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/3/33/A_with_inverted_breve.svg/22px-A_with_inverted_breve.svg.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "̑"
              }
            }
          },
          'macron': {
            'label': 'Макрон',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/6/6c/A_with_a_macron.svg/22px-A_with_a_macron.svg.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "̄"
              }
            }
          },
          'tagpre': {
            'label': 'Тег <pre>',
            'type': 'button',
            'icon': '//upload.wikimedia.org/wikipedia/commons/b/b9/Toolbar_pre_vector.png',
            'action': {
              'type': 'encapsulate',
              'options': {
                'pre': "<pre>",
                'peri': 'Текст',
                'post': "</pre>"
              }
            }
          }
        }
      }
    }
  } );
  // Prepend wikificator button
  $('#wikiEditor-ui-toolbar .section-main').prepend($('#wikiEditor-ui-toolbar .group-extra'));
} 


function updateOldToolbar(){
  // Добавление кнопок на устаревшую панель инструментов
addFuncButton("//upload.wikimedia.org/wikipedia/ru/1/1d/Button_redirect_rus.png", 
   "Перенаправление", function(){insertTags('#Redirect [[',']]','название страницы')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png", 
   "Шаблон", function(){insertTags('{{','}}','Название шаблона')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/3/3c/Button_cat_ru.png", 
   "Категория", function(){insertTags('[[Категория:',']]','Название категории')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png", 
   "Неразрывный пробел", function(){insertTags('&nbsp;','','')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/b/bf/WP-icon.png", 
   "Ссылка на Википедию", function(){insertTags('{{wikipedia','}}','')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/0/0e/Button_acute_accent.png", 
   "Ударение", function(){insertTags('́','','')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/e/ec/Button_diacritique_2.png", 
   "Гравис", function(){insertTags('̀','','')});
addFuncButton("//upload.wikimedia.org/wikipedia/commons/3/3c/Button_pre.png", 
   "Тег <pre>", function(){insertTags('<pre>','</pre>','Текст')});
prependFuncButton("//upload.wikimedia.org/wikipedia/commons/3/38/Button_wikify.png",
   'Викификатор', function(){Wikify()});
}

function updateToolbar(){
  if( mw.user.options.get('usebetatoolbar') ) {
    mw.loader.using( 'ext.wikiEditor', function () {
       updateNewToolbar();
    });
  } else {
    updateOldToolbar();
  }
  $('#wpTextbox1').removeClass('mw-ui-input');
}
// Execute on load
$(updateToolbar);

//-->