Valider 0a00c0d6 rédigé par tcharlss's avatar tcharlss
Parcourir les fichiers

Suite de 747c870c (oups) : on veut les valeurs par défaut quand on fait une...

Suite de 747c870c (oups) : on veut les valeurs par défaut quand on fait une alerte en php sans passer tous les params.
On remet la définition des défauts au niveau du filtre, et on passe les params en nullable pour faire la différence entre un appel sans param et un appel avec des params "vides" (chaîne de texte vide).
Par consistance le param classe fonctionne comme le param role : si chaîne de texte vide, pas de valeur par défaut.
parent d7894051
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+37 −20
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -25,8 +25,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 * Compile la balise `#ALERTE` produisant le HTML d'un message d'alerte complet.
 *
 * @note
 * Pour obtenir une alerte sans rôle, passer un param `role` vide.
 * En revanche, par commodité si on passe un param `class` vide on fait un fallback.
 * Produit par défaut une alerte avec la classe `notice` et le role `alert`,
 * sauf si on passe des chaînes vides en param.
 * Cela permet par exemple de retirer le rôle dans certains cas précis.
 *
 * @package SPIP\Core\Compilateur\Balises
 * @balise
@@ -48,10 +49,10 @@ function balise_ALERTE_dist($p) {
	$_role  = interprete_argument_balise(4, $p);
	$_id    = interprete_argument_balise(5, $p);
	$_texte = ($_texte ? $_texte     : "''");
	$_titre = ($_titre ? ", $_titre" : ", ''");
	$_class = (($_class and $_class !== "''") ? ", $_class" : ", 'notice'"); // cf. @note
	$_role  = ($_role  ? ", $_role"  : ", 'alert'");
	$_id    = ($_id    ? ", $_id"    : '');
	$_titre = ($_titre ? ", $_titre" : ', null');
	$_class = ($_class ? ", $_class" : ', null');
	$_role  = ($_role  ? ", $_role"  : ', null');
	$_id    = ($_id    ? ", $_id"    : ', null');

	$f = chercher_filtre('message_alerte');
	$p->code = "$f($_texte$_titre$_class$_role$_id)";
@@ -66,8 +67,9 @@ function balise_ALERTE_dist($p) {
 * Doit être suivie du texte de l'alerte, puis de la balise `#ALERTE_FERMER`.
 *
 * @note
 * Pour obtenir une alerte sans rôle, passer un paramètre `role` vide.
 * Nb : en revanche, par commodité si on passe un param `class` vide on fait un fallback.
 * Produit par défaut une alerte avec la classe `notice` et le role `alert`,
 * sauf si on passe des chaînes vides en param.
 * Cela permet par exemple de ne pas mettre de rôle dans certains cas précis.
 *
 * @package SPIP\Core\Compilateur\Balises
 * @balise
@@ -88,10 +90,10 @@ function balise_ALERTE_OUVRIR_dist($p) {
	$_class = interprete_argument_balise(2, $p);
	$_role  = interprete_argument_balise(3, $p);
	$_id    = interprete_argument_balise(4, $p);
	$_titre = ($_titre ? "$_titre"   : "''");
	$_class = (($_class and $_class !== "''") ? ", $_class" : ", 'notice'"); // cf. @note
	$_role  = ($_role  ? ", $_role"  : ", 'alert'");
	$_id    = ($_id    ? ", $_id"    : '');
	$_titre = ($_titre ? "$_titre"   : 'null');
	$_class = ($_class ? ", $_class" : ', null');
	$_role  = ($_role  ? ", $_role"  : ', null');
	$_id    = ($_id    ? ", $_id"    : ', null');

	$f = chercher_filtre('message_alerte_ouvrir');
	$p->code = "$f($_titre$_class$_role$_id)";
@@ -131,6 +133,11 @@ function balise_ALERTE_FERMER_dist($p) {
 *
 * Peut-être surchargé par `filtre_message_alerte_dist` ou `filtre_message_alerte`
 *
 * @note
 * Produit par défaut une alerte avec la classe `notice` et le rôle `alert`,
 * sauf si on passe des chaînes vides en param (compat balises).
 * Cela permet par exemple de ne pas mettre de rôle dans certains cas précis.
 *
 * @filtre
 * @see balise_ALERTE_dist() qui utilise ce filtre
 * @see message_alerte_ouvrir()
@@ -142,14 +149,16 @@ function balise_ALERTE_FERMER_dist($p) {
 * @param string $class
 *     Classes CSS ajoutées au conteneur
 *     Doit contenir le type : `notice`, `error`, `success`, `info`
 *     Défaut = `notice` (sauf en cas de chaîne vide)
 * @param string $role
 *     Attribut rôle ajouté au conteneur : `alert` ou `status`, selon l'importance
 *     Attribut role ajouté au conteneur : `alert` ou `status`, selon l'importance
 *     Défaut = `alert` (sauf en cas de chaîne vide)
 * @param string $id
 *     Identifiant HTML du conteneur
 * @return string
 *     HTML de l'alerte
 */
function message_alerte(string $texte, string $titre = '', string $class = '', string $role = '', string $id = '') : string {
function message_alerte(string $texte, ?string $titre = null, ?string $class = null, ?string $role = null, ?string $id = null) : string {

	$message_alerte_ouvrir = chercher_filtre('message_alerte_ouvrir');
	$message_alerte_fermer = chercher_filtre('message_alerte_fermer');
@@ -166,6 +175,11 @@ function message_alerte(string $texte, string $titre = '', string $class = '', s
 *
 * Peut-être surchargé par `filtre_message_alerte_ouvrir_dist` ou `filtre_message_alerte_ouvrir`
 *
 * @note
 * Produit par défaut une alerte avec la classe `notice` et le role `alert`,
 * sauf si on passe des chaînes vides en param (compat balises).
 * Cela permet par exemple de ne pas mettre de rôle dans certains cas précis.
 *
 * @filtre
 * @see balise_ALERTE_OUVRIR_dist() qui utilise ce filtre
 * @param string $titre
@@ -173,19 +187,23 @@ function message_alerte(string $texte, string $titre = '', string $class = '', s
 * @param string $class
 *     Classes CSS ajoutées au conteneur
 *     Doit contenir le type : `notice`, `error`, `success`, `info`
 *     Défaut = `notice`
 *     Défaut = `notice` (sauf en cas de chaîne vide)
 * @param string $role
 *     Attribut role ajouté au conteneur : `alert` ou `status`, selon l'importance
 *     Défaut = `alert`
 *     Défaut = `alert` (sauf en cas de chaîne vide)
 * @param string $id
 *     Identifiant HTML du conteneur
 * @return string
 *     HTML d'ouverture de l'alerte
 */
function message_alerte_ouvrir(string $titre = '', string $class = '', string $role = '', string $id = '') : string {
function message_alerte_ouvrir(?string $titre = null, ?string $class = null, ?string $role = null, ?string $id = null) : string {

	$prive = test_espace_prive();

	// Valeurs par défaut
	$role = $role ?? 'alert'; // fallback uniquement si null
	$class = $class ?? 'notice'; // fallback uniquement si null

	// Type d'alerte : le chercher dans les classes, nettoyer celles-ci, puis le réinjecter
	$types = [
		'notice',
@@ -193,8 +211,7 @@ function message_alerte_ouvrir(string $titre = '', string $class = '', string $r
		'success',
		'info',
	];
	$type  = array_intersect(explode(' ', $class), $types);
	$type  = reset($type) ?: '';
	$type  = reset(array_intersect(explode(' ', $class), $types));
	$class = trim(str_replace($types, '', $class) . " $type");

	// Classes