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

От БГ-Фантастика
Направо към: навигация, търсене
м (при директно вмъкване?)
м (връщане в изходен вид... нещо не мога да го сборя)
Ред 2: Ред 2:
 
{{МедияУики:Common.js/CoreObjects.js}}
 
{{МедияУики:Common.js/CoreObjects.js}}
  
// от тези данни ще се генерират допълнителни бутони с 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;"],
 
["<"+"!-- ", " -->", "моля, въведете коментар", "+коментар", "&lt;!--"],
 
["{"+"{ЗАМЕСТ:)}}", "", "", "+шаблон „Усмивка“", ":-)"],
 
["{"+"{ЗАМЕСТ:D}}", "", "", "+шаблон „Ухилено човече“", ":-D"],
 
["<ref>", "</ref>", "", "Бележка под линия", "<small><sup>[1]</sup></small>"]
 
];
 
// данни за още бутони с код по желание
 
var customMiscButtons = [
 
// КОД_ЗА_ИЗПЪЛНЕНИЕ ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ
 
];
 
  
 +
{{МедияУики:Common.js/Edit tools data.js}}
  
// тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Инфокутия…“
+
{{МедияУики:Common.js/Edit tools.js}}
var tpl1 = {
 
// "ПОКАЗВАН ТЕКСТ" : "ИМЕ НА СТРАНИЦАТА",
 
"Инфокутия…" : "-",
 
"Личност" : "Шаблон:Инфокутия личност/празен",
 
"Произведение" : "Шаблон:Инфокутия произведение/празен",
 
"Статия" : "Шаблон:Инфокутия статия/празен",
 
"Рецензия" : "Шаблон:Инфокутия рецензия/празен",
 
"Интервю" : "Шаблон:Инфокутия интервю/празен",
 
"Книга" : "Шаблон:Инфокутия книга/празен",
 
"Филм" : "Шаблон:Инфокутия филм/празен",
 
        "Герой" : "Шаблон:Инфокутия герой/празен",
 
"Издателство" : "Шаблон:Инфокутия издателство/празен",
 
"Клуб" : "Шаблон:Инфокутия клуб/празен",
 
"Списание брой" : "Шаблон:Инфокутия списание брой/празен",
 
"Вложка писател" : "Шаблон:Инфокутия вложка писател/празен",
 
"Вложка преводач" : "Шаблон:Инфокутия вложка преводач/празен",
 
"Вложка критик" : "Шаблон:Инфокутия вложка критик/празен",
 
"Вложка журналист" : "Шаблон:Инфокутия вложка журналист/празен",
 
"Вложка рецензент" : "Шаблон:Инфокутия вложка рецензент/празен",
 
"Вложка фен" : "Шаблон:Инфокутия вложка фен/празен",
 
"Вложка издател" : "Шаблон:Инфокутия вложка издател/празен",
 
"Вложка художник" : "Шаблон:Инфокутия вложка художник/празен",
 
"Вложка музикант" : "Шаблон:Инфокутия вложка музикант/празен"
 
};
 
 
 
// тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Образец…“
 
var tpl2 = {
 
// "ПОКАЗВАН ТЕКСТ" : "ИМЕ НА СТРАНИЦАТА",
 
"Образец статия…" : "-",
 
"Писател" : "БГ-Фантастика:Образец за статия за писател",
 
"Художник" : "БГ-Фантастика:Образец за статия за художник",
 
"Музикант" : "БГ-Фантастика:Образец за статия за музикант",
 
"Преводач" : "БГ-Фантастика:Образец за статия за преводач",
 
"Режисьор" : "БГ-Фантастика:Образец за статия за режисьор",
 
"Актьор" : "БГ-Фантастика:Образец за статия за актьор",
 
"Издател" : "БГ-Фантастика:Образец за статия за издател",
 
"Редактор" : "БГ-Фантастика:Образец за статия за редактор",
 
"Фен" : "БГ-Фантастика:Образец за статия за фен",
 
"Произведение" : "БГ-Фантастика:Образец за статия за литературно произведение",
 
"Книга" : "БГ-Фантастика:Образец за статия за книга",
 
"Вестник" : "БГ-Фантастика:Образец за статия за вестник",
 
"Списание" : "БГ-Фантастика:Образец за статия за списание",
 
"Поредица" : "БГ-Фантастика:Образец за статия за поредица",
 
"Вестник брой" : "БГ-Фантастика:Образец за статия за брой на вестник",
 
"Списание брой" : "БГ-Фантастика:Образец за статия за брой на списание",
 
"Герой" : "БГ-Фантастика:Образец за статия за герой на произведение",
 
"Второст. герои" : "БГ-Фантастика:Образец за статия за второстепенни герои в произведение",
 
"Място" : "БГ-Фантастика:Образец за статия за място в произведение",
 
"Понятие" : "БГ-Фантастика:Образец за статия за понятие от произведение",
 
"Издателство" : "БГ-Фантастика:Образец за статия за издателство",
 
"Фен-клуб" : "БГ-Фантастика:Образец за статия за фен-клуб",
 
"Събитие" : "БГ-Фантастика:Образец за статия за събитие"
 
};
 
 
 
// тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Шаблон…“
 
var tpl3 = {
 
// "ПОКАЗВАН ТЕКСТ" : "ИМЕ НА СТРАНИЦАТА",
 
"Шаблон…" : "-",
 
"Превод" : "Шаблон:Превод/празен",
 
"Пояснение" : "Шаблон:Пояснение/празен"
 
};
 
 
 
// описания на падащите менюта
 
var tplDescriptions = {
 
1: "празна инфокутия",
 
2: "образец за нова статия",
 
3: "празен шаблон"
 
};
 
 
 
var tplVarBaseName = "tpl";
 
 
 
// добавя нови бутони и други играчки
 
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]});
 
}
 
addDropDownMenus(toolbar); // падащите менюта
 
toolbar.appendChild(tools);
 
}
 
 
 
hookEvent("load", setupCustomEditTools);
 
 
 
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(" ") );
 
}
 
 
 
function addDropDownMenus(parent) {
 
var tplVar = null;
 
for ( var i = 1; tplVar = tplVarBaseName + i,
 
eval("var tpl = typeof("+ tplVar +") == 'object' ? "+ tplVar +" : null"),
 
tpl != null; i++ ) {
 
addDropDownMenu(parent, tpl, tplDescriptions[i]);
 
}
 
}
 
 
 
/** генерира падащо меню */
 
function addDropDownMenu(parent, content, title) {
 
var box = document.createElement("select");
 
box.title = "Оттук можете да вмъкнете " + title;
 
box.onchange = function() {
 
if (this.value != "-") {
 
loadPage(this.value);
 
this.selectedIndex = 0;
 
}
 
return;
 
};
 
if ( appendOptions(box, content) > 1 ) {
 
parent.appendChild(box);
 
}
 
}
 
 
 
 
 
function appendOptions(box, opts) {
 
var count = 0;
 
for (var i in opts) {
 
if (opts[i] == "") {
 
continue; // skip emtpy entries
 
}
 
var child = typeof(opts[i]) == "object"
 
? newOptgroup(i, opts[i])
 
: newOption(opts[i], i);
 
box.appendChild(child);
 
count++;
 
}
 
return count;
 
}
 
 
 
function newOptgroup(label, data) {
 
var g = document.createElement("optgroup");
 
g.label = label;
 
for (var i in data) {
 
g.appendChild( newOption(data[i], i) );
 
}
 
return g;
 
}
 
 
 
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';
 
}
 
 
 
 
 
/* * * * * * * * * *  Ajax functions  * * * * * * * * * */
 
 
 
var prevReq;
 
if ( typeof(wgScript) == "undefined" ) {
 
var wgScript = "/index.php";
 
}
 
var pageUrl = wgScript + "?title=$1&action=raw";
 
var pageToFetch = "";
 
 
 
function loadPage(page) {
 
prevReq = sajax_init_object();
 
if( !prevReq ) return false;
 
pageToFetch = page;
 
var getUrl = pageUrl.replace(/\$1/, encodeURI(page));
 
showLoadIndicator();
 
prevReq.onreadystatechange = insertIntoWikiText;
 
prevReq.open("GET", getUrl, true);
 
prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 
prevReq.send(null);
 
return true;
 
}
 
 
 
function insertIntoWikiText() {
 
if( prevReq.readyState != 4 ) {
 
return;
 
}
 
hideLoadIndicator();
 
if ( prevReq.status != 200 ) {
 
window.alert("Неуспешна връзка: " + prevReq.status +
 
" “" + prevReq.statusText + "”\nСтраница: "+ pageToFetch);
 
return;
 
}
 
// изтриване на текст, отбелязан за невмъкване + <pre> и <nowiki>
 
var re = /<!--noinclude-->.*<!--\/noinclude-->|<\/?pre>|<\/?nowiki>/g;
 
var content = prevReq.responseText.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] +">");
 
}
 
// split at caret’s position
 
var parts = content.split(">>|<<");
 
var left = parts[0];
 
delete(parts[0]);
 
var right = parts.join("");
 
insertTags(left, right, "");
 
}
 
 
 
var loadIndicator;
 
function showLoadIndicator() {
 
if ( typeof(loadIndicator) != "undefined" ) {
 
loadIndicator.style.display = "block";
 
return;
 
}
 
var content = document.getElementById("content");
 
if ( !content ) { // no "content" element
 
return;
 
}
 
loadIndicator = document.createElement("div");
 
loadIndicator.id = "loadIndicator";
 
loadIndicator.appendChild( document.createTextNode("Шаблонът се зарежда…") );
 
content.appendChild(loadIndicator);
 
}
 
 
 
function hideLoadIndicator() {
 
loadIndicator.style.display = "none";
 
}
 
 
 
/* {{МедияУики:Common.js/Edit tools data.js}}
 
 
 
{{МедияУики:Common.js/Edit tools.js}} */
 

Версия от 00:12, 25 февруари 2012

{{МедияУики:Common.js/Core.js}}
{{МедияУики:Common.js/CoreObjects.js}}


{{МедияУики:Common.js/Edit tools data.js}}

{{МедияУики:Common.js/Edit tools.js}}