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

Ticket #3943 : Améliorer la gestion des menus favoris de l'espace privé :

- des menus favoris sont définis déjà dans une fonction (surchargeable) definir_menus_favoris() et ordonnés.
- les préférences auteurs peuvent modifier ces favoris et les ordonner selon leur choix (un JS aide en cliquant les labels)
- il est possible dans le formulaire de préférence de revenir aux valeurs de menus favoris par défaut
parent 4b360891
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -99,6 +99,7 @@ ecrire/inc/csv.php -text
ecrire/inc/cvt_autosave.php -text
ecrire/inc/cvt_configurer.php -text
ecrire/inc/cvt_multietapes.php -text
ecrire/inc/definir_menus_favoris.php -text
ecrire/inc/distant.php -text
ecrire/inc/drapeau_edition.php -text
ecrire/inc/editer.php -text
+9 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -144,10 +144,10 @@ function definir_barre_boutons($contexte = array(), $icones = true, $autorise =
	if ($boutons_admin) {
		$menus_favoris = obtenir_menus_favoris();
		foreach ($boutons_admin as $key => $menu) {
			$menu->favori = in_array($key, $menus_favoris);
			$menu->favori = table_valeur($menus_favoris, $key, false);
			if ($menu->sousmenu) {
				foreach ($menu->sousmenu as $key => $bouton) {
					$bouton->favori = in_array($key, $menus_favoris);
					$bouton->favori = table_valeur($menus_favoris, $key, false);
				}
			}
		}
@@ -167,13 +167,14 @@ function definir_barre_boutons($contexte = array(), $icones = true, $autorise =
function trier_boutons_enfants_par_alpha($menus, $avec_favoris = false) {
	foreach ($menus as $menu) {
		if ($menu->sousmenu) {
			$libelles = $favoris = array();
			$libelles = $isfavoris = $favoris = array();
			foreach ($menu->sousmenu as $key => $item) {
				$libelles[$key] = strtolower(translitteration(_T($item->libelle)));
				$isfavoris[$key] = (bool)$item->favori;
				$favoris[$key] = $item->favori;
			}
			if ($avec_favoris) {
				array_multisort($favoris, SORT_DESC, $libelles, SORT_ASC, $menu->sousmenu);
				array_multisort($isfavoris, SORT_DESC, $favoris, SORT_ASC, $libelles, SORT_ASC, $menu->sousmenu);
			} else {
				array_multisort($libelles, SORT_ASC, $menu->sousmenu);
			}
@@ -183,7 +184,7 @@ function trier_boutons_enfants_par_alpha($menus, $avec_favoris = false) {
}

/**
 * Trie les entrées des sous menus par favoris puis ordre alhabétique
 * Trie les entrées des sous menus par favoris (selon leur ordre) puis les autres par ordre alhabétique
 *
 * @uses trier_boutons_enfants_par_alpha()
 * @param Bouton[] $menus
@@ -241,8 +242,10 @@ function obtenir_menus_favoris() {
	if (
		isset($GLOBALS['visiteur_session']['prefs']['menus_favoris'])
		and is_array($GLOBALS['visiteur_session']['prefs']['menus_favoris'])
		and $GLOBALS['visiteur_session']['prefs']['menus_favoris']
	) {
		return $GLOBALS['visiteur_session']['prefs']['menus_favoris'];
	}
	return array();
	$definir_menus_favoris = charger_fonction('definir_menus_favoris', 'inc');
	return $definir_menus_favoris();
}
 No newline at end of file
+40 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2016                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

/**
 * Ce fichier gère les favoris par défaut dans le menu du bandeau
 *
 * @package SPIP\Core\Bandeau
 **/

/**
 * Retourne la liste des menus favoris par défaut ainsi que leur rang
 */
function inc_definir_menus_favoris_dist() {
	$liste = array(

		// Menu Édition,
		'auteurs' => 1,
		'rubriques' => 2,
		'articles' => 3,

		// Menu Maintenance
		'admin_vider' => 1,

		// Menu Configurations
		'configurer_identite' => 1,
		'admin_plugin' => 2,

	);

	return $liste;
}
 No newline at end of file
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -60,6 +60,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Ne pas apparaître dans la liste des rédacteurs',
	'bouton_radio_non_envoi_annonces_editoriales' => 'Ne pas envoyer d’annonces éditoriales',
	'bouton_redirection' => 'REDIRECTION',
	'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Réinitialiser aux valeurs par défaut',
	'bouton_relancer_installation' => 'Relancer l’installation',
	'bouton_reset_password' => 'Générer un nouveau mot de passe et l\'envoyer par email',
	'bouton_suivant' => 'Suivant',
+45 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -28,7 +28,7 @@
							[<span class='erreur_message'>(#ENV{erreurs/menus_favoris})</span>]
							<BOUCLE_menusous(DATA){source tableau, #SOUSMENU}>
							<div class="item choix">
								<input class='checkbox' type="checkbox" name="menus_favoris[]" value="#CLE" id="menu_fav_#CLE"[(#CLE|in_any{#ENV{menus_favoris}}|oui)checked="checked"]>
								<input class='text positionner' type="text" name="menus_favoris[#CLE]" value="#ENV{menus_favoris/#CLE}" id="menu_fav_#CLE" size="1">
								<label for="menu_fav_#CLE">[(#LIBELLE|_T)]</label>
							</div>
							</BOUCLE_menusous>
@@ -41,6 +41,49 @@

		[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
		<!--extra-->
		<p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
		<p class='boutons'>
			<span class='image_loading'>&nbsp;</span>
			<input type='submit' name="reset" class='submit' value='<:bouton_reinitialiser_aux_valeurs_par_defaut:>' />
			<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
		</p>
	</div></form>
</div>
<style type="text/css">
	.formulaire_spip .choix .positionner {
		width:2.2em;
		text-align:right;
	}
</style>
<script type="text/javascript">
jQuery(function($) {
	$('.formulaire_#FORM form').on('click', '.choix label', function(){
		var $me = $(this);
		var $parent = $me.closest('.editer');
		var $input = $me.siblings('.positionner');
		if ($input.val()) {
			$input.val("");
			var trier = [];
			$parent.find('.positionner').each(function(){
				if ($(this).val()) {
					trier.push({id: $(this).attr('id'), val: parseInt($(this).val()) });
				}
			});
			trier.sort(function(a,b) { return a.val - b.val; });
			var i = 1;
			$.each(trier, function(k, a) {
				$parent.find('#' + a.id).val(i);
				i++;
			});
		} else {
			var max = 0;
			$parent.find('.positionner').each(function(){
				if ($(this).val() > max) {
					max = $(this).val();
				}
			});
			$input.val(parseInt(max) + 1);
		}
		return false;
	});
});
</script>
 No newline at end of file
Chargement en cours