MediaWiki:Common.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */
function moveSearchBar( $content ) {
// Sélectionner l'élément #p-search
var pSearchElement = document.getElementById('p-search');
// Sélectionner l'élément #mw-page-base
var mwPageBaseElement = document.getElementById('mw-page-base');
// Vérifier si les deux éléments existent
if (pSearchElement && mwPageBaseElement) {
// Déplacer #p-search avant #mw-page-base
mwPageBaseElement.parentNode.insertBefore(pSearchElement, mwPageBaseElement);
// Ajouter display: block à #p-search
pSearchElement.style.display = 'block';
}
}
mw.hook( 'wikipage.content' ).add( moveSearchBar );
$(document).ready(function() {
// Copier le sommaire dans le menu latéral en supprimant les éléments toc-level-2
var toc = $('#toc');
var sidetoc = toc.clone().attr('id', 'sidetoc');
sidetoc.find('.toclevel-2').remove();
var panel = $('#mw-panel');
panel.append(sidetoc);
$('#sidetoc').hide();
});
$(window).scroll(function() {
var breadcrumb = $(document).find('#fil-ariane');
var mwPanelElement = $('#mw-panel');
var mwPanelOffset = mwPanelElement.offset().top + mwPanelElement.outerHeight();
var scrollTop = $(window).scrollTop();
if (mwPanelOffset < scrollTop) {
if (breadcrumb.length) {
var breadcrumbHeight = $('#fil-ariane').height();
var sidetocOffset = breadcrumbHeight;
$('#sidetoc').css('top', sidetocOffset + 'px');
$('#sidetoc').show();
} else {
$('#sidetoc').show();
}
} else {
$('#sidetoc').hide();
}
});
$(document).ready(function() {
var h2Elements = $('#bodyContent h2');
var toctextElements = $('#sidetoc .toclevel-1 a .toctext');
function updateActiveElement() {
var activeElementIndex = -1;
var mouseY = $(window).scrollTop() + $(window).height() / 2;
h2Elements.each(function(index) {
var currentH2 = $(this);
var nextH2 = h2Elements.eq(index + 2);
var currentH2Offset = currentH2.offset().top;
var nextH2Offset = nextH2.length ? nextH2.offset().top : $(document).height();
if (currentH2Offset <= mouseY && nextH2Offset > mouseY) {
activeElementIndex = index;
return false; // Sortir de la boucle each
}
});
// Appliquer le style aux éléments du sommaire en fonction de l'élément actif
toctextElements.removeClass('active');
if (activeElementIndex !== -1) {
toctextElements.eq(activeElementIndex).addClass('active');
}
}
$(window).scroll(function() {
updateActiveElement();
});
$(window).mousemove(function() {
updateActiveElement();
});
});
/* Pour créer un menu déroulant dans la barre personnelle */
function personalDropdown() {
// Toujours forcer l’affichage inline du bloc #p-personal
var personalBlock = document.getElementById('p-personal');
if (personalBlock) {
personalBlock.style.display = 'inline';
}
// Vérifier si l’utilisateur est connecté ou anonyme
var userPage = document.getElementById('pt-userpage');
if (userPage) {
// Cas utilisateur connecté
var ul = document.querySelector('.vector-menu-content-list');
var startElement = document.getElementById('pt-mytalk');
var endElement = document.getElementById('pt-logout');
var dropdownLi = document.createElement('li');
dropdownLi.style.position = 'relative';
dropdownLi.style.paddingTop = '2px';
var dropdownLink = document.createElement('a');
dropdownLink.href = '#';
dropdownLink.style.cursor = 'pointer';
dropdownLink.style.height = '24px';
dropdownLink.style.display = 'inline-block';
var avatarSpan = document.createElement('span');
avatarSpan.style.backgroundImage = 'linear-gradient(transparent,transparent),url(/w/skins/Vector/resources/skins.vector.styles/images/user-avatar.svg?b7f58)';
avatarSpan.style.backgroundRepeat = 'no-repeat';
avatarSpan.style.width = '24px';
avatarSpan.style.height = '26px';
avatarSpan.style.display = 'inline-block';
avatarSpan.style.opacity = '0.85';
var arrowSpan = document.createElement('span');
arrowSpan.style.backgroundImage = 'linear-gradient(transparent,transparent),url(/w/skins/Vector/resources/skins.vector.styles/images/arrow-down.svg?e7827)';
arrowSpan.style.height = '20px';
arrowSpan.style.width = '12px';
arrowSpan.style.display = 'inline-block';
arrowSpan.style.backgroundRepeat = 'no-repeat';
arrowSpan.style.opacity = '0.85';
dropdownLink.appendChild(avatarSpan);
dropdownLink.appendChild(arrowSpan);
dropdownLi.appendChild(dropdownLink);
var dropdownMenu = document.createElement('ul');
dropdownMenu.style.display = 'none';
dropdownMenu.className = 'pt-dropdown';
var currentElement = startElement;
while (currentElement && currentElement !== endElement.nextElementSibling) {
var nextElement = currentElement.nextElementSibling;
dropdownMenu.appendChild(currentElement);
currentElement = nextElement;
}
dropdownLi.appendChild(dropdownMenu);
var notificationsNotice = document.getElementById('pt-notifications-notice');
notificationsNotice.parentNode.insertBefore(dropdownLi, notificationsNotice.nextSibling);
dropdownLink.onclick = function(e) {
e.preventDefault();
if (dropdownMenu.style.display === 'block') {
dropdownMenu.style.display = 'none';
} else {
dropdownMenu.style.display = 'block';
}
};
document.addEventListener('click', function(e) {
if (!dropdownLi.contains(e.target)) {
dropdownMenu.style.display = 'none';
}
});
} else {
// Cas utilisateur anonyme
var ul = document.querySelector('.vector-menu-content-list');
var startElement = document.getElementById('pt-anontalk');
var endElement = document.getElementById('pt-login');
var dropdownLi = document.createElement('li');
dropdownLi.style.position = 'relative';
dropdownLi.style.paddingTop = '2px';
var dropdownLink = document.createElement('a');
dropdownLink.href = '#';
dropdownLink.style.cursor = 'pointer';
dropdownLink.style.height = '24px';
dropdownLink.style.display = 'inline-block';
var avatarSpan = document.createElement('span');
avatarSpan.style.backgroundImage = 'linear-gradient(transparent,transparent),url(/w/skins/Vector/resources/skins.vector.styles/images/user-avatar.svg?b7f58)';
avatarSpan.style.backgroundRepeat = 'no-repeat';
avatarSpan.style.height = '21px';
avatarSpan.style.width = '24px';
avatarSpan.style.display = 'inline-block';
avatarSpan.style.opacity = '0.85';
var arrowSpan = document.createElement('span');
arrowSpan.style.backgroundImage = 'linear-gradient(transparent,transparent),url(/w/skins/Vector/resources/skins.vector.styles/images/arrow-down.svg?e7827)';
arrowSpan.style.height = '21px';
arrowSpan.style.width = '12px';
arrowSpan.style.display = 'inline-block';
arrowSpan.style.backgroundRepeat = 'no-repeat';
arrowSpan.style.verticalAlign = 'middle';
arrowSpan.style.opacity = '0.85';
dropdownLink.appendChild(avatarSpan);
dropdownLink.appendChild(arrowSpan);
dropdownLi.appendChild(dropdownLink);
var dropdownMenu = document.createElement('ul');
dropdownMenu.style.display = 'none';
dropdownMenu.className = 'pt-dropdown';
var currentElement = startElement;
while (currentElement && currentElement !== endElement.nextElementSibling) {
var nextElement = currentElement.nextElementSibling;
dropdownMenu.appendChild(currentElement);
currentElement = nextElement;
}
dropdownLi.appendChild(dropdownMenu);
var anonUserPage = document.getElementById('pt-anonuserpage');
anonUserPage.parentNode.insertBefore(dropdownLi, anonUserPage.nextSibling);
dropdownLink.onclick = function(e) {
e.preventDefault();
if (dropdownMenu.style.display === 'block') {
dropdownMenu.style.display = 'none';
} else {
dropdownMenu.style.display = 'block';
}
};
document.addEventListener('click', function(e) {
if (!dropdownLi.contains(e.target)) {
dropdownMenu.style.display = 'none';
}
});
}
}
personalDropdown();
/* global mw, $ */
(function () {
function buildLangMenu() {
var $userPageItem = $('#pt-userpage');
if (!$userPageItem.length) {
return;
}
// ✅ Si aucun lien interlangue, on arrête tout
var $interwikiLinks = $('li.interlanguage-link');
if ($interwikiLinks.length === 0) {
clearInterval(waitForReady);
return;
}
/* -------- Construction du bloc -------- */
var $menuWrapper = $('<div>').addClass('menu-langues');
var $icon = $('<span>').addClass('menu-langues-icon');
var $toggle = $('<span>')
.addClass('menu-langues-toggle')
.text('Deutsch');
// Remplace ul par un div
var $dropdown = $('<div>')
.addClass('languages-dropdown')
.css('display', 'none');
var $header = $('<div>')
.addClass('langues-disponibles')
.text($interwikiLinks.length > 0 ? 'Andere Sprachen' : 'Keine weiteren Sprachen verfügbar')
.css('cursor', 'default');
$dropdown.append($header);
// Nouveau <ul> pour y insérer les liens interlangues
if ($interwikiLinks.length > 0) {
var $list = $('<ul>');
$interwikiLinks.appendTo($list);
$dropdown.append($list);
}
/* -------- Bouton « Modifier les liens interlangues » -------- */
var $editButton = $('#bouton-modifier-interlangue');
if ($editButton.length) {
var $link = $editButton.find('a').first();
if ($link.length) {
var $newLink = $link.clone()
.text('Modifier les liens interlangues')
.css({
color: 'inherit',
textDecoration: 'none',
cursor: 'pointer'
});
$('<div>')
.addClass('modifier-langues')
.append($newLink)
.appendTo($dropdown);
}
$editButton.remove();
}
/* -------- Assemblage final -------- */
$menuWrapper
.append($icon)
.append($toggle)
.append($dropdown);
$userPageItem.before($menuWrapper);
/* -------- Comportement déroulant -------- */
$menuWrapper.on('click', function (e) {
e.stopPropagation();
$dropdown.toggle();
$menuWrapper.toggleClass('open');
});
$(document).on('click', function () {
$dropdown.hide();
$menuWrapper.removeClass('open');
});
clearInterval(waitForReady);
}
var waitForReady = setInterval(buildLangMenu, 300);
})();