Dépôt officiel du core SPIP
Les plugins-dist faisant partie de la distribution SPIP sont présents dans https://git.spip.net/spip/[nom du plugin dist]
https://www.spip.net
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.5 KiB
125 lines
3.5 KiB
<?php |
|
|
|
/***************************************************************************\ |
|
* SPIP, Système de publication pour l'internet * |
|
* * |
|
* Copyright © avec tendresse depuis 2001 * |
|
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * |
|
* * |
|
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. * |
|
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. * |
|
\***************************************************************************/ |
|
|
|
/** |
|
* Ce fichier gère la balise dynamique `#MENU_LANG_ECRIRE` |
|
* |
|
* @package SPIP\Core\Compilateur\Balises |
|
**/ |
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
/** |
|
* Compile la balise dynamique `#MENU_LANG_ECRIRE` qui affiche |
|
* un sélecteur de langue pour l'interface privée |
|
* |
|
* Affiche le menu des langues de l'espace privé |
|
* et présélectionne celle la globale `$lang` |
|
* ou de l'arguemnt fourni: `#MENU_LANG_ECRIRE{#ENV{malangue}}` |
|
* |
|
* @balise |
|
* @link https://www.spip.net/4626 |
|
* |
|
* @param Champ $p |
|
* Pile au niveau de la balise |
|
* @return Champ |
|
* Pile complétée du code compilé |
|
**/ |
|
function balise_MENU_LANG_ECRIRE($p) { |
|
return calculer_balise_dynamique($p, 'MENU_LANG_ECRIRE', ['lang']); |
|
} |
|
|
|
/** |
|
* Calculs de paramètres de contexte automatiques pour la balise MENU_LANG_ECRIRE |
|
* |
|
* S'il n'y a qu'une langue proposée, pas besoin du formulaire |
|
* (éviter une balise ?php inutile) |
|
* |
|
* @param array $args |
|
* Liste des arguments demandés obtenus du contexte (lang) |
|
* complétés de ceux fournis à la balise |
|
* @param array $context_compil |
|
* Tableau d'informations sur la compilation |
|
* @return array |
|
* Liste (lang) des arguments collectés et fournis. |
|
*/ |
|
function balise_MENU_LANG_ECRIRE_stat($args, $context_compil) { |
|
include_spip('inc/lang'); |
|
if (strpos($GLOBALS['meta']['langues_proposees'], ',') === false) { |
|
return ''; |
|
} |
|
|
|
return $args; |
|
} |
|
|
|
/** |
|
* Exécution de la balise dynamique `#MENU_LANG_ECRIRE` |
|
* |
|
* @uses menu_lang_pour_tous() |
|
* @note |
|
* Normalement `$opt` sera toujours non vide suite au test ci-dessus |
|
* |
|
* @param string $opt |
|
* Langue par défaut |
|
* @return array |
|
* Liste : Chemin du squelette, durée du cache, contexte |
|
**/ |
|
function balise_MENU_LANG_ECRIRE_dyn($opt) { |
|
return menu_lang_pour_tous('var_lang_ecrire', $opt); |
|
} |
|
|
|
/** |
|
* Calcule l'environnement et le squelette permettant d'afficher |
|
* le formulaire de sélection de changement de langue |
|
* |
|
* Le changement de langue se fait par l'appel à l'action `converser` |
|
* |
|
* @uses lang_select() |
|
* @see action_converser_dist() |
|
* |
|
* @param string $nom |
|
* Nom de la variable qui sera postée par le formulaire |
|
* @param string $default |
|
* Valeur par défaut de la langue |
|
* @return array |
|
* Liste : Chemin du squelette, durée du cache, contexte |
|
**/ |
|
function menu_lang_pour_tous($nom, $default) { |
|
include_spip('inc/lang'); |
|
|
|
if ($GLOBALS['spip_lang'] <> $default) { |
|
$opt = lang_select($default); # et remplace |
|
if ($GLOBALS['spip_lang'] <> $default) { |
|
$default = ''; # annule tout choix par defaut |
|
if ($opt) { |
|
lang_select(); |
|
} |
|
} |
|
} |
|
|
|
# lien a partir de / |
|
$cible = parametre_url(self(), 'lang', '', '&'); |
|
$post = generer_url_action('converser', 'redirect=' . rawurlencode($cible), '&'); |
|
|
|
return [ |
|
'formulaires/menu_lang', |
|
3600, |
|
[ |
|
'nom' => $nom, |
|
'url' => $post, |
|
'name' => $nom, |
|
'default' => $default, |
|
] |
|
]; |
|
}
|
|
|