Користувач:AS/ППС
- це опис старої версії додатку. Нова версія тут — User:AS/ППС-2
Покращена панель спецсимволів (гнучкіша версія Edittools)
Переваги:
- Відносно легко налаштовується. HTML-код генерується на основі об'єкта, який користувач задає у своїх скриптах. Щоб додати прості елементи, наприклад, дужки і лапки, Ви пишете
'($+) «$+»'
, де$
це виділення, а+
це позиція каретки. Для кнопок, де напис не має відповідати вставці, треба оголошувати масив з двох елементів:["'", "' (апостроф)"]
,["$$$", "тричі повторити виділене"]
. - Можна вставляти довільний HTML з довільними функціями (як приклад реалізовано пошук/заміну)
- Символи можна розбити на підмножини, їхні закладки будуть відображатися зліва. Це економить місце.
- Виправлено деякі недоліки стандартного вікіпедійного скрипту вставки (не відкочувалися зміни в Хромі; при огортанні тегами каретка не верталася в потрібне місце)
Недоліки:
- Панель генерується наново при кожному завантаженні сторінки.
- Замінено деякі стандартні скрипти. Якогось дня це вилізе боком.
Доробити: макс. висота і прокрутка, ІЕ11, умовні вкладки
Встановлення
ред.Доступний через Додатки у персональних Налаштуваннях. Далі у якомусь із персональних скриптів треба додати налаштування своєї панелі.
Налаштування
ред.Символи будуються на основі об'єкта window.etSubsets
, який користувач визначає у своєму персональному скрипті.
etSubsets
ред.Це масив [вкладка1, вкладка2, вкладка3...]
об'єктів, кожен з яких описує підмножину символів (окрему вкладку). Ці об'єкти мають мати властивості: caption
(назва вкладки) і symbols
(власне масив символів).
Символи вкладки
ред.Масив символів може містити елементи трьох типів:
- рядки. Це для простих вставок. Пробіл є розділювачем. $ заміняється на виділення. _ вставляє пробіл. + показує позицію каретки. Символи жнп вкінці є модифікаторами: ж задає жирний текст, п — звичайний текст, без вставки, н — нахилений текст. Символ екранування це
/
(для вставляння$+_
). Наприклад
{caption: "Моя перша вкладка", symbols: ["{{ref-de|$+}} {{ref-en|$+}} &nb" + "sp — ² ³ ½ € † ‰ ÷ × →"]} //зауважте, що nbsp довелося розбити, щоб парсер не замінив його код на пробіл
- двоелементний масив: рядок-вставка і рядок-напис. Наприклад
{
caption: "Моя перша вкладка",
symbols: ["— ² ³ ½ € † ‰ ÷ × →", ["{{ref-de|$+}}", "нім. джерело"], ["{{ref-en|$+}}", "англ. джерело"] ]
}
- об'єкт. Для складніших вставок. Може мати параметри:
html
— код, який вставиться в панель;cap
— напис;ins
— вставка;plain
— буде вставлено просто напис;func
— довільна функція, що виконуватиметься при клацанні;b
— жирний текст;i
— похилий текст;onload
— функція, яка буде виконуватися при генерації вкладок.
Наприклад
{
caption: "Моя перша вкладка",
symbols: [ ["{{ref-de|$+}}", "нім. джерело"], ["{{ref-en|$+}}", "англ. джерело"], {cap: "напис"; func: function(){ /* тут якась хитра функція */ }} ]
}
Звичаєве оголошення etSubsets
ред.(function(){
var spProcessSelection = function(txtFunc){
var $tetarea = $etTextarea();
var txt = $tetarea.getSelection();
$tetarea.setSelection(txtFunc(txt));
}
var perLineReplace = function(str, regex, to){
str = str.split('\n');
var i, len = str.length;
for (i = 0; i < len; i+=1){
str[i] = str[i].replace(regex, to);
}
return str.join('\n');
}
var linkifyList = function(s){
return perLineReplace(s, /[^*;#—\s,][^*\.#—;,]+/g, '[[$&]]');
};
var simpleList = function(s){
return perLineReplace(s, /(([\*#]*)\s*)(.+)/g, '*$2 $3');
};
var numericList = function(s){
return perLineReplace(s, /(([\*#]*)\s*)(.+)/g, '#$2 $3');
};
var dot = "·п";
if (!window.etSubsets)
window.etSubsets = [
{caption:'Оформлення', symbols:["[[$+]] ($+) «$+»", ["|", "| (риска)"], "&nb"+"sp — ² ³ ½ € † ‰ ÷ × → … ° °C « » \" # § ¶ ~ · • ↑ ↓", ["'", "| (апостроф)"], "₴ (гривня)п ·п ·п Ǻ Ґ ґ Є є І і Ї ї ·п Ы ы Ъ ъ Э э", {html:'<br/>'}, "[[$+|$]] [[+:$]] {{+|$}} [[be:$+]] [[be-x-old:$+]] [[bg:$+]] [[de:$+]] [[el:$+]] [[en:$+]] [[ja:$+]] [[fr:$+]] [[it:$+]] [[pl:$+]] [[ru:$+]] ·п {{langнп", ["{{lang-de|$+}}", "-de"], ["{{lang-el|$+}}", "-el"], ["{{lang-en|$+}}", "-en"], ["{{lang-es|$+}}", "-es"], ["{{lang-fr|$+}}", "-fr"], ["{{lang-it|$+}}", "-it"], ["{{lang-la|$+}}", "-la"], ["{{lang-uk|$+}}", "-uk"], ["{{lang-pl|$+}}", "-pl"], ["{{lang-ru|$+}}", "-ru"], "}}п ·п {{main|$+}} ·п {{Catmore|$+}} ·п {{refнп", ["{{ref-uk}}", "-uk"], ["{{ref-en}}", "-en"], ["{{ref-es}}", "-es"], ["{{ref-de}}", "-de"], ["{{ref-fr}}", "-fr"], ["{{ref-ru}}", "-ru"], "}}п ·п <ref>$+<//ref> ·п <ref_name=\"\">$+<//ref> ·п <blockquote>$+<//blockquote>", {html:"<br/>"}, "==_$+_== ·п ===_$+_=== ·п ==_Див._також_== ·п ==_Примітки_==\n{{reflist}} ·п ==_Посилання_== ·п ==_Джерела_== ·п <br//> ·п <big>$+<//big> ·п <source_lang=\"+\">$<//source> ·п [[Файл:$|міні|ліворуч|200пкс|+]] ·п </div>", dot, ["<$>+<//$>", "<$></$>"], dot, ["<+>$<//>", "<></>"], dot, "список:п", {cap:"вікіфікувати", func:function(){spProcessSelection(linkifyList)}, key:'e'}, dot, {cap:"звичайний", func:function(){spProcessSelection(simpleList)}}, dot, {cap:"нумерований", func:function(){spProcessSelection(numericList)}}, dot,
{
cap:"нижній регістр", func:function(){
spProcessSelection(function(s){
return s.toLowerCase()
})
}
}
]},
{caption:'Шаблони', symbols:['{{Wikify$+}} ·п {{без_джерел+}} ·п {{Перекладена_стаття||$+}} ·п {{Disambig$+}} {{DisambigG$+}} {{Otheruses|$+}} {{Привітання}}+--~~\~~ <noinclude>$+<//noinclude> ·п <includeonly>$+<//includeonly> {{su'+'bst:afd}} ·п {{{$+}}} ·п [[Категорія:Персоналії$+]] ·п [[Категорія:Персонажі_$+]] ·п [[Категорія:Зображення:$+]] · [[Користувач:$|$+]] [[Категорія:Народились_$+]] [[Категорія:Померли_$+]] [[Категорія:Музичні_колективи,_що_з\'явились_$+]] {{DEFAULTSORT:$+}}']},
{caption:'Алфавіти', symbols:['ѣ Ѣ ѧ Ѧ ѩ Ѫ ѫ Ѭ ѭ ·р Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ż ż Ź ź \n Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ']}
]
})();