2be723656c967853267bcf6f0560075cf242c0aa
[lhc/web/www.git] / www / ecrire / balise / menu_lang_ecrire.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Ce fichier gère la balise dynamique `#MENU_LANG_ECRIRE`
15 *
16 * @package SPIP\Core\Compilateur\Balises
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 /**
24 * Compile la balise dynamique `#MENU_LANG_ECRIRE` qui affiche
25 * un sélecteur de langue pour l'interface privée
26 *
27 * Affiche le menu des langues de l'espace privé
28 * et présélectionne celle la globale `$lang`
29 * ou de l'arguemnt fourni: `#MENU_LANG_ECRIRE{#ENV{malangue}}`
30 *
31 * @balise
32 * @link http://www.spip.net/4626
33 *
34 * @param Champ $p
35 * Pile au niveau de la balise
36 * @return Champ
37 * Pile complétée du code compilé
38 **/
39 function balise_MENU_LANG_ECRIRE($p) {
40 return calculer_balise_dynamique($p, 'MENU_LANG_ECRIRE', array('lang'));
41 }
42
43 /**
44 * Calculs de paramètres de contexte automatiques pour la balise MENU_LANG_ECRIRE
45 *
46 * S'il n'y a qu'une langue proposée, pas besoin du formulaire
47 * (éviter une balise ?php inutile)
48 *
49 * @param array $args
50 * Liste des arguments demandés obtenus du contexte (lang)
51 * complétés de ceux fournis à la balise
52 * @param array $context_compil
53 * Tableau d'informations sur la compilation
54 * @return array
55 * Liste (lang) des arguments collectés et fournis.
56 */
57 function balise_MENU_LANG_ECRIRE_stat($args, $context_compil) {
58 include_spip('inc/lang');
59 if (strpos($GLOBALS['meta']['langues_proposees'], ',') === false) {
60 return '';
61 }
62
63 return $args;
64 }
65
66 /**
67 * Exécution de la balise dynamique `#MENU_LANG_ECRIRE`
68 *
69 * @uses menu_lang_pour_tous()
70 * @note
71 * Normalement `$opt` sera toujours non vide suite au test ci-dessus
72 *
73 * @param string $opt
74 * Langue par défaut
75 * @return array
76 * Liste : Chemin du squelette, durée du cache, contexte
77 **/
78 function balise_MENU_LANG_ECRIRE_dyn($opt) {
79 return menu_lang_pour_tous('var_lang_ecrire', $opt);
80 }
81
82 /**
83 * Calcule l'environnement et le squelette permettant d'afficher
84 * le formulaire de sélection de changement de langue
85 *
86 * Le changement de langue se fait par l'appel à l'action `converser`
87 *
88 * @uses lang_select()
89 * @see action_converser_dist()
90 *
91 * @param string $nom
92 * Nom de la variable qui sera postée par le formulaire
93 * @param string $default
94 * Valeur par défaut de la langue
95 * @return array
96 * Liste : Chemin du squelette, durée du cache, contexte
97 **/
98 function menu_lang_pour_tous($nom, $default) {
99 include_spip('inc/lang');
100
101 if ($GLOBALS['spip_lang'] <> $default) {
102 $opt = lang_select($default); # et remplace
103 if ($GLOBALS['spip_lang'] <> $default) {
104 $default = ''; # annule tout choix par defaut
105 if ($opt) {
106 lang_select();
107 }
108 }
109 }
110
111 # lien a partir de /
112 $cible = parametre_url(self(), 'lang', '', '&');
113 $post = generer_url_action('converser', 'redirect=' . rawurlencode($cible), '&');
114
115 return array(
116 'formulaires/menu_lang',
117 3600,
118 array(
119 'nom' => $nom,
120 'url' => $post,
121 'name' => $nom,
122 'default' => $default,
123 )
124 );
125 }