Разлика между версии на „МедияУики:Common.js“

От БГ-Фантастика
Направо към: навигация, търсене
 
(нови функции за допълнителни бутони и падащо меню за вмъкване на празни шаблони)
Ред 1: Ред 1:
 +
/*
 +
Чрез редактиране на този файл можете да промените някои неща на Джаваскрипт за облика Монобук
 +
<pre>
 +
*/
  
/* чрез редактиране на този файл можете да промените някои неща на Javascript за облика Monobook */
+
/* tooltips and access keys */
/* tooltips and access keys */
+
var ta = {
var ta = new Object();
+
'pt-userpage' : ['.','Вашата потребителска страница'],
ta['pt-userpage'] = new Array('.','Вашата потребителска страница');
+
'pt-anonuserpage' : ['.','Потребителската страница за адреса, от който редактирате'],
ta['pt-anonuserpage'] = new Array('.','Потребителската страница за адреса, от който редактирате');
+
'pt-mytalk' : ['n','Вашата дискусионна страница'],
ta['pt-mytalk'] = new Array('n','Вашата дискусионна страница');
+
'pt-anontalk' : ['n','Дискусия относно редакциите от този адрес'],
ta['pt-anontalk'] = new Array('n','Дискусия относно редакциите от този адрес');
+
'pt-preferences' : ['','Вашите настройки'],
ta['pt-preferences'] = new Array('','Вашите настройки');
+
'pt-watchlist' : ['l','Списък на страници, чиито промени сте избрали да наблюдавате'],
ta['pt-watchlist'] = new Array('l','Списък на страници, чиито промени сте избрали да наблюдавате');
+
'pt-mycontris' : ['y','Списък на Вашите приноси'],
ta['pt-mycontris'] = new Array('y','Списък на Вашите приноси');
+
'pt-login' : ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.'],
ta['pt-login'] = new Array('o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.');
+
'pt-anonlogin' : ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.'],
ta['pt-anonlogin'] = new Array('o','Насърчаваме Ви да влезете, въпреки че не е задължително.');
+
'pt-logout' : ['o','Излизане от {{SITENAME}}'],
ta['pt-logout'] = new Array('o','Излизане от {{SITENAME}}');
+
'ca-talk' : ['t','Беседа относно страницата'],
ta['ca-talk'] = new Array('t','Беседа относно страницата');
+
'ca-edit' : ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.'],
ta['ca-edit'] = new Array('e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.');
+
'ca-addsection' : ['+','Добавяне на коментар към страницата'],
ta['ca-addsection'] = new Array('+','Добавяне на коментар към страницата');
+
'ca-viewsource' : ['e','Страницата е защитена. Може да разгледате изходния й код.'],
ta['ca-viewsource'] = new Array('e','Страницата е защитена. Можете да разгледате изходния й код.');
+
'ca-history' : ['h','Предишни версии на страницата'],
ta['ca-history'] = new Array('h','Предишни версии на страницата');
+
'ca-protect' : ['=','Защитаване на страницата'],
ta['ca-protect'] = new Array('=','Защитаване на страницата');
+
'ca-delete' : ['d','Изтриване на страницата'],
ta['ca-delete'] = new Array('d','Изтриване на страницата');
+
'ca-undelete' : ['d','Възстановяване на изтрити редакции на страницата'],
ta['ca-undelete'] = new Array('d','Възстановяване на изтрити редакции на страницата');
+
'ca-move' : ['m','Преместване на страницата'],
ta['ca-move'] = new Array('m','Преместване на страницата');
+
'ca-nomove' : ['','Нямате разрешение за преместване на страницата'],
ta['ca-watch'] = new Array('w','Добавяне на страницата към списъка Ви за наблюдение');
+
'ca-watch' : ['w','Добавяне на страницата към списъка Ви за наблюдение'],
ta['ca-unwatch'] = new Array('w','Премахване на страницата от списъка Ви за наблюдение');
+
'ca-unwatch' : ['w','Премахване на страницата от списъка Ви за наблюдение'],
ta['search'] = new Array('f','Претърсване на {{SITENAME}}');
+
'search' : ['f','Претърсване на {{SITENAME}}'],
ta['p-logo'] = new Array('','Началната страница');
+
'p-logo' : ['','Началната страница'],
ta['n-mainpage'] = new Array('z','Началната страница');
+
'n-mainpage' : ['z','Началната страница'],
ta['n-portal'] = new Array('','Информация за проекта');
+
'n-portal' : ['','Информация за проекта'],
ta['n-currentevents'] = new Array('','Информация за текущите събития по света');
+
'n-currentevents' : ['','Списък на основните категории в {{SITENAME}}'],
ta['n-recentchanges'] = new Array('r','Списък на последните промени в {{SITENAME}}');
+
'n-recentchanges' : ['r','Списък на последните промени в цялото уики'],
ta['n-randompage'] = new Array('x','Случайна страница');
+
'n-randompage' : ['x','Случайна страница'],
ta['n-help'] = new Array('','Помощната страница');
+
'n-help' : ['','Помощната страница'],
ta['n-sitesupport'] = new Array('','Подкрепете {{SITENAME}}');
+
'n-sitesupport' : ['','Подкрепете {{SITENAME}}'],
ta['t-whatlinkshere'] = new Array('j','Списък на всички страници, сочещи насам');
+
't-whatlinkshere' : ['j','Списък на всички страници, сочещи насам'],
ta['t-recentchangeslinked'] = new Array('k','Последните промени на страници, сочени от тази страница');
+
't-recentchangeslinked' : ['k','Последните промени на страници, сочещи към тази страница'],
ta['feed-rss'] = new Array('','RSS feed за страницата');
+
'feed-rss' : ['','RSS feed за страницата'],
ta['feed-atom'] = new Array('','Atom feed за страницата');
+
'feed-atom' : ['','Atom feed за страницата'],
ta['t-contributions'] = new Array('','Показване на приносите на потребителя');
+
't-contributions' : ['','Показване на приносите на потребителя'],
ta['t-emailuser'] = new Array('','Изпращане на писмо на потребителя');
+
't-emailuser' : ['','Изпращане на писмо на потребителя'],
ta['t-upload'] = new Array('u','Качване на файлове');
+
't-upload' : ['u','Качване на файлове'],
ta['t-specialpages'] = new Array('q','Списък на всички специални страници');
+
't-specialpages' : ['q','Списък на всички специални страници'],
ta['ca-nstab-main'] = new Array('c','Преглед на основната страница');
+
'ca-nstab-main' : ['c','Преглед на основната страница'],
ta['ca-nstab-user'] = new Array('c','Преглед на потребителската страница');
+
'ca-nstab-user' : ['c','Преглед на потребителската страница'],
ta['ca-nstab-media'] = new Array('c','Преглед на медийната страница');
+
'ca-nstab-media' : ['c','Преглед на медийната страница'],
ta['ca-nstab-special'] = new Array('','Това е специална страница, която не може да се редактира.');
+
'ca-nstab-special' : ['','Това е специална страница, която не може да се редактира.'],
ta['ca-nstab-project'] = new Array('c','Преглед на проектната страница');
+
'ca-nstab-wp' : ['c','Преглед на проектната страница'],
ta['ca-nstab-image'] = new Array('c','Преглед на страницата на файла');
+
'ca-nstab-image' : ['c','Преглед на страницата на картинката'],
ta['ca-nstab-mediawiki'] = new Array('c','Преглед на системното съобщение');
+
'ca-nstab-mediawiki' : ['c','Преглед на системното съобщение'],
ta['ca-nstab-template'] = new Array('c','Преглед на шаблона');
+
'ca-nstab-template' : ['c','Преглед на шаблона'],
ta['ca-nstab-help'] = new Array('c','Преглед на помощната страница');
+
'ca-nstab-help' : ['c','Преглед на помощната страница'],
ta['ca-nstab-category'] = new Array('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;", "", "", "+несекаем интервал", "nbsp"],
 +
["<del>", "</del>", "зачертан текст", "Отбелязване на текст като изтрит", "<del>del</del>"],
 +
["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"],
 +
["—", "", "", "+дълга чертица — mdash", "—"],
 +
["–", "", "", "+средна чертица — ndash", "&nbsp;–&nbsp;"],
 +
        ["&#768;", "", "", "+ударение за гласна буква (маркирайте една буква)", "удар."],
 +
["<"+"!-- ", " -->", "моля, въведете коментар", "+коментар", "&lt;!--"],
 +
["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"],
 +
["{"+"{ЗАМЕСТ: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;", "", "", "+несекаем интервал", "nbsp"],
	["<del>", "</del>", "зачертан текст", "Отбелязване на текст като изтрит", "<del>del</del>"],
	["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"],
	["—", "", "", "+дълга чертица — mdash", "—"],
	["–", "", "", "+средна чертица — ndash", "&nbsp;–&nbsp;"],
        ["&#768;", "", "", "+ударение за гласна буква (маркирайте една буква)", "удар."],
	["<"+"!-- ", " -->", "моля, въведете коментар", "+коментар", "&lt;!--"],
	["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"],
	["{"+"{ЗАМЕСТ: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>*/