МедияУики:Common.js
От БГ-Фантастика
Версия от 21:06, 10 юли 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 infoboxPages = { // завършвайте всеки ред (с изключение на последния) със запетая, иначе НЯМА ДА РАБОТИ // "ИМЕ НА СТРАНИЦАТА" : "ПОКАЗВАН ТЕКСТ", "Шаблон:Инфокутия личност/празен": "Личност", "Шаблон:Инфокутия произведение/празен" : "Произведение", "Шаблон:Инфокутия статия/празен" : "Статия", "Шаблон:Инфокутия рецензия/празен" : "Рецензия", "Шаблон:Инфокутия книга/празен": "Книга", "Шаблон:Инфокутия филм/празен" : "Филм", "Шаблон:Инфокутия издателство/празен" : "Издателство", "Шаблон:Инфокутия вложка писател/празен" : "Вложка писател", "Шаблон:Инфокутия вложка преводач/празен" : "Вложка преводач", "Шаблон:Инфокутия вложка критик/празен" : "Вложка критик", "Шаблон:Инфокутия вложка журналист/празен" : "Вложка журналист", "Шаблон:Инфокутия вложка рецензент/празен" : "Вложка рецензент", "Шаблон:Инфокутия вложка фен/празен" : "Вложка фен", "Шаблон:Инфокутия вложка издател/празен" : "Вложка издател", "Шаблон:Инфокутия вложка художник/празен" : "Вложка художник", "Шаблон:Инфокутия списание брой/празен" : "Списание брой" }; // тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Образец…“ var modelPages = { // завършвайте всеки ред (с изключение на последния) със запетая, иначе НЯМА ДА РАБОТИ // "ИМЕ НА СТРАНИЦАТА" : "ПОКАЗВАН ТЕКСТ", "БГ-Фантастика:Образец за статия за писател": "Писател", "БГ-Фантастика:Образец за статия за художник": "Художник", "БГ-Фантастика:Образец за статия за музикант": "Музикант", "БГ-Фантастика:Образец за статия за преводач": "Преводач", "БГ-Фантастика:Образец за статия за режисьор": "Режисьор", "БГ-Фантастика:Образец за статия за актьор": "Актьор", "БГ-Фантастика:Образец за статия за издател": "Издател", "БГ-Фантастика:Образец за статия за редактор": "Редактор", "БГ-Фантастика:Образец за статия за фен": "Фен", "БГ-Фантастика:Образец за статия за литературно произведение": "Произведение", "БГ-Фантастика:Образец за статия за книга": "Книга", "БГ-Фантастика:Образец за статия за вестник": "Вестник", "БГ-Фантастика:Образец за статия за списание": "Списание", "БГ-Фантастика:Образец за статия за поредица": "Поредица", "БГ-Фантастика:Образец за статия за брой на вестник": "Вестник брой", "БГ-Фантастика:Образец за статия за брой на списание": "Списание брой", "БГ-Фантастика:Образец за статия за герой на произведение": "Герой", "БГ-Фантастика:Образец за статия за второстепенни герои в произведение": "Второст. герои", "БГ-Фантастика:Образец за статия за място в произведение": "Място", "БГ-Фантастика:Образец за статия за понятие от произведение": "Понятие", "БГ-Фантастика:Образец за статия за издателство": "Издателство", "БГ-Фантастика:Образец за статия за фен-клуб": "Фен-клуб", "БГ-Фантастика:Образец за статия за събитие": "Събитие" }; // тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Шаблон…“ var tplPages = { // завършвайте всеки ред (с изключение на последния) със запетая, иначе НЯМА ДА РАБОТИ // "ИМЕ НА СТРАНИЦАТА" : "ПОКАЗВАН ТЕКСТ", "Шаблон:Превод/празен": "Превод", "Шаблон:Пояснение/празен": "Пояснение" }; // тези масиви ще се попълват от потребителите на личните им js страници var myInfoboxPages = new Array(); var myModelPages = new Array(); var myTplPages = new Array(); 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]}); } addDropDownMenus(toolbar); // падащите менюта 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(" ") ); } function addDropDownMenus(parent) { addDropDownMenu(parent, "Инфокутия…", "празна инфокутия", infoboxPages, myInfoboxPages); addDropDownMenu(parent, "Образец статия…", "образец за нова статия", modelPages, myModelPages); addDropDownMenu(parent, "Шаблон…", "празен шаблон", tplPages, myTplPages); } // генерира падащо меню function addDropDownMenu(parent, emptyOpt, title, defContent, userContent) { var box = document.createElement("select"); box.title = "Оттук можете да вмъкнете " + title; box.onchange = function() { if (this.value != "") { loadPage(this.value); this.selectedIndex=0; } return; }; box.appendChild( newOption("", emptyOpt) ); appendOptions(box, defContent); appendOptions(box, userContent); parent.appendChild(box); } function appendOptions(box, opts) { for (var i in opts) { box.appendChild( newOption(i, opts[i]) ); } } 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 tplUrl = "{{fullurl:TEMPLATE|action=raw}}"; var pageToFetch = ""; function loadPage(page) { prevReq = new XMLHttpRequest(); if( !prevReq ) return false; pageToFetch = page; var getUrl = tplUrl.replace(/TEMPLATE/, encodeURI(page)); //alert("Страница: "+page+"\nАдрес: "+getUrl); showLoadIndicator(); 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; } 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, ""); insertTags(content, "", ""); } 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 = "loadIndicatorWrapper"; var txt = document.createElement("div"); txt.id = "loadIndicator"; txt.appendChild( document.createTextNode("Шаблонът се зарежда…") ); loadIndicator.appendChild(txt); content.appendChild(loadIndicator); } function hideLoadIndicator() { loadIndicator.style.display = "none"; } // 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>*/