MediaWiki:Common.js: Difference between revisions
Appearance
Remove duplicate Sandbox link: now added server-side (with icon) by the SandboxAccess extension |
Deploy approved WikiCyber corporate theme |
||
| Line 4: | Line 4: | ||
The previous JavaScript version (Special:MyPage/sandbox via mw.util.addPortletLink) was removed to avoid a duplicate link; | The previous JavaScript version (Special:MyPage/sandbox via mw.util.addPortletLink) was removed to avoid a duplicate link; | ||
restore it from this page's history if the extension is ever disabled. */ | restore it from this page's history if the extension is ever disabled. */ | ||
/* BEGIN WikiCyber corporate v1 */ | |||
/* WikiCyber theme enhancements. Native MediaWiki editors/permissions stay intact. */ | |||
mw.loader.using('mediawiki.util').then(function () { | |||
$(function () { | |||
if (!document.body.classList.contains('skin-vector-2022')) return; | |||
var base = mw.util.getUrl('Main Page'); | |||
var terms = mw.util.getUrl('WikiCyber:Terms of Use'); | |||
var logo = document.querySelector('.mw-logo-container'); | |||
if (logo && !logo.querySelector('.wc-slogan')) { | |||
var slogan = document.createElement('span'); slogan.className = 'wc-slogan'; | |||
slogan.textContent = 'Knowledge for a safer digital world'; logo.append(slogan); | |||
} | |||
function link(label, href) { var a = document.createElement('a'); a.textContent = label; a.href = href; return a; } | |||
var header = document.querySelector('.vector-header-start'); | |||
if (header) { | |||
var nav = document.createElement('nav'); nav.className = 'wc-header-nav'; nav.setAttribute('aria-label', 'Primary'); | |||
nav.append(link('Knowledge base', base + '#topics'), link('Resources', mw.util.getUrl('Special:AllPages')), link('Contribute', mw.util.getUrl('Help:Your first article'))); | |||
header.after(nav); | |||
} | |||
var icons = document.querySelector('#footer-icons'); | |||
if (icons) { | |||
var li = document.createElement('li'); | |||
var sre = link('', 'https://kirillshore.com'); sre.className = 'wc-sre-logo'; | |||
var image = document.createElement('img'); image.src = '/images/branding/theme-v1/shore-roger-logo.svg'; image.alt = 'Shore-Roger Enterprises'; image.width = 124; image.height = 48; | |||
sre.append(image); li.append(sre); icons.append(li); | |||
} | |||
// This acknowledgement is browser-local; it does not gate access or create a legal audit record. | |||
var key = 'wikicyber-terms-revision-253', bar = document.createElement('section'); | |||
bar.className = 'wc-terms-bar'; bar.setAttribute('aria-labelledby', 'wc-terms-heading'); | |||
var copy = document.createElement('div'), heading = document.createElement('h2'), description = document.createElement('p'); | |||
heading.id = 'wc-terms-heading'; heading.textContent = 'Terms of Use & cookies'; | |||
description.append('By selecting “Accept and continue,” you agree to the ', link('Terms of Use', terms), '. Essential cookies only.'); | |||
copy.append(heading, description); | |||
var actions = document.createElement('div'); actions.className = 'wc-terms-actions'; | |||
var accept = document.createElement('button'); accept.type = 'button'; accept.textContent = 'Accept and continue'; | |||
actions.append(link('Read the terms', terms), accept); bar.append(copy, actions); document.body.append(bar); | |||
var reset = document.createElement('button'); reset.type = 'button'; reset.className = 'wc-terms-reset'; reset.textContent = 'Terms & cookies'; | |||
var footer = document.querySelector('#footer'); if (footer) footer.append(reset); | |||
var originalPadding = document.body.style.paddingBottom; | |||
function spacing() { document.body.style.paddingBottom = bar.hidden ? originalPadding : bar.offsetHeight + 16 + 'px'; } | |||
function display(show) { bar.hidden = !show; spacing(); } | |||
var accepted = false; try { accepted = localStorage.getItem(key) === 'accepted'; } catch (e) { /* Storage optional. */ } | |||
display(!accepted); | |||
new ResizeObserver(spacing).observe(bar); | |||
accept.addEventListener('click', function () { try { localStorage.setItem(key, 'accepted'); } catch (e) { /* Dismiss for this page. */ } display(false); reset.focus({ preventScroll: true }); }); | |||
reset.addEventListener('click', function () { try { localStorage.removeItem(key); } catch (e) { /* Storage optional. */ } display(true); accept.focus({ preventScroll: true }); }); | |||
}); | |||
}); | |||
/* END WikiCyber corporate v1 */ | |||
Revision as of 20:14, 16 October 2026
/* Any JavaScript here will be loaded for all users on every page load. */
/* The personal-menu "Sandbox" link (with icon) is now added server-side by the SandboxAccess extension.
The previous JavaScript version (Special:MyPage/sandbox via mw.util.addPortletLink) was removed to avoid a duplicate link;
restore it from this page's history if the extension is ever disabled. */
/* BEGIN WikiCyber corporate v1 */
/* WikiCyber theme enhancements. Native MediaWiki editors/permissions stay intact. */
mw.loader.using('mediawiki.util').then(function () {
$(function () {
if (!document.body.classList.contains('skin-vector-2022')) return;
var base = mw.util.getUrl('Main Page');
var terms = mw.util.getUrl('WikiCyber:Terms of Use');
var logo = document.querySelector('.mw-logo-container');
if (logo && !logo.querySelector('.wc-slogan')) {
var slogan = document.createElement('span'); slogan.className = 'wc-slogan';
slogan.textContent = 'Knowledge for a safer digital world'; logo.append(slogan);
}
function link(label, href) { var a = document.createElement('a'); a.textContent = label; a.href = href; return a; }
var header = document.querySelector('.vector-header-start');
if (header) {
var nav = document.createElement('nav'); nav.className = 'wc-header-nav'; nav.setAttribute('aria-label', 'Primary');
nav.append(link('Knowledge base', base + '#topics'), link('Resources', mw.util.getUrl('Special:AllPages')), link('Contribute', mw.util.getUrl('Help:Your first article')));
header.after(nav);
}
var icons = document.querySelector('#footer-icons');
if (icons) {
var li = document.createElement('li');
var sre = link('', 'https://kirillshore.com'); sre.className = 'wc-sre-logo';
var image = document.createElement('img'); image.src = '/images/branding/theme-v1/shore-roger-logo.svg'; image.alt = 'Shore-Roger Enterprises'; image.width = 124; image.height = 48;
sre.append(image); li.append(sre); icons.append(li);
}
// This acknowledgement is browser-local; it does not gate access or create a legal audit record.
var key = 'wikicyber-terms-revision-253', bar = document.createElement('section');
bar.className = 'wc-terms-bar'; bar.setAttribute('aria-labelledby', 'wc-terms-heading');
var copy = document.createElement('div'), heading = document.createElement('h2'), description = document.createElement('p');
heading.id = 'wc-terms-heading'; heading.textContent = 'Terms of Use & cookies';
description.append('By selecting “Accept and continue,” you agree to the ', link('Terms of Use', terms), '. Essential cookies only.');
copy.append(heading, description);
var actions = document.createElement('div'); actions.className = 'wc-terms-actions';
var accept = document.createElement('button'); accept.type = 'button'; accept.textContent = 'Accept and continue';
actions.append(link('Read the terms', terms), accept); bar.append(copy, actions); document.body.append(bar);
var reset = document.createElement('button'); reset.type = 'button'; reset.className = 'wc-terms-reset'; reset.textContent = 'Terms & cookies';
var footer = document.querySelector('#footer'); if (footer) footer.append(reset);
var originalPadding = document.body.style.paddingBottom;
function spacing() { document.body.style.paddingBottom = bar.hidden ? originalPadding : bar.offsetHeight + 16 + 'px'; }
function display(show) { bar.hidden = !show; spacing(); }
var accepted = false; try { accepted = localStorage.getItem(key) === 'accepted'; } catch (e) { /* Storage optional. */ }
display(!accepted);
new ResizeObserver(spacing).observe(bar);
accept.addEventListener('click', function () { try { localStorage.setItem(key, 'accepted'); } catch (e) { /* Dismiss for this page. */ } display(false); reset.focus({ preventScroll: true }); });
reset.addEventListener('click', function () { try { localStorage.removeItem(key); } catch (e) { /* Storage optional. */ } display(true); accept.focus({ preventScroll: true }); });
});
});
/* END WikiCyber corporate v1 */