Участник:Radmir Far/dewikify.js
Перейти к навигации
Перейти к поиску
/* Скрипт для девикификации выделенного текста (убирает внутренние ссылки в выделенном тексте).
Добавляет в панель редактирования кнопку, при нажатии на которую в выделенном тексте все внутренние ссылки заменяются на текст.
Вот так: [[abc|def]] -> def, [[abc]] -> abc.
Частично основано на скрипте уч. DonRumata [[Участник:DonRumata/lowercase.js]] */
( function () {
function dewikify(){
var focus = $( document.activeElement );
if (focus) {
var oldText = focus.textSelection('getSelection');
if (oldText) {
newText = "";
/* REGEXP /\[\[([^\]\[]*)\|([^\]\[]*)\]\]/g */
regexp_links_text = /\[\[([^\]\[]*)\|([^\]\[]*)\]\]/g; //ссылки с текстом [[aa|bb]]
/* REGEXP /\[\[([^\]\[\|]*)\]\]/g */
regexp_links = /\[\[([^\]\[\|]*)\]\]/g; //ссылки без текста [[aa]]
// здесь происходят замены
newText = oldText.replace(regexp_links_text, '$2').replace(regexp_links, '$1'); // [[aa|bb]] -> bb; [[aa]] -> aa
// заменяем старый текст новым
focus.textSelection( 'encapsulateSelection', {
replace: true,
peri: newText
} );
}
}
}
var customizeToolbar = function () {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'group': 'insert',
'tools': {
'dewikify': {
label: 'Дефикифицировать выделенное', // or use labelMsg for a localized label, see above
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/9/9d/OOjs_UI_icon_noWikiText-ltr-progressive.svg',
action: {
type: 'callback',
execute: function(context){
dewikify();
}
}
}
}
} );
};
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.using( ['user.options', 'jquery.textSelection'], function () {
if ( mw.user.options.get('usebetatoolbar') === 1 ) {
$.when(
mw.loader.using( 'ext.wikiEditor' ),
$.ready
).then( customizeToolbar );
}
} );
}
}() );