Մասնակից:ԱշոտՏՆՂ/Gadget-EditToolbar-core.js
Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր զննարկիչի հիշապահեստը. Mozilla / Firefox / Safari՝ Ctrl+Shift+R (Cmd+Shift+R Mac OS X-ում) Konqueror՝ F5 Opera՝ Tools→Preferences ընտրացանկից։ Internet Explorer՝ Ctrl+F5
/**
* from https://bg.wikipedia.org/w/index.php?title=%D0%9C%D0%B5%D0%B4%D0%B8%D1%8F%D0%A3%D0%B8%D0%BA%D0%B8:Gadget-EditToolbar-core.js&oldid=7200788
* Core of the EditToolbar
*
* Some functions and arrays are still bound to window for backwards compatibility
*/
window.setCustomInsButton = function(code, left, middle, right, shownText, title) {
customInsButtons[code] = [left, middle, right, shownText, title];
};
window.setCustomMiscButton = function(code, codeToRun, shownText, title) {
customMiscButtons[code] = [codeToRun, shownText, title];
};
window.rmCustomInsButtons = function(rmButtons) {
rmCustomButtons(customInsButtons, rmButtons);
};
window.rmCustomMiscButtons = function(rmButtons) {
rmCustomButtons(customMiscButtons, rmButtons);
};
window.rmCustomButtons = function(allButtons, rmButtons) {
for (var i = rmButtons.length - 1; i >= 0; i--) {
delete( allButtons[ rmButtons[i] ] );
}
};
/**
insert an edit toolbar before the textarea.
useful for testing user script pages while previewing
use it with:
putToolbar();
put in your script page, e.g. User:Your_Name/monobook.js
*/
window.putToolbar = function(rightNow) {
var toolbar = $('<div>', {'class': 'custom-toolbar'});
var putIt = function() {
$("#editform").before(toolbar);
};
if ( window.rightNow ) {
putIt();
} else {
$(putIt);
}
return toolbar;
};
mw.libs.EditToolbar = {};
/* * * Extra buttons for text insertion * * */
// от тези данни ще се генерират допълнителни бутони с insertTags()
window.customInsButtons = {
// "CODE" : ["LEFT", "MIDDLE", "RIGHT", "SHOWN TEXT", "TITLE"],
"b6" : ["«", "չակերտ", "»", "«»", "+չակերտներ"],
"b7" : ["<del>", "зачертан текст", "</del>", "<del>del</del>", "Отбелязване на текст като изтрит"],
"b8" : ["{"+"{", "", "}}", "{{}}", "+скоби за шаблон"],
"b9" : ["|", "", "", " | ", "+отвесна черта — |"],
"b11" : ["–", "", "", " – ", "+средна чертица — ndash"],
"b13" : ["<!-- ", "մեկնաբանություն", " -->", "<!--", "+коментар"],
"b21" : ["<ref>", "", "</ref>", "<ref>", "+източник / бележка под линия"],
"b21n" : ['<ref name="">', "", "</ref>", "<ref name>", "+многократна употреба на източник / бележка под линия"],
"b21o" : ["[", "", "]", "[]", "+външна препратка"],
"b22" : ["["+"[", "", "]]", "[[...]]", "+препратка без разделител"],
"b23l" : ["["+"[", "", "|]]", "[[...|]]", "+препратка с разделител (курсорът е отляво на разделителя)"],
"b23r" : ["["+"[|", "", "]]", "[[|...]]", "+препратка с разделител (курсорът е отдясно на разделителя)"],
"b24" : ["["+"[:", "", "]]", "[[:...]]", "+текстова препратка"]
};
// cleanup by articles
if (mw.config.get('wgCanonicalNamespace') === '') {
mw.loader.using("mediawiki.toolbar", function() {
delete customInsButtons['b14'];
delete customInsButtons['b15'];
$('#mw-editbutton-signature').hide();
});
}
mw.messages.set({
"et-addchar": "Տեղադրել «$1» նիշը",
"et-addpref": "Տեղադրել $1",
"et-ddmenutitle": "Տեղադրել դատարկ կաղապար",
"et-ajaxerror": "«[[$1]]» կաղապարը չի կարող բեռնվել։"
});
/* * * Extra buttons for miscelaneous functions * * */
// името на елемента за допълнителните знаци
var charsElemId = "extraChars";
// данни за още бутони с код по желание
window.customMiscButtons = {
// допълнителните знаци
"ch" : ["mw.libs.EditToolbar.toggleChars()", "Բոլոր…", "Վիրտուալ ստեղնաշար"]
};
/* * * Drop down menus for template insertion * * */
/* по идея на [[:he:MediaWiki:Summary|еврейската Уикипедия]] */
window.tpl1 = window.tpl1 || {
// "SHOWN TEXT" : "TEMPLATE CONTENT",
"Հոդվածի տարրեր…" : "-",
"Վիքիպեդիա" : "{{Վիքիպեդիա}}",
"== ==" : "\n== >>|<< ==\n",
"=== ===" : "\n=== >>|<< ===\n",
"==== ====" : "\n==== >>|<< ====\n",
"===== =====" : "\n===== >>|<< =====\n",
"Աղբյուրներ" : "== Աղբյուրներ ==\n{{աղբյուր}}",
"Թարգմանություններ" : "==== Թարգմանություններ ====\n{{trans-top}}\n{{trans-mid}}\n{{trans-bottom}}",
"Ծանոթագրություններ" : "\n== Ծանոթագրություններ ==\n{{ծանցանկ}}\n",
"Կատեգորիա" : "[[Կատեգորիա:>>|<<]]"
};
var atplb = "MediaWiki:Gadget-EditToolbar/";
window.atpl1 = window.atpl1 || {
// "SHOWN TEXT" : "PAGE NAME",
"Հայերեն…" : "-",
"բրբռ" : atplb + "Հայերեն բրբռ",
"գոյական" : atplb + "Հայերեն գոյական",
"ածական" : atplb + "Հայերեն ածական",
"թվական" : atplb + "Հայերեն թվական",
"դերանուն" : atplb + "Հայերեն դերանուն",
"բայ" : atplb + "Հայերեն բայ",
"մակբայ" : atplb + "Հայերեն մակբայ",
"կապ" : atplb + "Հայերեն կապ",
"շաղկապ" : atplb + "Հայերեն շաղկապ",
"ձայնարկություն" : atplb + "Հայերեն ձայնարկություն",
"վերաբերություն" : atplb + "Հայերեն վերաբերություն"
};
var tplVarBaseName = "tpl";
var atplVarBaseName = "atpl";
var chars = [
['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С',
'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ь', 'Ю', 'Я', 'Ы', 'Э', 'а', 'б', 'в', 'г',
'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х',
'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я', 'ы', 'э'],
['ѣ', 'ѫ', 'ѭ', 'ѧ', 'ѩ', 'Ї', 'Ҁ', 'Ѹ', 'Ѡ', 'Ѻ', 'Ъ', 'І', 'Ҍ', 'Ѩ', 'Ѭ', 'Ѯ', 'Ѵ',
'Ѥ', 'Ѿ'],
['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ',
'ς', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'Γ', 'Δ', 'Θ', 'Λ', 'Ξ', 'Π', 'Σ', 'Φ', 'Ψ', 'Ω'],
['½', '¼', '¾', '∫', '∑', '∏', '√', '—', '−', '±', '∞', '≈', '~', '∝', '≡', '≠', '≤', '≥', '×',
'·', '÷', '∂', '′', '″', '∇', '∮', '⊥', '‰', '∴', 'ℵ', 'ℋ', '℧', '^', '¹', '²', '³', '∈',
'∉', '∩', '∪', '⊂', '⊃', '⊆', '⊇', '∧', '∨', 'ø', '¬', '∃', '∀', '⇒', '⇐','⇓', '⇑',
'⇔', '→', '←', '↓', '↑', '↔', '⇄', '⇆', '⇋', '⇌', 'ℕ', 'ℤ', 'ℚ', 'ℝ', 'ℂ', '∅', '⋮',
'⋯'],
['*', '~', '|', '[', ']', '°', '№', '™', '©', '®', '¢', '€', '¥', '£', '¤', '¿', '¡',
'«', '»', '§', '¶', '†', '‡', '•', '♀', '♂', '…', '¨'],
['Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'À', 'à', 'È', 'è', 'Ì', 'ì', 'Ò', 'ò',
'Ù', 'ù', 'Â', 'â', 'Ê', 'ê', 'Î', 'î', 'Ô', 'ô', 'Û', 'û', 'Ä', 'ä', 'Ë', 'ë', 'Ï', 'ï',
'Ö', 'ö', 'Ü', 'ü', 'ß', 'Ã', 'ã', 'Ñ', 'ñ', 'Õ', 'õ', 'Ç', 'ç', 'Ģ', 'ģ', 'Ķ', 'ķ', 'Ļ',
'ļ', 'Ņ', 'ņ', 'Ŗ', 'ŗ', 'Ş', 'ş', 'Ţ', 'ţ', 'Ć', 'ć', 'Ĺ', 'ĺ', 'Ń', 'ń', 'Ŕ', 'ŕ', 'Ś',
'ś', 'Ý', 'ý', 'Ź', 'ź', 'Đ', 'đ', 'Ů', 'ů', 'Č', 'č', 'Ď', 'ď', 'Ľ', 'ľ', 'Ň', 'ň', 'Ř',
'ř', 'Š', 'š', 'Ť', 'ť', 'Ž', 'ž', 'Ǎ', 'ǎ', 'Ě', 'ě', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ā',
'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', 'ǖ', 'ǘ', 'ǚ', 'ǜ', 'Ĉ', 'ĉ', 'Ĝ', 'ĝ', 'Ĥ',
'ĥ', 'Ĵ', 'ĵ', 'Ŝ', 'ŝ', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ă', 'ă', 'Ğ', 'ğ', 'Ŭ', 'ŭ', 'Ċ', 'ċ', 'Ė',
'ė', 'Ġ', 'ġ', 'İ', 'ı', 'Ż', 'ż', 'Ą', 'ą', 'Ę', 'ę', 'Į', 'į', 'Ų', 'ų', 'Ł', 'ł', 'Ő',
'ő', 'Ű', 'ű', 'Ŀ', 'ŀ', 'Ħ', 'ħ', 'Ð', 'ð', 'Þ', 'þ', 'Œ', 'œ', 'Æ', 'æ', 'Ø', 'ø', 'Å',
'å']
];
window.showMenus = true;
window.showButtons = true;
/** generate and add extra chars in the element $charsElemId */
function addChars() {
$chars = $('#'+charsElemId);
if (!$chars.is(':empty')) {
// if there are extra chars already, do nothing
return $chars;
}
var cont = '';
var len = chars.length;
for (var i in chars) {
for (var j in chars[i]) {
cont += "<a href=\"javascript:mw.toolbar.insertTags('"+chars[i][j]+"', '', '')\" "+
'title="' + mw.msg("et-addchar", chars[i][j]) +'">'+chars[i][j]+'</a> ';
}
if (i != len-1) {
cont += '<br/>';
}
}
return $chars.html(cont);
}
mw.libs.EditToolbar.toggleChars = function() {
addChars().toggle();
};
/* * * Extra buttons for text insertion * * */
/** add some buttons and drop-down menus */
function setupCustomEditTools() {
if ( !$("#editform").length ) {
return;
}
mw.loader.using("mediawiki.toolbar", function(){
var toolbar = putToolbar(true);
toolbar.addClass("buttonlinks");
if ( showMenus ) {
// drop-down menus inserting text put direct in the javascript
appendDropDownMenus(toolbar, tplVarBaseName, insertIntoWikiText);
// drop-down menus inserting content from wiki pages
appendDropDownMenus(toolbar, atplVarBaseName, loadPage);
}
if ( showButtons ) {
appendCustomButtons(toolbar);
appendExtraChars(toolbar);
}
});
}
$(function() {
mw.loader.using("user", function(){
setupCustomEditTools();
});
});
function appendCustomButtons(parent) {
var buts = $('<div>', { id: "custombuttons" });
for (var i in customInsButtons) {
var el = customInsButtons[i];
var title, href, html;
if (el.length > 3) { // an Insert button
href = "javascript:mw.toolbar.insertTags('"+el[0] +"','"+el[2]+"','"+ el[1]+"')";
title = el[4];
html = el[3];
}
else { // a Misc button
href = "javascript:"+el[0];
title = el[2];
html = el[1];
}
if ( title.charAt(0) == "+" ) {
title = mw.msg("et-addpref", [title.substr(1)]);
}
appendCustomButton(buts, {
href: href,
title: title,
html: html
});
}
for (var i in customMiscButtons) {
var el = customMiscButtons[i];
appendCustomButton(buts, {
href: "javascript:"+el[0],
title: el[2],
html: el[1]
});
}
parent.append(buts);
}
function appendCustomButton(box, item) {
box.append($('<a>', item), ' ');
}
function appendExtraChars(parent) {
$('<div>', { id: charsElemId, style: 'display: none' }).appendTo(parent);
}
function appendDropDownMenus(parent, tplVarBaseName, callback) {
var tplVar = null;
for ( var i = 1; tplVar = tplVarBaseName + i,
eval("var tpl = typeof("+ tplVar +") == 'object' ? "+ tplVar +" : null"),
tpl != null; i++ ) {
appendDropDownMenu(parent, tpl, callback, "ddmenu_" + tplVar);
}
}
/** generates a drop-down menu */
function appendDropDownMenu(parent, content, callback, id) {
var box = $('<select>', {
id: id,
title: mw.msg("et-ddmenutitle")
}).on('change', function() {
if (this.value != "-") {
callback(this.value);
this.selectedIndex = 0;
}
return;
});
if ( appendOptions(box, content) > 1 ) {
parent.append(box);
}
}
function appendOptions(box, opts) {
var count = 0;
for (var i in opts) {
if (opts[i] == "") {
continue; // skip emtpy entries
}
if (typeof opts[i] == "object") {
var g = $('<optgroup>', {label: i});
for (var k in opts[i]) {
$('<option>', { value: opts[i][k], text: k }).appendTo(g);
}
box.append(g);
} else {
$('<option>', { value: opts[i], text: i }).appendTo(box);
}
count++;
}
return count;
}
/* * * * * * * * * * Ajax functions * * * * * * * * * */
function loadPage(page) {
showLoadIndicator();
var pageUrl = mw.util.getUrl(page, { action: 'raw', templates: 'expand' });
$.get(pageUrl)
.done(insertIntoWikiText)
.fail(function() {
alert(mw.msg('et-ajaxerror', [page]));
}).always(function() {
hideLoadIndicator();
});
}
function insertIntoWikiText(content) {
// delete text marked for no inclusion + <pre> and <nowiki>
var re = /<!--noinclude-->.*<!--\/noinclude-->|<\/?pre>|<\/?nowiki>/g;
content = content.replace(re, "");
// replace escaped tags
var specials = ['pre', 'nowiki'];
for (var i in specials) {
re = new RegExp("\\[(\/?)"+ specials[i] +"\\]", "g");
content = content.replace(re, "<$1"+ specials[i] +">");
}
// we can have >>|sample text|<< or >>|<< or just simple text
var parts = null;
var left, right, def = '';
content = escapeNl(content);
if ( ( parts = content.match(/(.*)>>\|(.*)\|<<(.*)/) ) ) {
left = parts[1];
def = parts[2];
right = parts[3];
} else { // no sample text: split at caret’s position
parts = content.split('>>|<<');
left = parts[0];
delete(parts[0]);
right = parts.join('');
}
mw.toolbar.insertTags(unescapeNl(left), unescapeNl(right), unescapeNl(def));
}
function escapeNl(s) {
return s.replace(/\n/g, "\x01");
}
function unescapeNl(s) {
return s.replace(/\x01/g, "\n");
}
var $loadIndicator;
function showLoadIndicator() {
if (!$loadIndicator) {
$loadIndicator = $('<div class="mw-ajax-loader"/>')
.css({
position: 'absolute',
top: $('#wpTextbox1').offset().top + 10,
left: '50%'
})
.hide()
.appendTo('body');
}
$loadIndicator.fadeIn();
}
function hideLoadIndicator() {
if ($loadIndicator) {
$loadIndicator.hide();
}
}