« MediaWiki:Vector-2022.js » : différence entre les versions
Apparence
Menu principal epingle par defaut, y compris pour les visiteurs anonymes |
Menu lateral : corriger aussi l'etat de l'en-tete epinglable |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 1 : | Ligne 1 : | ||
/* | /* Affiche le menu principal dans la colonne de gauche pour TOUS les visiteurs. | ||
* | * | ||
* Vector 2022 réserve cet | * Vector 2022 réserve cet affichage aux comptes connectés : la fonctionnalité | ||
* exige REQUIREMENT_LOGGED_IN dans FeatureManagerFactory, et | * exige REQUIREMENT_LOGGED_IN dans FeatureManagerFactory, et le conteneur | ||
* | * latéral ne reçoit alors que son en-tête, sans les liens. Aucune règle CSS ne | ||
* | * peut donc l'obtenir, et le bouton « déplacer vers la barre latérale » de | ||
* l'habillage reste sans effet en anonyme (vérifié). | |||
* | * | ||
* On | * On déplace donc nous-mêmes le menu dans le conteneur latéral. Ce choix est | ||
* | * délibéré plutôt qu'un correctif dans skins/Vector/ : une page wiki survit | ||
* à jour de MediaWiki, | * aux mises à jour de MediaWiki, alors que l'arbre w/ est remplacé en entier. | ||
* | |||
* Les boutons épingler/masquer sont retirés ici plutôt qu'en CSS : la règle de | |||
* Vector a la même spécificité et l'emporte selon l'ordre de chargement des | |||
* feuilles, ce qui rend l'override fragile. | |||
* | |||
* Si une version future de Vector renomme ces classes, le script ne trouvera | |||
* plus ses éléments et le wiki reviendra simplement au menu déroulant : la | |||
* panne est silencieuse mais sans conséquence. | |||
*/ | */ | ||
$( function () { | $( function () { | ||
| Ligne 15 : | Ligne 23 : | ||
if ( !html.classList.contains( 'vector-feature-main-menu-pinned-disabled' ) ) { | if ( !html.classList.contains( 'vector-feature-main-menu-pinned-disabled' ) ) { | ||
return; // déjà | return; // déjà affiché : compte connecté ou préférence enregistrée | ||
} | |||
var menu = document.querySelector( '.vector-main-menu' ); | |||
var cible = document.getElementById( 'vector-main-menu-pinned-container' ); | |||
if ( !menu || !cible ) { | |||
return; | |||
} | } | ||
cible.appendChild( menu ); | |||
html.classList.remove( 'vector-feature-main-menu-pinned-disabled' ); | |||
html.classList.add( 'vector-feature-main-menu-pinned-enabled' ); | |||
if ( | var entete = menu.querySelector( '.vector-main-menu-pinnable-header' ); | ||
button. | if ( entete ) { | ||
entete.classList.remove( 'vector-pinnable-header-unpinned' ); | |||
entete.classList.add( 'vector-pinnable-header-pinned' ); | |||
entete.querySelectorAll( '.vector-pinnable-header-toggle-button' ) | |||
.forEach( function ( bouton ) { | |||
bouton.style.display = 'none'; | |||
} ); | |||
} | } | ||
} ); | } ); | ||
Dernière version du 30 juillet 2026 à 14:14
/* Affiche le menu principal dans la colonne de gauche pour TOUS les visiteurs.
*
* Vector 2022 réserve cet affichage aux comptes connectés : la fonctionnalité
* exige REQUIREMENT_LOGGED_IN dans FeatureManagerFactory, et le conteneur
* latéral ne reçoit alors que son en-tête, sans les liens. Aucune règle CSS ne
* peut donc l'obtenir, et le bouton « déplacer vers la barre latérale » de
* l'habillage reste sans effet en anonyme (vérifié).
*
* On déplace donc nous-mêmes le menu dans le conteneur latéral. Ce choix est
* délibéré plutôt qu'un correctif dans skins/Vector/ : une page wiki survit
* aux mises à jour de MediaWiki, alors que l'arbre w/ est remplacé en entier.
*
* Les boutons épingler/masquer sont retirés ici plutôt qu'en CSS : la règle de
* Vector a la même spécificité et l'emporte selon l'ordre de chargement des
* feuilles, ce qui rend l'override fragile.
*
* Si une version future de Vector renomme ces classes, le script ne trouvera
* plus ses éléments et le wiki reviendra simplement au menu déroulant : la
* panne est silencieuse mais sans conséquence.
*/
$( function () {
var html = document.documentElement;
if ( !html.classList.contains( 'vector-feature-main-menu-pinned-disabled' ) ) {
return; // déjà affiché : compte connecté ou préférence enregistrée
}
var menu = document.querySelector( '.vector-main-menu' );
var cible = document.getElementById( 'vector-main-menu-pinned-container' );
if ( !menu || !cible ) {
return;
}
cible.appendChild( menu );
html.classList.remove( 'vector-feature-main-menu-pinned-disabled' );
html.classList.add( 'vector-feature-main-menu-pinned-enabled' );
var entete = menu.querySelector( '.vector-main-menu-pinnable-header' );
if ( entete ) {
entete.classList.remove( 'vector-pinnable-header-unpinned' );
entete.classList.add( 'vector-pinnable-header-pinned' );
entete.querySelectorAll( '.vector-pinnable-header-toggle-button' )
.forEach( function ( bouton ) {
bouton.style.display = 'none';
} );
}
} );