diff --git a/.gitattributes b/.gitattributes index 0b37299e8e5d005d9b4a62014fead79eb0bab18e..752b9f9f141df2411806709db02a131e5a91e734 100644 --- a/.gitattributes +++ b/.gitattributes @@ -326,6 +326,8 @@ prive/formulaires/configurer_multilinguisme.html -text prive/formulaires/configurer_multilinguisme.php -text prive/formulaires/configurer_preferences.html -text prive/formulaires/configurer_preferences.php -text +prive/formulaires/configurer_preferences_menus.html -text +prive/formulaires/configurer_preferences_menus.php -text prive/formulaires/configurer_previsualiseur.html -text prive/formulaires/configurer_previsualiseur.php -text prive/formulaires/configurer_redacteurs.html -text diff --git a/ecrire/inc/bandeau.php b/ecrire/inc/bandeau.php index 27f49a1cf70807a8b15f9fdda7fc54eaea0b77d7..339ec5d4adb970d56bda087e6bdf9cf4e504a297 100644 --- a/ecrire/inc/bandeau.php +++ b/ecrire/inc/bandeau.php @@ -178,3 +178,18 @@ function bandeau_creer_url($url, $args = '', $contexte = null) { function inc_bandeau_dist() { return recuperer_fond('prive/squelettes/inclure/barre-nav', $_GET); } + + +/** + * Retourne la liste des noms d'entrées de menus favoris de l'auteur connecté + * @return array + */ +function obtenir_menus_favoris() { + if ( + isset($GLOBALS['visiteur_session']['prefs']['menus_favoris']) + and is_array($GLOBALS['visiteur_session']['prefs']['menus_favoris']) + ) { + return $GLOBALS['visiteur_session']['prefs']['menus_favoris']; + } + return array(); +} \ No newline at end of file diff --git a/ecrire/lang/ecrire_fr.php b/ecrire/lang/ecrire_fr.php index b480d2e724588ed9f0597cf8f3ec89e97e2ed125..e6f6aac809777226628fadf27ddb48ecc94a6f84 100644 --- a/ecrire/lang/ecrire_fr.php +++ b/ecrire/lang/ecrire_fr.php @@ -882,6 +882,7 @@ avez fait des modifications importantes de graphisme ou de structure du site.', 'titre_config_langage' => 'Configurer la langue', 'titre_configuration' => 'Configuration du site', 'titre_configurer_preferences' => 'Configurer vos préférences', + 'titre_configurer_preferences_menus' => 'Configurer vos menus', 'titre_conflit_edition' => 'Conflit lors de l’édition', 'titre_connexion_ldap' => 'Options : <b>Votre connexion LDAP</b>', 'titre_groupe_mots' => 'GROUPE DE MOTS :', @@ -903,6 +904,7 @@ avez fait des modifications importantes de graphisme ou de structure du site.', 'titre_page_recherche' => 'Résultats de la recherche @recherche@', 'titre_page_statistiques_referers' => 'Statistiques (liens entrants)', 'titre_page_upgrade' => 'Mise à niveau de SPIP', + 'titre_preference_menus_favoris' => 'Menus favoris', 'titre_publication_articles_post_dates' => 'Publication des articles post-datés', 'titre_reparation' => 'Réparation', 'titre_suivi_petition' => 'Suivi des pétitions', diff --git a/prive/formulaires/configurer_preferences_menus.html b/prive/formulaires/configurer_preferences_menus.html new file mode 100644 index 0000000000000000000000000000000000000000..c0aab7622a4b00eb85aace72d89826d0620133e3 --- /dev/null +++ b/prive/formulaires/configurer_preferences_menus.html @@ -0,0 +1,36 @@ +<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> + <h3 class='titrem'><:titre_configurer_preferences_menus:></h3> + [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] + [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] + + <form method='post' action='#ENV{action}'><div> + #ACTION_FORMULAIRE + + #SET{boutons,#ARRAY|definir_barre_boutons{0}} + <div class='menus_favoris fieldset'> + <fieldset> + <legend><:titre_preference_menus_favoris:></legend> + <div class="editer-groupe deux_colonnes"> + <BOUCLE_menu(DATA){source tableau, #GET{boutons}}{cle LIKE 'menu_%'}{cle !IN #LISTE{menu_accueil}}> + <B_menusous> + <div class="editer menus_favoris pleine_largeur"> + <label>[(#LIBELLE|_T)]</label> + [<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"]> + <label for="menu_fav_#CLE">[(#LIBELLE|_T)]</label> + </div> + </BOUCLE_menusous> + </div> + </B_menusous> + </BOUCLE_menu> + </div> + </fieldset> + </div> + + [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + <!--extra--> + <p class='boutons'><span class='image_loading'> </span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p> + </div></form> +</div> diff --git a/prive/formulaires/configurer_preferences_menus.php b/prive/formulaires/configurer_preferences_menus.php new file mode 100644 index 0000000000000000000000000000000000000000..a243828ee91c1fa2c44c50633237095fea2c02e4 --- /dev/null +++ b/prive/formulaires/configurer_preferences_menus.php @@ -0,0 +1,66 @@ +<?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. * +\***************************************************************************/ + +/** + * Formulaire de configuration des préférences auteurs dans l'espace privé + * + * Ces préférences sont stockées dans la clé `prefs` dans la session de l'auteur + * en tant que tableau, ainsi que dans la colonne SQL `prefs` de spip_auteurs + * sous forme sérialisée. + * + * @package SPIP\Core\Formulaires + **/ + +include_spip('inc/bandeau'); + + +/** + * Chargement du formulaire de préférence des menus d'un auteur dans l'espace privé + * + * @return array + * Environnement du formulaire + **/ +function formulaires_configurer_preferences_menus_charger_dist() { + // travailler sur des meta fraîches + include_spip('inc/meta'); + lire_metas(); + $valeurs = array(); + $valeurs['menus_favoris'] = obtenir_menus_favoris(); + return $valeurs; +} + +/** + * Traitements du formulaire de préférence des menus d'un auteur dans l'espace privé + * + * @return array + * Retours des traitements + **/ +function formulaires_configurer_preferences_menus_traiter_dist() { + + $menus_favoris = _request('menus_favoris'); + + // si le menu change, on recharge toute la page. + if ($menus_favoris != obtenir_menus_favoris()) { + refuser_traiter_formulaire_ajax(); + + $GLOBALS['visiteur_session']['prefs']['menus_favoris'] = $menus_favoris; + + if (intval($GLOBALS['visiteur_session']['id_auteur'])) { + include_spip('action/editer_auteur'); + $c = array('prefs' => serialize($GLOBALS['visiteur_session']['prefs'])); + auteur_modifier($GLOBALS['visiteur_session']['id_auteur'], $c); + + } + } + + return array('message_ok' => _T('config_info_enregistree'), 'editable' => true); +} diff --git a/prive/squelettes/contenu/configurer_preferences.html b/prive/squelettes/contenu/configurer_preferences.html index d08e760ac0634fb2260a9af6d864c3a7d3d8e279..546e75cb8a524b4f2d114a9ffab1e60a3c54292c 100644 --- a/prive/squelettes/contenu/configurer_preferences.html +++ b/prive/squelettes/contenu/configurer_preferences.html @@ -1,4 +1,8 @@ <!-- <h1 class="grostitre"><:icone_mes_preferences:></h1> --> <div class="ajax"> #FORMULAIRE_CONFIGURER_PREFERENCES +</div> + +<div class="ajax"> + #FORMULAIRE_CONFIGURER_PREFERENCES_MENUS </div> \ No newline at end of file diff --git a/prive/themes/spip/forms.css.html b/prive/themes/spip/forms.css.html index 6b65026da62c3c0d311d4315e03c49a9c8f25750..21c87b2a179cc2f65eeb42d8e3b1ffd5aef2a547 100644 --- a/prive/themes/spip/forms.css.html +++ b/prive/themes/spip/forms.css.html @@ -65,6 +65,8 @@ h3.titrem {position:relative;} .formulaire_spip .editer {padding: [(#ENV{margin-bottom}|floatval|div{2})em] 10px;clear:both;overflow:hidden;} +.formulaire_spip .editer-groupe.deux_colonnes { -webkit-column-count: 2; -moz-column-count: 2; column-count: 2; } + /* label -----*/ /* Formulaires alignes a gauche c'est le par defaut des formulaires de Spip */