|
|
(не показано 18 промежуточных версий 2 участников) |
Строка 1: |
Строка 1: |
| /* Execute function on page load *********************************************
| | /* Let it stay empty for now */ |
| *
| |
| * Description: Wrapper around addOnloadHook() for backwards compatibility.
| |
| * Will be removed in the near future.
| |
| */
| |
|
| |
| function addLoadEvent( f ) { addOnloadHook( f ); }
| |
| | |
| /** Internet Explorer bug fix **************************************************
| |
| */
| |
|
| |
| if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
| |
| {
| |
| var oldWidth;
| |
| var docEl = document.documentElement;
| |
|
| |
| function fixIEScroll()
| |
| {
| |
| if (!oldWidth || docEl.clientWidth > oldWidth)
| |
| doFixIEScroll();
| |
| else
| |
| setTimeout(doFixIEScroll, 1);
| |
|
| |
| oldWidth = docEl.clientWidth;
| |
| }
| |
|
| |
| function doFixIEScroll() {
| |
| docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
| |
| }
| |
|
| |
| document.attachEvent("onreadystatechange", fixIEScroll);
| |
| attachEvent("onresize", fixIEScroll);
| |
| }
| |
| | |
| /** Tooltips and access keys ***************************************************
| |
| */
| |
| ta = new Object();
| |
| ta['pt-userpage'] = new Array('.','Моя страница пользователя');
| |
| ta['pt-anonuserpage'] = new Array('.','Страница пользователя для моего IP');
| |
| ta['pt-mytalk'] = new Array('n','Моя страница обсуждений');
| |
| ta['pt-anontalk'] = new Array('n','Страница обсуждений для моего IP');
| |
| ta['pt-preferences'] = new Array('','Мои настройки');
| |
| ta['pt-watchlist'] = new Array('l','Список страниц моего наблюдения');
| |
| ta['pt-mycontris'] = new Array('y','Список страниц, которые я редактировал');
| |
| ta['pt-login'] = new Array('o','Здесь можно зарегистрироваться в системе, но это необязательно');
| |
| ta['pt-anonlogin'] = new Array('o','Здесь можно зарегистрироваться в системе, но это необязательно');
| |
| ta['pt-logout'] = new Array('','Завершить зарегистрированный сеанс');
| |
| ta['ca-talk'] = new Array('t','Обсуждение статьи');
| |
| ta['ca-edit'] = new Array('e','Эту статью можно изменять. Перед сохранением изменений, пожалуйста, нажмите кнопку предварительного просмотра для визуальной проверки результата');
| |
| ta['ca-addsection'] = new Array('+','Добавить комментарий к обсуждению');
| |
| ta['ca-viewsource'] = new Array('e','Эта страница защищена от изменений, но вы можете посмотреть и скопировать её исходный текст');
| |
| ta['ca-history'] = new Array('h','Журнал изменений страницы');
| |
| ta['ca-protect'] = new Array('=','Защитить страницу от изменений');
| |
| ta['ca-unprotect'] = new Array('','Разрешить изменение страницы');
| |
| ta['ca-delete'] = new Array('d','Удалить эту страницу');
| |
| ta['ca-undelete'] = new Array('d','Восстановить исправления страницы, сделанные до того, как она была удалена');
| |
| ta['ca-move'] = new Array('m','Переименовать страницу');
| |
| ta['ca-nomove'] = new Array('','У вас не хватает прав, чтобы переименовать эту страницу');
| |
| ta['ca-watch'] = new Array('w','Добавить эту страницу в ваш список наблюдения');
| |
| ta['ca-unwatch'] = new Array('','Удалить эту страницу из вашего списка наблюдения');
| |
| ta['search'] = new Array('f','Искать это слово');
| |
| ta['p-logo'] = new Array('','Заглавная страница');
| |
| ta['n-mainpage'] = new Array('z','Перейти на заглавную страницу');
| |
| ta['n-portal'] = new Array('','О проекте, о том, что вы можете сделать, где что находится');
| |
| ta['n-currentevents'] = new Array('','Список текущих событий');
| |
| ta['n-recentchanges'] = new Array('r','Список последних изменений в Википедии');
| |
| ta['n-randompage'] = new Array('x','Посмотреть случайную страницу');
| |
| ta['n-help'] = new Array('','Справочник по Википедии');
| |
| ta['n-sitesupport'] = new Array('','Поддержите проект');
| |
| ta['t-whatlinkshere'] = new Array('j','Список всех страниц в Википедии, которые ссылаются на эту страницу');
| |
| ta['t-recentchangeslinked'] = new Array('k','Последние изменения в страницах, на которые ссылается эта страница');
| |
| ta['feed-rss'] = new Array('','Трансляция в RSS для этой страницы');
| |
| ta['feed-atom'] = new Array('','Трансляция в Atom для этой страницы');
| |
| ta['t-contributions'] = new Array('','Список страниц, которые изменял этот участник');
| |
| ta['t-emailuser'] = new Array('','Послать письмо этому участнику');
| |
| ta['t-upload'] = new Array('u','Загрузить изображения или мультимедиа-файлы');
| |
| ta['t-specialpages'] = new Array('q','Список служебных страниц');
| |
| ta['t-print']=new Array('', 'Версия без кнопок, пригодная для распечатки');
| |
| ta['t-permalink'] = new Array('', 'Ссылка на текущую версию этой статьи');
| |
| ta['ca-nstab-main'] = new Array('c','Содержание статьи');
| |
| ta['ca-nstab-user'] = new Array('c','Персональная страница участника');
| |
| ta['ca-nstab-media'] = new Array('c','Мультимедиа-файл');
| |
| ta['ca-nstab-special'] = new Array('','Это служебная страница, она недоступна для редактирования');
| |
| ta['ca-nstab-wp'] = new Array('a','Страница проекта');
| |
| ta['ca-nstab-image'] = new Array('c','Страница изображения');
| |
| ta['ca-nstab-mediawiki'] = new Array('c','Страница сообщения MediaWiki');
| |
| ta['ca-nstab-template'] = new Array('c','Страница шаблона');
| |
| ta['ca-nstab-help'] = new Array('c','Страница справки');
| |
| ta['ca-nstab-category'] = new Array('c','Страница категории');
| |
| ta['ca-nstab-Портал'] = new Array('c','Страница портала');
| |
| | |
| /** Interwiki links to featured articles ***************************************
| |
| *
| |
| * Описание: Ставит звёздочки для избранных иноязычных статей, а заодно и даёт картинку для статуса ICQ
| |
| */
| |
|
| |
| /** Dynamic Navigation Bars (experimental) *************************************
| |
| *
| |
| */
| |
|
| |
| // set up the words in your language
| |
| var NavigationBarHide = ' [скрыть]';
| |
| var NavigationBarShow = ' [показать]';
| |
|
| |
| // set up max count of Navigation Bars on page,
| |
| // if there are more, all will be hidden
| |
| // NavigationBarShowDefault = 0; // all bars will be hidden
| |
| // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
| |
| var NavigationBarShowDefault = 3;
| |
|
| |
|
| |
| // shows and hides content and picture (if available) of navigation bars
| |
| // Parameters:
| |
| // indexNavigationBar: the index of navigation bar to be toggled
| |
| function toggleNavigationBar(indexNavigationBar)
| |
| {
| |
| var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
| |
| var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
| |
|
| |
| if (!NavFrame || !NavToggle) {
| |
| return false;
| |
| }
| |
|
| |
| // if shown now
| |
| if (NavToggle.firstChild.data == NavigationBarHide) {
| |
| for (
| |
| var NavChild = NavFrame.firstChild;
| |
| NavChild != null;
| |
| NavChild = NavChild.nextSibling
| |
| ) {
| |
| if (NavChild.className == 'NavPic') {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| if (NavChild.className == 'NavContent') {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarShow;
| |
|
| |
| // if hidden now
| |
| } else if (NavToggle.firstChild.data == NavigationBarShow) {
| |
| for (
| |
| var NavChild = NavFrame.firstChild;
| |
| NavChild != null;
| |
| NavChild = NavChild.nextSibling
| |
| ) {
| |
| if (NavChild.className == 'NavPic') {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| if (NavChild.className == 'NavContent') {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarHide;
| |
| }
| |
| }
| |
|
| |
| // adds show/hide-button to navigation bars
| |
| function createNavigationBarToggleButton()
| |
| {
| |
| var indexNavigationBar = 0;
| |
| // iterate over all div-elements
| |
| for(
| |
| var i=0;
| |
| NavFrame = document.getElementsByTagName("div")[i];
| |
| i++
| |
| ) {
| |
| // if found a navigation bar
| |
| if (NavFrame.className == "NavFrame") {
| |
|
| |
| indexNavigationBar++;
| |
| var NavToggle = document.createElement("a");
| |
| NavToggle.className = 'NavToggle';
| |
| NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
| |
| NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
| |
|
| |
| var NavToggleText = document.createTextNode(NavigationBarHide);
| |
| NavToggle.appendChild(NavToggleText);
| |
| // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
| |
| for(
| |
| var j=0;
| |
| j < NavFrame.childNodes.length;
| |
| j++
| |
| ) {
| |
| if (NavFrame.childNodes[j].className == "NavHead") {
| |
| NavFrame.childNodes[j].appendChild(NavToggle);
| |
| }
| |
| }
| |
| NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
| |
| }
| |
| }
| |
| // if more Navigation Bars found than Default: hide all
| |
| if (NavigationBarShowDefault < indexNavigationBar) {
| |
| for(
| |
| var i=1;
| |
| i<=indexNavigationBar;
| |
| i++
| |
| ) {
| |
| toggleNavigationBar(i);
| |
| }
| |
| }
| |
|
| |
| }
| |
|
| |
| addOnloadHook( createNavigationBarToggleButton );
| |
|
| |
| | |
| /** Collapsible tables *********************************************************
| |
| *
| |
| * Description: Allows tables to be collapsed, show only the header. See
| |
| * [[Wikipedia:NavFrame]].
| |
| */
| |
|
| |
| var autoCollapse = 2;
| |
| var collapseCaption = "скрыть";
| |
| var expandCaption = "показать";
| |
|
| |
| function hasClass( element, className ) {
| |
| var Classes = element.className.split( " " );
| |
| for ( var i = 0; i < Classes.length; i++ ) {
| |
| if ( Classes[i] == className ) {
| |
| return ( true );
| |
| }
| |
| }
| |
| return ( false );
| |
| }
| |
|
| |
| function collapseTable( tableIndex )
| |
| {
| |
| var Button = document.getElementById( "collapseButton" + tableIndex );
| |
| var Table = document.getElementById( "collapsibleTable" + tableIndex );
| |
|
| |
| if ( !Table || !Button ) {
| |
| return false;
| |
| }
| |
|
| |
| var Rows = Table.getElementsByTagName( "tr" );
| |
|
| |
| if ( Button.firstChild.data == collapseCaption ) {
| |
| for ( var i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = "none";
| |
| }
| |
| Button.firstChild.data = expandCaption;
| |
| } else {
| |
| for ( var i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = Rows[0].style.display;
| |
| }
| |
| Button.firstChild.data = collapseCaption;
| |
| }
| |
| }
| |
|
| |
| function createCollapseButtons()
| |
| {
| |
| var tableIndex = 0;
| |
| var NavigationBoxes = new Object();
| |
| var Tables = document.getElementsByTagName("table");
| |
|
| |
| for ( var i = 0; i < Tables.length; i++ ) {
| |
| if ( hasClass( Tables[i], "collapsible" ) ) {
| |
| NavigationBoxes[ tableIndex ] = Tables[i];
| |
| Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex);
| |
|
| |
| var Button = document.createElement( "span" );
| |
| var ButtonLink = document.createElement( "a" );
| |
| var ButtonText = document.createTextNode( collapseCaption );
| |
|
| |
| Button.style.styleFloat = "left";
| |
| Button.style.cssFloat = "left";
| |
| Button.style.fontWeight = "normal";
| |
| Button.style.textAlign = "left";
| |
| Button.style.width = "6em";
| |
|
| |
| ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
| |
| ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
| |
| ButtonLink.appendChild( ButtonText );
| |
|
| |
| Button.appendChild( document.createTextNode( "[" ) );
| |
| Button.appendChild( ButtonLink );
| |
| Button.appendChild( document.createTextNode( "]" ) );
| |
|
| |
| var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
| |
| Header.insertBefore( Button, Header.childNodes[0] );
| |
|
| |
| tableIndex++;
| |
| }
| |
| }
| |
|
| |
| for ( var i = 0; i < tableIndex; i++ ) {
| |
| if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
| |
| collapseTable(i);
| |
| }
| |
| }
| |
| }
| |
|
| |
| addOnloadHook( createCollapseButtons );
| |
| | |
| /** Main Page ******************************************************* <nowiki>
| |
| *
| |
| */
| |
|
| |
| var mpTitle = "Заглавная страница";
| |
| var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" — ")) == mpTitle);
| |
| var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));
| |
| | |
| if (isMainPage && !isDiff)
| |
| {
| |
| document.write('<style type="text/css">/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
| |
| }
| |
| | |
| | |
| /** "Technical restrictions" title fix *****************************************
| |
| */
| |
|
| |
| // For pages that have something like Template:Lowercase, replace the title, but only if it is cut-and-pasteable as a valid wikilink.
| |
| // (for instance [[iPod]]'s title is updated. <nowiki>But [[C#]] is not an equivalent wikilink, so [[C Sharp]] doesn't have its main title changed)</nowiki>
| |
| //
| |
| // The function looks for a banner like this: <nowiki>
| |
| // <div id="RealTitleBanner"> <!-- div that gets hidden -->
| |
| // <span id="RealTitle">title</span>
| |
| // </div>
| |
| // </nowiki>An element with id=DisableRealTitle disables the function.
| |
|
| |
| // similar to innerHTML, but only returns the text portions of the insides, excludes HTML
| |
| function pickUpText(aParentElement) {
| |
| var str = "";
| |
|
| |
| function pickUpTextInternal(aElement) {
| |
| var child = aElement.firstChild;
| |
| while (child) {
| |
| if (child.nodeType == 1) // ELEMENT_NODE
| |
| pickUpTextInternal(child);
| |
| else if (child.nodeType == 3) // TEXT_NODE
| |
| str += child.nodeValue;
| |
|
| |
| child = child.nextSibling;
| |
| }
| |
| }
| |
|
| |
| pickUpTextInternal(aParentElement);
| |
|
| |
| return str;
| |
| }
| |
|
| |
| var disableRealTitle = 0; // users can disable this by making this true from their monobook.js
| |
| addOnloadHook(function() {
| |
| try {
| |
| var realTitleBanner = document.getElementById("RealTitleBanner");
| |
| if (realTitleBanner && !document.getElementById("DisableRealTitle") && !disableRealTitle) {
| |
| var realTitle = document.getElementById("RealTitle");
| |
| if (realTitle) {
| |
| var realTitleHTML = realTitle.innerHTML;
| |
| realTitleText = pickUpText(realTitle);
| |
|
| |
| var isPasteable = 0;
| |
| //var containsHTML = /</.test(realTitleHTML); // contains ANY HTML
| |
| var containsTooMuchHTML = /</.test( realTitleHTML.replace(/<\/?(sub|sup|small|big)>/gi, "") ); // contains HTML that will be ignored when cut-n-pasted as a wikilink
| |
| // calculate whether the title is pasteable
| |
| var verifyTitle = realTitleText.replace(/^ +/, ""); // trim left spaces
| |
| verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length); // uppercase first character
| |
|
| |
| // if the namespace prefix is there, remove it on our verification copy. If it isn't there, add it to the original realValue copy.
| |
| if (wgNamespaceNumber != 0) {
| |
| if (wgCanonicalNamespace == verifyTitle.substr(0, wgCanonicalNamespace.length).replace(/ /g, "_") && verifyTitle.charAt(wgCanonicalNamespace.length) == ":") {
| |
| verifyTitle = verifyTitle.substr(wgCanonicalNamespace.length + 1);
| |
| } else {
| |
| realTitleText = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleText;
| |
| realTitleHTML = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleHTML;
| |
| }
| |
| }
| |
|
| |
| // verify whether wgTitle matches
| |
| verifyTitle = verifyTitle.replace(/^ +/, "").replace(/ +$/, ""); // trim left and right spaces
| |
| verifyTitle = verifyTitle.replace(/_/g, " "); // underscores to spaces
| |
| verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length); // uppercase first character
| |
| isPasteable = (verifyTitle == wgTitle);
| |
|
| |
| var h1 = document.getElementsByTagName("h1")[0];
| |
| if (h1 && isPasteable) {
| |
| h1.innerHTML = containsTooMuchHTML ? realTitleText : realTitleHTML;
| |
| if (!containsTooMuchHTML)
| |
| realTitleBanner.style.display = "none";
| |
| }
| |
| document.title = realTitleText + " — Википедия";
| |
| }
| |
| }
| |
| } catch (e) {
| |
| /* Something went wrong. */
| |
| }
| |
| });
| |
| | |
| /* Замена неправильного заголовка правильным by SergV *****************************************
| |
| */
| |
|
| |
| // Все неправильные заголовки
| |
| title_restr_alerts = ["trestrictions_replace", "trestrictions_alert"];
| |
| | |
| // Только шаблон title
| |
| //title_restr_alerts = ["trestrictions_replace"];
| |
| | |
| function display_correct_title () {
| |
| var title_restr_alert1, a1;
| |
| if (document.getElementsByTagName && document.getElementById) {
| |
| for(var i=0; i < title_restr_alerts.length; i++) {
| |
| title_restr_alert1 = title_restr_alerts[i];
| |
| a1 = document.getElementById(title_restr_alert1);
| |
| if(a1) {
| |
| ct = document.getElementById("trestrictions_correct");
| |
| if(ct) {
| |
| document.getElementsByTagName("h1")[0].innerHTML = ct.innerHTML;
| |
| a1.style.display = "none";
| |
| document.getElementById("trestrictions_replaced").style.display = "block";
| |
| }
| |
| break;
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| addOnloadHook(display_correct_title);
| |
| | |
| /* Другое *****************************************
| |
| */
| |
| window.przyciskiOpisDone = false;
| |
| var auto_comment = 0;
| |
| | |
| /* подгрузка файла со скриптами для редактирования *****************************************
| |
| */
| |
| if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0)
| |
| {
| |
| if (wgCanonicalNamespace != "Special")
| |
| {
| |
| document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Onlyifediting.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| |
| }
| |
| }
| |