Разлика между версии на „МедияУики:Common.js“
От БГ-Фантастика
(нови функции за допълнителни бутони и падащо меню за вмъкване на празни шаблони) |
|||
| Ред 1: | Ред 1: | ||
| + | /* | ||
| + | Чрез редактиране на този файл можете да промените някои неща на Джаваскрипт за облика Монобук | ||
| + | <pre> | ||
| + | */ | ||
| − | + | /* tooltips and access keys */ | |
| − | + | var ta = { | |
| − | + | 'pt-userpage' : ['.','Вашата потребителска страница'], | |
| − | + | 'pt-anonuserpage' : ['.','Потребителската страница за адреса, от който редактирате'], | |
| − | + | 'pt-mytalk' : ['n','Вашата дискусионна страница'], | |
| − | + | 'pt-anontalk' : ['n','Дискусия относно редакциите от този адрес'], | |
| − | + | 'pt-preferences' : ['','Вашите настройки'], | |
| − | + | 'pt-watchlist' : ['l','Списък на страници, чиито промени сте избрали да наблюдавате'], | |
| − | + | 'pt-mycontris' : ['y','Списък на Вашите приноси'], | |
| − | + | 'pt-login' : ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.'], | |
| − | + | 'pt-anonlogin' : ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.'], | |
| − | + | 'pt-logout' : ['o','Излизане от {{SITENAME}}'], | |
| − | + | 'ca-talk' : ['t','Беседа относно страницата'], | |
| − | + | 'ca-edit' : ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.'], | |
| − | + | 'ca-addsection' : ['+','Добавяне на коментар към страницата'], | |
| − | + | 'ca-viewsource' : ['e','Страницата е защитена. Може да разгледате изходния й код.'], | |
| − | + | 'ca-history' : ['h','Предишни версии на страницата'], | |
| − | + | 'ca-protect' : ['=','Защитаване на страницата'], | |
| − | + | 'ca-delete' : ['d','Изтриване на страницата'], | |
| − | + | 'ca-undelete' : ['d','Възстановяване на изтрити редакции на страницата'], | |
| − | + | 'ca-move' : ['m','Преместване на страницата'], | |
| − | + | 'ca-nomove' : ['','Нямате разрешение за преместване на страницата'], | |
| − | + | 'ca-watch' : ['w','Добавяне на страницата към списъка Ви за наблюдение'], | |
| − | + | 'ca-unwatch' : ['w','Премахване на страницата от списъка Ви за наблюдение'], | |
| − | + | 'search' : ['f','Претърсване на {{SITENAME}}'], | |
| − | + | 'p-logo' : ['','Началната страница'], | |
| − | + | 'n-mainpage' : ['z','Началната страница'], | |
| − | + | 'n-portal' : ['','Информация за проекта'], | |
| − | + | 'n-currentevents' : ['','Списък на основните категории в {{SITENAME}}'], | |
| − | + | 'n-recentchanges' : ['r','Списък на последните промени в цялото уики'], | |
| − | + | 'n-randompage' : ['x','Случайна страница'], | |
| − | + | 'n-help' : ['','Помощната страница'], | |
| − | + | 'n-sitesupport' : ['','Подкрепете {{SITENAME}}'], | |
| − | + | 't-whatlinkshere' : ['j','Списък на всички страници, сочещи насам'], | |
| − | + | 't-recentchangeslinked' : ['k','Последните промени на страници, сочещи към тази страница'], | |
| − | + | 'feed-rss' : ['','RSS feed за страницата'], | |
| − | + | 'feed-atom' : ['','Atom feed за страницата'], | |
| − | + | 't-contributions' : ['','Показване на приносите на потребителя'], | |
| − | + | 't-emailuser' : ['','Изпращане на писмо на потребителя'], | |
| − | + | 't-upload' : ['u','Качване на файлове'], | |
| − | + | 't-specialpages' : ['q','Списък на всички специални страници'], | |
| − | + | 'ca-nstab-main' : ['c','Преглед на основната страница'], | |
| − | + | 'ca-nstab-user' : ['c','Преглед на потребителската страница'], | |
| − | + | 'ca-nstab-media' : ['c','Преглед на медийната страница'], | |
| − | + | 'ca-nstab-special' : ['','Това е специална страница, която не може да се редактира.'], | |
| − | + | 'ca-nstab-wp' : ['c','Преглед на проектната страница'], | |
| − | + | 'ca-nstab-image' : ['c','Преглед на страницата на картинката'], | |
| − | + | 'ca-nstab-mediawiki' : ['c','Преглед на системното съобщение'], | |
| − | + | 'ca-nstab-template' : ['c','Преглед на шаблона'], | |
| − | + | 'ca-nstab-help' : ['c','Преглед на помощната страница'], | |
| − | + | 'ca-nstab-category' : ['c','Преглед на категорийната страница'] | |
| + | }; | ||
| + | |||
| + | |||
| + | // от тези данни ще се генерират допълнителни бутони с insertTags() | ||
| + | var customInsButtons = [ | ||
| + | // ТЕКСТ_ОТЛЯВО ТЕКСТ_ОТДЯСНО ТЕКСТ_ПО_СРЕДАТА ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ | ||
| + | ["#виж ["+"[", "]]", "Страница", "+команда за пренасочване", "вж"], | ||
| + | ["<code>", "</code>", "моля, въведете програмен код", "Текст с фиксирана ширина на буквите — обикновено код", "<tt>код</tt>"], | ||
| + | ["<sub>", "</sub>", "моля, въведете индекс", "+долен индекс", "a<sub>x</sub>"], | ||
| + | ["<sup>", "</sup>", "моля, въведете степен", "+горен индекс", "a<sup>x</sup>"], | ||
| + | [" ", "", "", "+несекаем интервал", "nbsp"], | ||
| + | ["<del>", "</del>", "зачертан текст", "Отбелязване на текст като изтрит", "<del>del</del>"], | ||
| + | ["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"], | ||
| + | ["—", "", "", "+дълга чертица — mdash", "—"], | ||
| + | ["–", "", "", "+средна чертица — ndash", " – "], | ||
| + | ["̀", "", "", "+ударение за гласна буква (маркирайте една буква)", "удар."], | ||
| + | ["<"+"!-- ", " -->", "моля, въведете коментар", "+коментар", "<!--"], | ||
| + | ["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"], | ||
| + | ["{"+"{ЗАМЕСТ:D}}", "", "", "+шаблон „Ухилено човече“", ":-D"], | ||
| + | ["<ref>", "</ref>", "", "Бележка под линия", "<small><sup>[1]</sup></small>"] | ||
| + | ]; | ||
| + | // данни за още бутони с код по желание | ||
| + | var customMiscButtons = [ | ||
| + | // КОД_ЗА_ИЗПЪЛНЕНИЕ ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ | ||
| + | ]; | ||
| + | |||
| + | var charsElemId = "extraChars"; | ||
| + | |||
| + | // добавя нови бутони и други играчки | ||
| + | function setupCustomEditTools() { | ||
| + | var toolbar = document.getElementById("toolbar"); | ||
| + | // ако няма съществуващи бутони, няма да добавяме и тези | ||
| + | if ( !toolbar ) { return; } | ||
| + | toolbar.className += " buttonlinks"; | ||
| + | var tools = document.createElement("div"); | ||
| + | tools.id = "custombuttons"; | ||
| + | for (var i in customInsButtons) { | ||
| + | var el = customInsButtons[i]; | ||
| + | var title = el[3]; | ||
| + | if ( title.charAt(0) == "+" ) { | ||
| + | title = "Вмъкване на " + title.substr(1); | ||
| + | } | ||
| + | addCustomButton(tools, | ||
| + | {"href": "javascript:insertTags('"+el[0] +"','"+el[1]+"','"+ el[2]+"')", | ||
| + | "title": title, "innerHTML": el[4]}); | ||
| + | } | ||
| + | for (var i in customMiscButtons) { | ||
| + | var el = customMiscButtons[i]; | ||
| + | addCustomButton(tools, {"href":"javascript:"+el[0], "title":el[1], "innerHTML":el[2]}); | ||
| + | } | ||
| + | // падащото меню с шаблони | ||
| + | toolbar.appendChild( makeTemplateSelectBox() ); | ||
| + | toolbar.appendChild(tools); | ||
| + | // елемент за допълнителните знаци | ||
| + | /*var chbox = document.createElement("div"); | ||
| + | chbox.id = charsElemId; | ||
| + | chbox.style.display = "none"; | ||
| + | toolbar.appendChild(chbox);*/ | ||
| + | } | ||
| + | |||
| + | function addCustomButton(box, item) { | ||
| + | var b = document.createElement("a"); | ||
| + | for (var attr in item) { b[attr] = item[attr]; } | ||
| + | box.appendChild(b); | ||
| + | box.appendChild( document.createTextNode(" ") ); | ||
| + | } | ||
| + | |||
| + | var tplPages = { | ||
| + | "Шаблон:Инфокутия личност/празен": "Инфокутия личност", | ||
| + | "Шаблон:Инфокутия личност/книга": "Инфокутия книга" | ||
| + | }; | ||
| + | |||
| + | // този масив ще се попълва от всеки потребител на личната му js страница | ||
| + | var myTplPages = new Array(); | ||
| + | |||
| + | // генерира падащото меню с шаблоните | ||
| + | function makeTemplateSelectBox() { | ||
| + | var box = document.createElement("select"); | ||
| + | box.title = "Оттук можете да вмъкнете празен шаблон"; | ||
| + | box.onchange = function() { | ||
| + | if (this.value != "") { | ||
| + | loadTemplate(this.value); | ||
| + | this.selectedIndex=0; | ||
| + | } | ||
| + | return false; | ||
| + | }; | ||
| + | box.appendChild( newOption("", "Шаблон...") ); | ||
| + | for (var i in tplPages) { | ||
| + | box.appendChild( newOption(i, tplPages[i]) ); | ||
| + | } | ||
| + | for (var i in myTplPages) { | ||
| + | box.appendChild( newOption(i, myTplPages[i]) ); | ||
| + | } | ||
| + | return box; | ||
| + | } | ||
| + | |||
| + | function newOption(val, text) { | ||
| + | var o = document.createElement("option"); | ||
| + | o.value = val; | ||
| + | o.appendChild( document.createTextNode(text) ); | ||
| + | return o; | ||
| + | } | ||
| + | |||
| + | |||
| + | /* скрива/показва елемент */ | ||
| + | function toggleElemDisplay(elemId) { | ||
| + | var elem = document.getElementById(elemId); | ||
| + | elem.style.display = elem.style.display == 'none' ? '' : 'none'; | ||
| + | } | ||
| + | |||
| + | |||
| + | var prevReq; | ||
| + | var urlBase = "{{SERVER}}/index.php?"; | ||
| + | |||
| + | function loadTemplate(tplPage) { | ||
| + | prevReq = new XMLHttpRequest(); | ||
| + | if( !prevReq ) return false; | ||
| + | var getUrl = urlBase + encodeURI(tplPage) + "&action=raw"; | ||
| + | prevReq.onreadystatechange = insertIntoWikiText; | ||
| + | prevReq.open("GET", getUrl, true); | ||
| + | prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); | ||
| + | prevReq.send(""); | ||
| + | return true; | ||
| + | } | ||
| + | |||
| + | function insertIntoWikiText() { | ||
| + | if( prevReq.readyState != 4 ) { | ||
| + | return; | ||
| + | } | ||
| + | if( prevReq.status != 200 ) { | ||
| + | window.alert('Failed to connect: ' + prevReq.status + | ||
| + | ' "' + prevReq.statusText + '"'); | ||
| + | return; | ||
| + | } | ||
| + | insertTags(prevReq.responseText, "", ""); | ||
| + | } | ||
| + | |||
| + | // function copied from {{SERVER}}/skins/common/preview.js | ||
| + | function openXMLHttpRequest() { | ||
| + | if( window.XMLHttpRequest ) { | ||
| + | return new XMLHttpRequest(); | ||
| + | } else if( window.ActiveXObject && navigator.platform != 'MacPPC' ) { | ||
| + | // IE/Mac has an ActiveXObject but it doesn't work. | ||
| + | return new ActiveXObject("Microsoft.XMLHTTP"); | ||
| + | } else { | ||
| + | return null; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | hookEvent("load", setupCustomEditTools); | ||
| + | |||
| + | /*</pre>*/ | ||
Версия от 20:02, 21 март 2007
/*
Чрез редактиране на този файл можете да промените някои неща на Джаваскрипт за облика Монобук
<pre>
*/
/* tooltips and access keys */
var ta = {
'pt-userpage' : ['.','Вашата потребителска страница'],
'pt-anonuserpage' : ['.','Потребителската страница за адреса, от който редактирате'],
'pt-mytalk' : ['n','Вашата дискусионна страница'],
'pt-anontalk' : ['n','Дискусия относно редакциите от този адрес'],
'pt-preferences' : ['','Вашите настройки'],
'pt-watchlist' : ['l','Списък на страници, чиито промени сте избрали да наблюдавате'],
'pt-mycontris' : ['y','Списък на Вашите приноси'],
'pt-login' : ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.'],
'pt-anonlogin' : ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.'],
'pt-logout' : ['o','Излизане от {{SITENAME}}'],
'ca-talk' : ['t','Беседа относно страницата'],
'ca-edit' : ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.'],
'ca-addsection' : ['+','Добавяне на коментар към страницата'],
'ca-viewsource' : ['e','Страницата е защитена. Може да разгледате изходния й код.'],
'ca-history' : ['h','Предишни версии на страницата'],
'ca-protect' : ['=','Защитаване на страницата'],
'ca-delete' : ['d','Изтриване на страницата'],
'ca-undelete' : ['d','Възстановяване на изтрити редакции на страницата'],
'ca-move' : ['m','Преместване на страницата'],
'ca-nomove' : ['','Нямате разрешение за преместване на страницата'],
'ca-watch' : ['w','Добавяне на страницата към списъка Ви за наблюдение'],
'ca-unwatch' : ['w','Премахване на страницата от списъка Ви за наблюдение'],
'search' : ['f','Претърсване на {{SITENAME}}'],
'p-logo' : ['','Началната страница'],
'n-mainpage' : ['z','Началната страница'],
'n-portal' : ['','Информация за проекта'],
'n-currentevents' : ['','Списък на основните категории в {{SITENAME}}'],
'n-recentchanges' : ['r','Списък на последните промени в цялото уики'],
'n-randompage' : ['x','Случайна страница'],
'n-help' : ['','Помощната страница'],
'n-sitesupport' : ['','Подкрепете {{SITENAME}}'],
't-whatlinkshere' : ['j','Списък на всички страници, сочещи насам'],
't-recentchangeslinked' : ['k','Последните промени на страници, сочещи към тази страница'],
'feed-rss' : ['','RSS feed за страницата'],
'feed-atom' : ['','Atom feed за страницата'],
't-contributions' : ['','Показване на приносите на потребителя'],
't-emailuser' : ['','Изпращане на писмо на потребителя'],
't-upload' : ['u','Качване на файлове'],
't-specialpages' : ['q','Списък на всички специални страници'],
'ca-nstab-main' : ['c','Преглед на основната страница'],
'ca-nstab-user' : ['c','Преглед на потребителската страница'],
'ca-nstab-media' : ['c','Преглед на медийната страница'],
'ca-nstab-special' : ['','Това е специална страница, която не може да се редактира.'],
'ca-nstab-wp' : ['c','Преглед на проектната страница'],
'ca-nstab-image' : ['c','Преглед на страницата на картинката'],
'ca-nstab-mediawiki' : ['c','Преглед на системното съобщение'],
'ca-nstab-template' : ['c','Преглед на шаблона'],
'ca-nstab-help' : ['c','Преглед на помощната страница'],
'ca-nstab-category' : ['c','Преглед на категорийната страница']
};
// от тези данни ще се генерират допълнителни бутони с insertTags()
var customInsButtons = [
// ТЕКСТ_ОТЛЯВО ТЕКСТ_ОТДЯСНО ТЕКСТ_ПО_СРЕДАТА ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ
["#виж ["+"[", "]]", "Страница", "+команда за пренасочване", "вж"],
["<code>", "</code>", "моля, въведете програмен код", "Текст с фиксирана ширина на буквите — обикновено код", "<tt>код</tt>"],
["<sub>", "</sub>", "моля, въведете индекс", "+долен индекс", "a<sub>x</sub>"],
["<sup>", "</sup>", "моля, въведете степен", "+горен индекс", "a<sup>x</sup>"],
[" ", "", "", "+несекаем интервал", "nbsp"],
["<del>", "</del>", "зачертан текст", "Отбелязване на текст като изтрит", "<del>del</del>"],
["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"],
["—", "", "", "+дълга чертица — mdash", "—"],
["–", "", "", "+средна чертица — ndash", " – "],
["̀", "", "", "+ударение за гласна буква (маркирайте една буква)", "удар."],
["<"+"!-- ", " -->", "моля, въведете коментар", "+коментар", "<!--"],
["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"],
["{"+"{ЗАМЕСТ:D}}", "", "", "+шаблон „Ухилено човече“", ":-D"],
["<ref>", "</ref>", "", "Бележка под линия", "<small><sup>[1]</sup></small>"]
];
// данни за още бутони с код по желание
var customMiscButtons = [
// КОД_ЗА_ИЗПЪЛНЕНИЕ ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ
];
var charsElemId = "extraChars";
// добавя нови бутони и други играчки
function setupCustomEditTools() {
var toolbar = document.getElementById("toolbar");
// ако няма съществуващи бутони, няма да добавяме и тези
if ( !toolbar ) { return; }
toolbar.className += " buttonlinks";
var tools = document.createElement("div");
tools.id = "custombuttons";
for (var i in customInsButtons) {
var el = customInsButtons[i];
var title = el[3];
if ( title.charAt(0) == "+" ) {
title = "Вмъкване на " + title.substr(1);
}
addCustomButton(tools,
{"href": "javascript:insertTags('"+el[0] +"','"+el[1]+"','"+ el[2]+"')",
"title": title, "innerHTML": el[4]});
}
for (var i in customMiscButtons) {
var el = customMiscButtons[i];
addCustomButton(tools, {"href":"javascript:"+el[0], "title":el[1], "innerHTML":el[2]});
}
// падащото меню с шаблони
toolbar.appendChild( makeTemplateSelectBox() );
toolbar.appendChild(tools);
// елемент за допълнителните знаци
/*var chbox = document.createElement("div");
chbox.id = charsElemId;
chbox.style.display = "none";
toolbar.appendChild(chbox);*/
}
function addCustomButton(box, item) {
var b = document.createElement("a");
for (var attr in item) { b[attr] = item[attr]; }
box.appendChild(b);
box.appendChild( document.createTextNode(" ") );
}
var tplPages = {
"Шаблон:Инфокутия личност/празен": "Инфокутия личност",
"Шаблон:Инфокутия личност/книга": "Инфокутия книга"
};
// този масив ще се попълва от всеки потребител на личната му js страница
var myTplPages = new Array();
// генерира падащото меню с шаблоните
function makeTemplateSelectBox() {
var box = document.createElement("select");
box.title = "Оттук можете да вмъкнете празен шаблон";
box.onchange = function() {
if (this.value != "") {
loadTemplate(this.value);
this.selectedIndex=0;
}
return false;
};
box.appendChild( newOption("", "Шаблон...") );
for (var i in tplPages) {
box.appendChild( newOption(i, tplPages[i]) );
}
for (var i in myTplPages) {
box.appendChild( newOption(i, myTplPages[i]) );
}
return box;
}
function newOption(val, text) {
var o = document.createElement("option");
o.value = val;
o.appendChild( document.createTextNode(text) );
return o;
}
/* скрива/показва елемент */
function toggleElemDisplay(elemId) {
var elem = document.getElementById(elemId);
elem.style.display = elem.style.display == 'none' ? '' : 'none';
}
var prevReq;
var urlBase = "{{SERVER}}/index.php?";
function loadTemplate(tplPage) {
prevReq = new XMLHttpRequest();
if( !prevReq ) return false;
var getUrl = urlBase + encodeURI(tplPage) + "&action=raw";
prevReq.onreadystatechange = insertIntoWikiText;
prevReq.open("GET", getUrl, true);
prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
prevReq.send("");
return true;
}
function insertIntoWikiText() {
if( prevReq.readyState != 4 ) {
return;
}
if( prevReq.status != 200 ) {
window.alert('Failed to connect: ' + prevReq.status +
' "' + prevReq.statusText + '"');
return;
}
insertTags(prevReq.responseText, "", "");
}
// function copied from {{SERVER}}/skins/common/preview.js
function openXMLHttpRequest() {
if( window.XMLHttpRequest ) {
return new XMLHttpRequest();
} else if( window.ActiveXObject && navigator.platform != 'MacPPC' ) {
// IE/Mac has an ActiveXObject but it doesn't work.
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
return null;
}
}
hookEvent("load", setupCustomEditTools);
/*</pre>*/