це опис старої версії додатку. Нова версія тут — 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 « » \" # § ¶ ~ · • ↑ ↓", ["'", "| (апостроф)"], "₴ (гривня)п ·п &nbsp; ·п Ǻ Ґ ґ Є є І і Ї ї ·п Ы ы Ъ ъ Э э", {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 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ']}
]
 
})();