MediaWiki:Gadget-LiveClock.js: различия между версиями

Материал из Тептар
Перейти к навигации Перейти к поиску
Новая страница: «mw.loader.using(['mediawiki.util']).then(function () { // Формируем ссылку на очистку кэша текущей страницы var purgeUrl = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'purge' }); // Добавляем элемент в верхнее личное меню (p-personal) var clockNode = mw.util.addPortletLink( 'p-personal', purgeUrl, '', // Текст пустой,...»
 
Нет описания правки
Метка: ручная отмена
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
mw.loader.using(['mediawiki.util']).then(function () {
mw.loader.using(['mediawiki.util']).then(function () {
     // Формируем ссылку на очистку кэша текущей страницы
     // Обертка jQuery для ожидания полной загрузки HTML-каркаса страницы
     var purgeUrl = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'purge' });
     $(function () {
   
        if (mw.config.get('wgUserName') === null) return;
    // Добавляем элемент в верхнее личное меню (p-personal)
    var clockNode = mw.util.addPortletLink(
        'p-personal',
        purgeUrl,
        '', // Текст пустой, он будет каждую секунду заполняться временем
        'pt-liveclock',
        'Очистить кэш текущей страницы',
        '',
        '#pt-userpage' // Поместить левее ссылки на личную страницу (можно убрать)
    );


    if (!clockNode) return;
        var purgeUrl = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'purge' });
   
       
    // Находим саму кликабельную ссылку внутри созданного элемента
        // Добавляем элемент
    var link = clockNode.querySelector('a') || clockNode;
        var clockNode = mw.util.addPortletLink(
    link.style.fontWeight = 'bold'; // Делаем шрифт часов жирным
            'p-personal',
            purgeUrl,
            '00:00:00', // Временный текст, чтобы элемент сразу имел ширину
            'pt-liveclock',
            'Очистить кэш текущей страницы',
            '',
            '#pt-userpage'
        );


    // Функция обновления времени (использует локальное время)
        // ДИАГНОСТИКА: Если движок не нашел, куда вставлять часы
    function updateTime() {
        if (!clockNode) {
        var d = new Date();
            console.error('Гаджет Живые часы: Ошибка. Не найдено верхнее меню "p-personal" в текущей теме оформления.');
        var h = String(d.getHours()).padStart(2, '0');
            return;
         var m = String(d.getMinutes()).padStart(2, '0');
        }
         var s = String(d.getSeconds()).padStart(2, '0');
          
         link.textContent = h + ':' + m + ':' + s;
         var link = clockNode.querySelector('a') || clockNode;
    }
         link.style.fontWeight = 'bold';


    // Запускаем часы сразу и ставим таймер на обновление каждую секунду
        function updateTime() {
    updateTime();
            var d = new Date();
    setInterval(updateTime, 1000);
            var h = String(d.getHours()).padStart(2, '0');
            var m = String(d.getMinutes()).padStart(2, '0');
            var s = String(d.getSeconds()).padStart(2, '0');
            link.textContent = h + ':' + m + ':' + s;
        }
 
        updateTime();
        setInterval(updateTime, 1000);
    });
});
});

Текущая версия от 16:03, 14 октября 2026

mw.loader.using(['mediawiki.util']).then(function () {
    // Обертка jQuery для ожидания полной загрузки HTML-каркаса страницы
    $(function () {
        if (mw.config.get('wgUserName') === null) return;

        var purgeUrl = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'purge' });
        
        // Добавляем элемент
        var clockNode = mw.util.addPortletLink(
            'p-personal',
            purgeUrl,
            '00:00:00', // Временный текст, чтобы элемент сразу имел ширину
            'pt-liveclock',
            'Очистить кэш текущей страницы',
            '',
            '#pt-userpage'
        );

        // ДИАГНОСТИКА: Если движок не нашел, куда вставлять часы
        if (!clockNode) {
            console.error('Гаджет Живые часы: Ошибка. Не найдено верхнее меню "p-personal" в текущей теме оформления.');
            return;
        }
        
        var link = clockNode.querySelector('a') || clockNode;
        link.style.fontWeight = 'bold';

        function updateTime() {
            var d = new Date();
            var h = String(d.getHours()).padStart(2, '0');
            var m = String(d.getMinutes()).padStart(2, '0');
            var s = String(d.getSeconds()).padStart(2, '0');
            link.textContent = h + ':' + m + ':' + s;
        }

        updateTime();
        setInterval(updateTime, 1000);
    });
});