Valider 50e5f66f rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Intégration du plugin Menu Prive Alpha, suite.

On complète les boutons des menus par l'information "favori" (booleen). Si une entrée de menu favorite est cochée dans les préférences,
cette valeur vaudra `true` dans le bouton, `false` sinon.

On ajoute 2 fonctions pour trier les sous-menus de navigation afin d'avoir soit un tri "par favori, titre alpha" ou simplement "par titre alpha".
On utilise ces fonctions dans les squelettes qui affichent les menus. Dans le bandeau, on met tous les favoris en tête de menu.
parent 952d56d1
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+53 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -138,8 +138,60 @@ function definir_barre_boutons($contexte = array(), $icones = true, $autorise =
			}
		}
	}
	return pipeline('ajouter_menus', $boutons_admin);
	$boutons_admin = pipeline('ajouter_menus', $boutons_admin);

	// définir les favoris
	if ($boutons_admin and $menus_favoris = obtenir_menus_favoris()) {
		foreach ($boutons_admin as $key => $menu) {
			$menu->favori = in_array($key, $menus_favoris);
			if ($menu->sousmenu) {
				foreach ($menu->sousmenu as $key => $bouton) {
					$bouton->favori = in_array($key, $menus_favoris);
				}
			}
		}
	}

	return $boutons_admin;
}

/**
 * Trie les entrées des sous menus par ordre alhabétique
 *
 * @param Bouton[] $menus
 * @param bool $avec_favoris
 *     Si true, tri en premier les sous menus favoris, puis l'ordre alphabétique
 * @return Bouton[]
 */
function trier_boutons_enfants_par_alpha($menus, $avec_favoris = false) {
	foreach ($menus as $menu) {
		if ($menu->sousmenu) {
			$libelles = $favoris = array();
			foreach ($menu->sousmenu as $key => $item) {
				$libelles[$key] = strtolower(translitteration(_T($item->libelle)));
				$favoris[$key] = $item->favori;
			}
			if ($avec_favoris) {
				array_multisort($favoris, SORT_DESC, $libelles, SORT_ASC, $menu->sousmenu);
			} else {
				array_multisort($libelles, SORT_ASC, $menu->sousmenu);
			}
		}
	}
	return $menus;
}

/**
 * Trie les entrées des sous menus par favoris puis ordre alhabétique
 *
 * @uses trier_boutons_enfants_par_alpha()
 * @param Bouton[] $menus
 * @return Bouton[]
 */
function trier_boutons_enfants_par_favoris_alpha($menus) {
	return trier_boutons_enfants_par_alpha($menus, true);
}


/**
 * Créer l'URL à partir de exec et args, sauf si c'est déjà une url formatée
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -16,7 +16,7 @@
			</div>
		</div>]

		#SET{boutons,#ARRAY|definir_barre_boutons{0}}
		#SET{boutons,#ARRAY|definir_barre_boutons{0}|trier_boutons_enfants_par_alpha}
		<div class='menus_favoris fieldset'>
			<fieldset>
				<legend><:titre_preference_menus_favoris:></legend>
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#SET{contexte,#EVAL{definir_barre_contexte()}}
#SET{boutons,#GET{contexte}|definir_barre_boutons{0}}
#SET{boutons,#GET{contexte}|definir_barre_boutons{0}|trier_boutons_enfants_par_favoris_alpha}
<div id="bando_haut" role="navigation">
	<div id="bando_liens_rapides">
		<div class="largeur clearfix">
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#SET{boutons,#ENV**|definir_barre_contexte|definir_barre_boutons{0}}
#SET{boutons,#ENV**|definir_barre_contexte|definir_barre_boutons{0}|trier_boutons_enfants_par_alpha}

<BOUCLE_menu(POUR){tableau #GET{boutons}}{cle=#ENV{menu}}>
[(#ENV{bloc}|=={contenu}|?{