Skip to content

Poursuivre le refactoring du bandeau

En marge de spip#5566 et spip#5984 (déplacé), j'ai commencé à regarder le code sous-jacent qui pilote les menus déroulants du bandeau.

On a un assortiment de squelettes, de code PHP legacy de requête xhr au survol, et du code jQuery, qui, comme déjà évoqué, qui gagnerait à être revu/simplifié, grâce au CSS notamment.

Le cas du bouton boutonbandeautoutsite est celui qui concentre le plus de problèmes à mon avis.

En tant qu'élément de premier niveau de #bandeau_identite avec du sous-contenu, il est sensé déployer un sous-menu au clic | focus | survol si l'on s'en tient aux recommandations d'accessibilité, c'est-à-dire que l'item a doit être suivi d'un button[hidden] qui pilote ouverture/fermeture du sous-menu (@nicod reprend moi si j'ai tord).

Au passage, j'ai toujours été étonné de voir un bon nombre de personnes - après plusieurs années de pratique de SPIP - s'extasier lorsque je leur montrais la fonctionnalité "cachée" derrière le simple clic du bouton boutonbandeautoutsite.

Ainsi, en l'état :

  • pas d'élément button
  • mouseenter -> chargement dynamique du contenu du sous-menu (== toutes les sous-rubriques)
  • clic -> changement de page vers exec=plan
  • focus -> ouverture du sous-menu resté quasi vide si pas de mouseenter préalable

Tout ça pour dire, qu'amha, spip#5984 (déplacé) devrait être incorpopré dans une proposition de refactoring plus général avec :

  • passage intégral en squelettes (+ fichier_fonctions.php si besoin) en adaptant le markup avec bouton d'accessibilité
  • suppression du code legacy dans ecrire/action/menu_rubriques.php
  • effets/animations déportés au maximum en CSS
  • boutonbandeautoutsite à l'usage ambigu devrait être revu et contenir 2 entrées distinctes :

Proposition :

[Icône tout le site]
 ├── Accéder aux rubriques
 └── Réorganiser le contenu

[Icône tout le site] : ne fait que ouvrir/fermer les éléments du sous-menu

[Accéder aux rubriques] : un clic provoque l'ouverture d'une mediabox latérale pour afficher l'arborescence verticalemenent.

  • On peut peaufiner le comportement en provoquant un scroll interne (si sous-sous-sous-sous-rubrique) de sorte que la rubrique en cours se retrouve visuellement proche (sur la même ligne visuelle) que le bouton (== le curseur soursis) qui vient d'ếtre cliqué. On peut envisager de "replier" par défaut les rubriques ancêtres et filles à (n+2) pour le cas des arborescences très abondantes.
  • On propage le focus en entrant et sortant de la sidebar mediabox, pour préserver la navigation au clavier.
  • On évite ainsi d'empiler les deroulants__sous-menu imbriqués.
  • On rend cette partie de la navigation sans doute beaucoup plus agréable/accessible sur petit écran.

[Réorganiser le contenu] : lien classique vers exec=plan