MediaWiki:Gadget-floatingTips.js
Перейти к навигации
Перейти к поиску
Замечание: Чтобы после сохранения вступили в силу изменения стилей, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=common&*, если используете скин Common.
Чтобы вступили в силу изменения скриптов, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=common&*, если используете скин Common.
Гаджеты и импортируемые скрипты загружаются отдельными файлами.
/*
* Приспособление floatingTooltips для показа всплывающих подсказок
* над сносками, если текст сносок за пределами экрана (<ref>, расширение Cite),
* и над текстом с подсказкой (шаблон Подсказка).
* Стиль подсказок определён в файле MediaWiki:Gadget-floatingTips.css.
* Используется поставляемый с MediaWiki плагин jQuery tipsy (зависимость jquery.tipsy).
* Александр Машин для «Традиции», 2014.
*
*/
// Для совместимости jquery.tipsy с jQuery 1.11:
$.fn.live = $.fn.on;
// После загрузки страницы:
window.pg || $(document).ready (function ($) {
// Настройки tipsy:
var tipsy_settings = {
delayIn : 200 // -- 200 мс до выскакивания,
, delayOut: 3000 // -- 3 с, достаточно, чтобы доехать до ссылок и вложенных всплывающих сносок в сноске,
, fade : true // -- для красоты,
// Расположение подсказок в зависимости от текущего положения сноски в окне просмотра:
, gravity : function () {
var $this = $(this);
var $document = $(document);
var $window = $(window);
return ($this.offset ().top > ($document.scrollTop () + $window.height () * 0.25) ? 's' : 'n')
+ ($this.offset ().left > ($document.scrollLeft () + $window.width () * 0.35) ? 'e' : 'w');
}
, html : true // -- чтобы работало сложное форматирование,
, offset : 0 // -- 0 пикселов от сноски,
, opacity : 1 // -- полная непрозрачность,
, hover : 'hover' // -- не 'focus' или 'manual',
, live : true // -- чтобы работали вложенные,
, title : function () {
return getTipText ($(this));
}
};
// Селектор, внутри которого могут быть подсказки:
var tipped = '.reference, .tipped';
// Функция генерации подсказки для фрагмента $tipped:
function getTipText ($tipped) {
var $tip;
if ($tipped.hasClass ('tipped')) {
// .tipped:
$tip = $tipped.find ('.tip').first ().clone ().show ();
} else {
// сноска:
var href = $tipped.children ('a').first ().attr ('href');
var id = href && href.substring (href.indexOf ('#') + 1);
$tip = $(document.getElementById (id)).find ('.reference-text');
}
// Рекурсивно снабдить подсказками:
$tip.find (tipped).tipsy (tipsy_settings);
return $tip.html () || '<em>(сноска не задана)</em>';
}
// Сноски верхнего уровня:
$(tipped).tipsy (tipsy_settings);
});