Wikipedia:Technical village pump

С Wikipedia

Technical village pump
en: this forum is for discussing various technical changes in Siberian Wikipedia interface.
ru: этот форум предназначен для обсуждения различных технических изменений в интерфейсе сибирской Википедии.
ru-sib: майдан наречонной гля мужевання технишных ментовок в межуличноси сибирской Википедди

Contents

[чернить] Обустраиваем MediaWiki:Monobook.js

Для начала необходимо настроить файл MediaWiki:Monobook.js (его изменять может только администратор). Добавляем туда на самый верх строчки

function addLoadEvent(func) 
{
  if (window.addEventListener) 
    window.addEventListener("load", func, false);
  else if (window.attachEvent) 
    window.attachEvent("onload", func);
}

Эта функция (addLoadEvent) будет в дальнейшем использоваться всеми техническими возможностями для включения.

Да, важное дополнение: читабельность этого файла. Чтобы его можно было легко прочесть прямо на странице MediaWiki:Monobook.js, добавляется строка

/* <pre><nowiki> */

в самое начало этой страницы и

/* </nowiki></pre> */ 

- в конец. Edward Chernenko 09:48, 2 October 2006 (UTC)

[чернить] Нулевая секция

Скриншот страницы Википедии со включенной правкой нулевой секции. Новая ссылка обведена красным цветом.
Скриншот страницы Википедии со включенной правкой нулевой секции. Новая ссылка обведена красным цветом.

Далее. Как известно, в статье из нескольких разделов (с несколькими заголовками) появляются ссылки "[править]", позволяющие отредактировать только одну секцию. Но для начала статьи (введения) такой ссылки нет, а потому для изменения введения более-менее большой статьи человек вынужден загружать больший объём. Кроме того, это увеличивает вероятность конфликтов редактирований (edit conflict).

Решение: в MediaWiki:Monobook.js добавляются строки

/* Делаем ссылку "править" для нулевой секции */
var disable_zero_section = 0;
function edit_zero_section()
{ 
 if((disable_zero_section != 1) && (document.getElementById('bodyContent').innerHTML.match('class=\"editsection\"')))
    document.getElementById('bodyContent').innerHTML = "<div class=\"editsection\" id=\"ca-edit-0\">[<a href=\"http://ru-sib.wikipedia.org/w/index.php?title=" + document.title.substr(0, document.title.lastIndexOf(" — ")) + "&action=edit&section=0\">edit</a>]</div>" + document.getElementById('bodyContent').innerHTML;
}
addLoadEvent(edit_zero_section);

, а в MediaWiki:Monobook.css - строки

/* для редактирования нулевой секции */
.editsection { float: right; margin-left: 5px; }

После этого для проверки следует перезагрузить кэш браузера (нажав F5 или кнопку "Обновить" в вашем браузере). Ссылка появится везде, где есть минимум одна секция, в правом верхнем углу (чуть ниже заголовка статьи по высоте).

Edward Chernenko 09:29, 2 October 2006 (UTC)

[чернить] Отключение

Кому не нравится, может отключить эту возможность только для себя, добавив в личный monobook.js строку

disable_zero_section = 1;

или же в личный monobook.css строку

#ca-edit-0 { display: none; }

Edward Chernenko 10:23, 2 October 2006 (UTC)

[чернить] Счётчик Википедии

Для подключения счётчика посещений отдельных страниц в MediaWiki:Monobook.js добавляется код

var disable_counter = 0;
function count_me()
{
  if(!disable_counter && window.location.href.match("^http://ru-sib.wikipedia.org/wiki/") && !window.location.href.substring(7).match(":"))
  {
    var img = new Image();
    img.src = "http://tools.wikimedia.de:22902/1" + document.referrer;
  }
}
addLoadEvent(count_me);

Через некоторое время после включения будет доступна статистика по типу этой и этой (я сообщу, когда всё будет готово).

Edward Chernenko 09:32, 2 October 2006 (UTC)

[чернить] Отключение

Если кто-то не хочет, чтобы его считали, он может добавить в личный monobook.js строку

disable_counter = 1;

Edward Chernenko 10:24, 2 October 2006 (UTC)

[чернить] Включаем шаблон {{title}}

С помощью шаблона {{title}} можно будет изменять заголовки статей (например, если они содержат символы, недопустимые в названиях статей - "+", например). В MediaWiki:Monobook.js добавляется код

/* Замена неправильного заголовка правильным - (C) SergV */
title_restr_alerts = ["trestrictions_replace", "trestrictions_alert"];
//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;
      }
    }
  }
}
addLoadEvent(display_correct_title);

После этого для проверки следует перезагрузить кэш браузера (нажав F5 или кнопку "Обновить" в вашем браузере). Заголовок статьи, содержащей строку "{{title|Верное название}}", будет отображён как "Верное название". Edward Chernenko 09:58, 2 October 2006 (UTC)

[чернить] Реализуем звёздочки избранных интервик и ссылки на ICQ

В MediaWiki:Monobook.js можно добавить следующий код, позволяющий:

  1. отображать звёздочку против тех интервик, которые ссылаются на избранные в других разделах статьи;
  2. заставить работать шаблон .
function LinkFA() 
{
  for(var i=0; a = document.getElementsByTagName("span")[i]; i++)
  {
    /* ссылка на асю? */
    if(a.className == "ICQ")
    {
      a.style.padding = "0 0 0 20px";
      a.style.backgroundImage = "url('http://status.icq.com/online.gif?icq="+a.id+"&img=5')";
      a.style.backgroundRepeat = "no-repeat";
    }
    /* избранная интервика? */
    if(a.className == "FA")
    {
      for(var j=0; b = document.getElementsByTagName("li")[j]; j++)
      {
        if(b.className == "interwiki-" + a.id)
        {
          b.style.padding = "0 0 0 16px";
          b.style.backgroundImage = "url('http://upload.wikimedia.org/wikipedia/ru/3/33/Small_skew_star.gif')";
          b.style.backgroundRepeat = "no-repeat";
          b.title = "Избранная статья";
        }
      }
    }
  }
}
addLoadEvent(LinkFA);

После этого для проверки следует перезагрузить кэш браузера (нажав F5 или кнопку "Обновить" в вашем браузере). Звёздочка избранной статьи будет выглядеть вот так.

Чтобы указать, что в, скажем, немецкой вике страница - избранная, сразу после их интервики-ссылки ставится {{Link FA|de}}. В русском разделе этим автоматически занимается бот; возможно, надо будет включить его здесь (как-нибудь на досуге займусь).

Шаблон {{ICQ}} используется так: {{ICQ|номер}}. Пример: Spectrum (иконка покажется только после включения кода).

Edward Chernenko 10:20, 2 October 2006 (UTC)

[чернить] Настройка интерфейса

[чернить] Меняем меню

Меню "navigation" слева можно изменить, поправив страницу MediaWiki:Sidebar. Вид её следующий (см. пример):

* название_меню1
** ссылка1|текст1
** ссылка2|текст2
** ссылка3|текст3
* название_меню2
** ссылка4|текст4
** ссылка5|текст5

Например, в нашем случае пишем туда (в одно цельное меню):

* navigation
** mainpage-url|mainpage
** forum-url|forum
** recentchanges-url|recentchanges
** randompage-url|randompage
** help-url|help
** sandbox-url|sandbox

Далее, для каждого из использованных слов ('navigation', 'mainpage-url', 'forum' и т.п.) создаём страницы MediaWiki:<подставить_сюда_название> (например, MediaWiki:Navigation, MediaWiki:Mainpage-url, MediaWiki:Forum) со следующим содержимым: текст ссылки, если слово находится справа, и название страницы, если слева.

То есть в MediaWiki:Navigation прописываем перевод слова "navigation" на сибирском, в MediaWiki:mainpage-url пока пишем "Main_page" (можно переименовать, кстати). Так же и с другими. Смысл этих манипуляций:

  1. убирается ссылка на "Current events" (всё равно пока не потянем их вести);
  2. добавляется ссылка на песочницу (sandbox) - в самом низу меню;
  3. убирается раздел "donations" (ну его, не нужен).

Так же можно там ещё что-нибудь перевести или ещё какую-нибудь ссылку добавить (справки у нас пока нет, так что строку "** help-url|help" тоже можно убрать).

Не рекомендуется писать переводы/названия страниц прямо в MediaWiki:Sidebar, ибо это ломает правильность страницы с точки зрения стандартов XHTML (недавно на рувике с этим сталкивались уже).

Edward Chernenko 09:48, 2 October 2006 (UTC)