MediaWiki:Gadget-EditingAliases.js
Перейти к навигации
Перейти к поиску
Замечание: Чтобы после сохранения вступили в силу изменения стилей, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=common&*, если используете скин Common.
Чтобы вступили в силу изменения скриптов, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=common&*, если используете скин Common.
Гаджеты и импортируемые скрипты загружаются отдельными файлами.
/* Приспособление, заменяющее на время редактирования неудобные для восприятия символы
* или их группы на другие.
* По умолчанию, неразрывный пробел заменяется на маленькую точку в середине строки.
* Личные настройки замены можно сделать на странице Участник:<Участник>/EditingAliases.js.
* В двумерном массиве edit_aliases лежат строки (регулярные выражения) для подстановки псевдонимов.
* Если используется сложная подстановка (с необычными символами или метасимволами),
* то обратную подстановку следует задать явно в edit_aliases_back.
* Каждый элемент массивов должен иметь вид:
* ['<заменяемые символы>', '<заменяющие символы>', '<опции регулярного выражения (не обязательно)>'].
*
* В гаджете не выполняется обратная замена, когда включено оглавление с возможностью навигации (Usability Initiative). Поэтому при таких настойках,
* он автоматически отключается. Не используется и в CodeEditor.
*
* Автор: Александр Машин, 10 декабря 2008 — 1 марта 2014.
*/
function runReplacements (text_box, replacements) {
// Подставить псевдонимы один за другим:
var txt = text_box.value;
for (var i = 0; i < replacements.length; i++) {
var reg_exp = new RegExp (replacements[i][0], 'g' + (replacements[i][2] || ''));
txt = txt.replace (reg_exp, replacements[i][1]);
}
text_box.value = txt;
}
function useAliases(){
// Построение списка обратной автозамены:
for (var i = 0; i < edit_aliases.length; i++) {
if (!edit_aliases_back[i]) {
edit_aliases_back[i] = {
0: edit_aliases[i][1]
, 1: edit_aliases[i][0]
, 2: edit_aliases[i][2]
};
}
}
// Применение заменяющих символов:
$('textarea').each(function(){
var areaScrollPosition = $(this).scrollTop();
runReplacements(this, edit_aliases);
$(this).scrollTop (areaScrollPosition);
});
// Подготовка обратной замены при отправке форм:
$('form:not(#searchform)').submit (function () {
$('textarea', this).each (function () {
var areaScrollPosition = $(this).scrollTop ();
runReplacements(this, edit_aliases_back);
$(this).scrollTop (areaScrollPosition);
return true;
});
});
return true;
}
$(function () {
if (!(mw.config.get('wgPageContentModel') === 'javascript'
|| mw.config.get ('wgPageContentModel') === 'Scribunto'
|| mw.config.get ('wgWikiEditorEnabledModules')
&& mw.config.get ('wgWikiEditorEnabledModules')['toc']
)) {
// Замены по умолчанию:
edit_aliases = [['\u00A0', '\u00B7']];
edit_aliases_back = [['\u00B7(?!\\}\\})', '\u00A0']];
// Личные настройки:
mw.loader.load ('/w/index.php?title=Участник:' + mw.config.get ('wgUserName') + '/' + 'EditingAliases.js&action=raw&ctype=text/javascript');
// Подготовка замены при загрузке и обратной замены при сохранении:
useAliases ();
}
});