5441
редагування
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| (Не показано 12 проміжних версій цього користувача) | |||
| Рядок 1: | Рядок 1: | ||
// ================================================== | |||
// RANDOM ARTICLES | |||
// ================================================== | |||
$(document).ready(function() { | $(document).ready(function() { | ||
var apiUrl = mw.config.get('wgScriptPath') + '/api.php'; | var apiUrl = mw.config.get('wgScriptPath') + '/api.php'; | ||
| Рядок 6: | Рядок 9: | ||
list: 'random', | list: 'random', | ||
rnnamespace: '0', | rnnamespace: '0', | ||
rnlimit: '5', | rnlimit: '5', | ||
prop: 'extracts', | prop: 'extracts', | ||
exchars: '250', | exchars: '250', | ||
exlimit: 'max', | exlimit: 'max', | ||
explaintext: true | explaintext: true | ||
| Рядок 21: | Рядок 24: | ||
$('#random-articles-container').html(html); | $('#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); | |||
} | |||
}); | }); | ||