MediaWiki:Common.js: відмінності між версіями
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 199: | Рядок 199: | ||
if (window.location.hash === '#/search') { | if (window.location.hash === '#/search') { | ||
history.replaceState(null, null, window.location.pathname); | history.replaceState(null, null, window.location.pathname); | ||
} | |||
}); | |||
// ================================================== | |||
// ДИНАМІЧНІ ПОСИЛАННЯ НА ГОЛОВНІЙ | |||
// ================================================== | |||
$(document).ready(function() { | |||
// Тільки на головній сторінці | |||
if ($('body').hasClass('page-Головна_сторінка')) { | |||
// Списки посилань для кожного блоку | |||
var block1Links = [ | |||
{ title: 'Фінал Року', url: '/index.php/Фінал_Року' }, | |||
{ title: 'Дев\'ятий сезон', url: '/index.php/Дев\'ятий_сезон' }, | |||
{ title: 'Восьмий сезон', url: '/index.php/Восьмий_сезон' } | |||
]; | |||
var block2Links = [ | |||
{ title: 'Перша статистика', url: '/index.php/Перша_статистика' }, | |||
{ title: 'Get Names 09', url: '/index.php/Get_Names_09' }, | |||
{ title: 'Статистика', url: '/index.php/Статистика' } | |||
]; | |||
var block3Links = [ | |||
{ title: 'Mafia Closed Cup I', url: '/index.php/Mafia_Closed_Cup_I' }, | |||
{ title: 'Призовий фонд', url: '/index.php/Призовий_фонд' }, | |||
{ title: 'Фундація', url: '/index.php/Фундація' } | |||
]; | |||
// Функція випадкового вибору | |||
function getRandomItem(arr) { | |||
return arr[Math.floor(Math.random() * arr.length)]; | |||
} | |||
// Знаходимо блоки і замінюємо посилання | |||
var $blocks = $('.home__block-image-block p'); | |||
if ($blocks.length >= 3) { | |||
var link1 = getRandomItem(block1Links); | |||
var link2 = getRandomItem(block2Links); | |||
var link3 = getRandomItem(block3Links); | |||
$blocks.eq(0).html('<a href="' + link1.url + '">' + link1.title + '</a>'); | |||
$blocks.eq(1).html('<a href="' + link2.url + '">' + link2.title + '</a>'); | |||
$blocks.eq(2).html('<a href="' + link3.url + '">' + link3.title + '</a>'); | |||
} | |||
} | } | ||
}); | }); | ||
Версія за 11:56, 16 грудня 2025
// ==================================================
// RANDOM ARTICLES
// ==================================================
$(document).ready(function() {
var apiUrl = mw.config.get('wgScriptPath') + '/api.php';
$.getJSON(apiUrl, {
action: 'query',
format: 'json',
list: 'random',
rnnamespace: '0',
rnlimit: '5',
prop: 'extracts',
exchars: '250',
exlimit: 'max',
explaintext: true
}, function(data) {
var html = '';
$.each(data.query.random, function(i, article) {
html += '<div class="random-article-preview">';
html += '<h2><a href="/wiki/' + encodeURIComponent(article.title) + '">' + article.title + '</a></h2>';
html += '<p>' + article.extract + '</p>';
html += '</div>';
});
$('#random-articles-container').html(html);
});
});
// ==================================================
// L-BOX NAVIGATION
// ==================================================
$(function() {
var items = $('.l-box-item');
var sections = [];
items.each(function() {
var target = $(this).data('target');
if (target === 'top') {
sections.push({item: $(this), target: null, offset: 0});
} else {
var el = document.getElementById(target);
if (el) {
sections.push({item: $(this), target: $(el), offset: $(el).offset().top});
}
}
});
items.on('click', function() {
var target = $(this).data('target');
var scrollTo = 0;
if (target === 'top') {
scrollTo = 0;
} else {
var el = document.getElementById(target);
if (el) {
scrollTo = $(el).offset().top - 100;
}
}
$('html, body').animate({scrollTop: scrollTo}, 300);
});
$(window).on('scroll', function() {
var scrollPos = $(window).scrollTop() + 120;
var current = null;
for (var i = 0; i < sections.length; i++) {
var checkPos = sections[i].target ? sections[i].target.offset().top : 0;
if (checkPos <= scrollPos) {
current = sections[i].item;
}
}
items.removeClass('active');
if (current) {
current.addClass('active');
}
});
$(window).trigger('scroll');
});
// ==================================================
// PROFILE ICONS
// ==================================================
$(document).ready(function() {
$('.profile-icon').each(function() {
var icon = $(this);
var url = icon.attr('data-url');
if (url && url.trim() !== '') {
icon.css('cursor', 'pointer');
icon.on('click', function() {
window.open(url, '_blank');
});
} else {
icon.css({
'opacity': '0.3',
'filter': 'grayscale(100%)',
'-webkit-filter': 'grayscale(100%)',
'cursor': 'default'
});
}
});
});
// ==================================================
// ВИПРАВЛЕННЯ ПОШУКУ - БЕЗ OVERLAY
// ==================================================
$(document).ready(function() {
var $searchInput = $('#searchInput');
var $body = $('body');
// Невелика затримка щоб DOM повністю завантажився
setTimeout(function() {
// Змінюємо placeholder
$searchInput.attr('placeholder', 'Пошук...');
// Прибираємо readonly
$searchInput.prop('readonly', false);
$searchInput.removeAttr('readonly');
// Прибираємо класи тригера
$searchInput.removeClass('skin-minerva-search-trigger');
// Прибираємо всі обробники подій з input
$searchInput.off();
// Блокуємо overlay при кліку/фокусі
$searchInput.on('click focus', function(e) {
e.stopPropagation();
e.stopImmediatePropagation();
// Прибираємо overlay класи
$body.removeClass('overlay-enabled search-enabled');
// Ховаємо overlay
$('.overlay, .search-overlay').remove();
// Прибираємо hash
if (window.location.hash === '#/search') {
history.replaceState(null, null, window.location.pathname);
}
// Фокус на input
$(this).focus();
});
// При введенні тексту
$searchInput.on('input', function(e) {
$body.removeClass('overlay-enabled search-enabled');
$('.overlay, .search-overlay').remove();
});
// При Enter - перехід на сторінку пошуку
$searchInput.on('keydown', function(e) {
if (e.which === 13 || e.keyCode === 13) {
e.preventDefault();
e.stopPropagation();
var query = $(this).val().trim();
if (query) {
window.location.href = '/index.php?title=Спеціальна:Пошук&search=' + encodeURIComponent(query);
}
return false;
}
});
}, 50);
// MutationObserver - блокуємо overlay класи на body
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.attributeName === 'class') {
if ($body.hasClass('overlay-enabled')) {
$body.removeClass('overlay-enabled search-enabled');
$('.overlay, .search-overlay').remove();
// Прибираємо hash
if (window.location.hash === '#/search') {
history.replaceState(null, null, window.location.pathname);
}
}
}
});
});
observer.observe(document.body, { attributes: true });
// Блокуємо hashchange на #/search
$(window).on('hashchange', function(e) {
if (window.location.hash === '#/search') {
e.preventDefault();
history.replaceState(null, null, window.location.pathname);
$body.removeClass('overlay-enabled search-enabled');
$('.overlay, .search-overlay').remove();
}
});
// Перевіряємо hash при завантаженні
if (window.location.hash === '#/search') {
history.replaceState(null, null, window.location.pathname);
}
});
// ==================================================
// ДИНАМІЧНІ ПОСИЛАННЯ НА ГОЛОВНІЙ
// ==================================================
$(document).ready(function() {
// Тільки на головній сторінці
if ($('body').hasClass('page-Головна_сторінка')) {
// Списки посилань для кожного блоку
var block1Links = [
{ title: 'Фінал Року', url: '/index.php/Фінал_Року' },
{ title: 'Дев\'ятий сезон', url: '/index.php/Дев\'ятий_сезон' },
{ title: 'Восьмий сезон', url: '/index.php/Восьмий_сезон' }
];
var block2Links = [
{ title: 'Перша статистика', url: '/index.php/Перша_статистика' },
{ title: 'Get Names 09', url: '/index.php/Get_Names_09' },
{ title: 'Статистика', url: '/index.php/Статистика' }
];
var block3Links = [
{ title: 'Mafia Closed Cup I', url: '/index.php/Mafia_Closed_Cup_I' },
{ title: 'Призовий фонд', url: '/index.php/Призовий_фонд' },
{ title: 'Фундація', url: '/index.php/Фундація' }
];
// Функція випадкового вибору
function getRandomItem(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}
// Знаходимо блоки і замінюємо посилання
var $blocks = $('.home__block-image-block p');
if ($blocks.length >= 3) {
var link1 = getRandomItem(block1Links);
var link2 = getRandomItem(block2Links);
var link3 = getRandomItem(block3Links);
$blocks.eq(0).html('<a href="' + link1.url + '">' + link1.title + '</a>');
$blocks.eq(1).html('<a href="' + link2.url + '">' + link2.title + '</a>');
$blocks.eq(2).html('<a href="' + link3.url + '">' + link3.title + '</a>');
}
}
});