MediaWiki:Common.js — различия между версиями
Материал из Oktell
Timur (обсуждение | вклад) (Новая страница: «if ($wgUser->isLoggedIn()) { $lines = explode( "\n", wfMsgForContent( 'sidebar' ) ); } else { $lines = explode( "\n", wfMsgForContent( 'anon_sidebar' ) ); }») |
Admin (обсуждение | вклад) |
||
| Строка 4: | Строка 4: | ||
$lines = explode( "\n", wfMsgForContent( 'anon_sidebar' ) ); | $lines = explode( "\n", wfMsgForContent( 'anon_sidebar' ) ); | ||
} | } | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | (function () { | ||
| + | var STORAGE_KEY = 'oktell_cookie_consent'; | ||
| + | |||
| + | function hasConsent() { | ||
| + | return localStorage.getItem(STORAGE_KEY) === 'accepted'; | ||
| + | } | ||
| + | |||
| + | function hasDeclined() { | ||
| + | return localStorage.getItem(STORAGE_KEY) === 'declined'; | ||
| + | } | ||
| + | |||
| + | function saveConsent(value) { | ||
| + | localStorage.setItem(STORAGE_KEY, value); | ||
| + | } | ||
| + | |||
| + | function createCookieBanner() { | ||
| + | if (hasConsent() || hasDeclined()) { | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | var banner = document.createElement('div'); | ||
| + | banner.className = 'oktell-cookie-banner'; | ||
| + | banner.innerHTML = | ||
| + | '<div class="oktell-cookie-text">' + | ||
| + | 'Мы используем cookies для корректной работы сайта, анализа посещаемости и улучшения пользовательского опыта. ' + | ||
| + | 'Продолжая пользоваться сайтом, вы можете согласиться с использованием cookies. ' + | ||
| + | '<a href="/index.php?title=Политика_конфиденциальности">Подробнее в Политике конфиденциальности</a>.' + | ||
| + | '</div>' + | ||
| + | '<div class="oktell-cookie-actions">' + | ||
| + | '<button type="button" class="oktell-cookie-btn oktell-cookie-decline">Не согласен</button>' + | ||
| + | '<button type="button" class="oktell-cookie-btn oktell-cookie-accept">Согласен</button>' + | ||
| + | '</div>'; | ||
| + | |||
| + | document.body.appendChild(banner); | ||
| + | |||
| + | setTimeout(function () { | ||
| + | banner.classList.add('is-visible'); | ||
| + | }, 300); | ||
| + | |||
| + | var acceptBtn = banner.querySelector('.oktell-cookie-accept'); | ||
| + | var declineBtn = banner.querySelector('.oktell-cookie-decline'); | ||
| + | |||
| + | acceptBtn.addEventListener('click', function () { | ||
| + | saveConsent('accepted'); | ||
| + | banner.classList.remove('is-visible'); | ||
| + | setTimeout(function () { | ||
| + | banner.remove(); | ||
| + | }, 300); | ||
| + | |||
| + | if (typeof window.oktellLoadAnalytics === 'function') { | ||
| + | window.oktellLoadAnalytics(); | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | declineBtn.addEventListener('click', function () { | ||
| + | saveConsent('declined'); | ||
| + | banner.classList.remove('is-visible'); | ||
| + | setTimeout(function () { | ||
| + | banner.remove(); | ||
| + | }, 300); | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | document.addEventListener('DOMContentLoaded', createCookieBanner); | ||
| + | })(); | ||
Версия 12:58, 4 июня 2026
if ($wgUser->isLoggedIn()) {
$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
} else {
$lines = explode( "\n", wfMsgForContent( 'anon_sidebar' ) );
}
(function () {
var STORAGE_KEY = 'oktell_cookie_consent';
function hasConsent() {
return localStorage.getItem(STORAGE_KEY) === 'accepted';
}
function hasDeclined() {
return localStorage.getItem(STORAGE_KEY) === 'declined';
}
function saveConsent(value) {
localStorage.setItem(STORAGE_KEY, value);
}
function createCookieBanner() {
if (hasConsent() || hasDeclined()) {
return;
}
var banner = document.createElement('div');
banner.className = 'oktell-cookie-banner';
banner.innerHTML =
'<div class="oktell-cookie-text">' +
'Мы используем cookies для корректной работы сайта, анализа посещаемости и улучшения пользовательского опыта. ' +
'Продолжая пользоваться сайтом, вы можете согласиться с использованием cookies. ' +
'<a href="/index.php?title=Политика_конфиденциальности">Подробнее в Политике конфиденциальности</a>.' +
'</div>' +
'<div class="oktell-cookie-actions">' +
'<button type="button" class="oktell-cookie-btn oktell-cookie-decline">Не согласен</button>' +
'<button type="button" class="oktell-cookie-btn oktell-cookie-accept">Согласен</button>' +
'</div>';
document.body.appendChild(banner);
setTimeout(function () {
banner.classList.add('is-visible');
}, 300);
var acceptBtn = banner.querySelector('.oktell-cookie-accept');
var declineBtn = banner.querySelector('.oktell-cookie-decline');
acceptBtn.addEventListener('click', function () {
saveConsent('accepted');
banner.classList.remove('is-visible');
setTimeout(function () {
banner.remove();
}, 300);
if (typeof window.oktellLoadAnalytics === 'function') {
window.oktellLoadAnalytics();
}
});
declineBtn.addEventListener('click', function () {
saveConsent('declined');
banner.classList.remove('is-visible');
setTimeout(function () {
banner.remove();
}, 300);
});
}
document.addEventListener('DOMContentLoaded', createCookieBanner);
})();