Valider 747c870c rédigé par tcharlss's avatar tcharlss
Parcourir les fichiers

Balises alertes : permettre de faire des alertes sans attribut role en passant...

Balises alertes : permettre de faire des alertes sans attribut role en passant un paramètre explicitement vide. Il peut y avoir des cas où on veut que ces messages n'aient pas de prise en compte spéciale par les outils d'assistance. En revanche on garde un fallback pour la classe même si on met un param vide, ça fait toujours une notice par défaut. Également : ne pas compliquer, garder le même attribut data quel que soit le rôle.
parent d9f4e39e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+26 −19
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -24,6 +24,10 @@ 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.
 *
 * @package SPIP\Core\Compilateur\Balises
 * @balise
 * @example
@@ -43,10 +47,11 @@ function balise_ALERTE_dist($p) {
	$_class = interprete_argument_balise(3, $p);
	$_role  = interprete_argument_balise(4, $p);
	$_id    = interprete_argument_balise(5, $p);
	$_titre = ($_titre ? ", $_titre" : "''");
	$_class = ($_class ? ", $_class" : ", ''");
	$_role  = ($_role ? ", $_role" : ", ''");
	$_id    = ($_id ? ", $_id" : ", ''");
	$_texte = ($_texte ? $_texte     : "''");
	$_titre = ($_titre ? ", $_titre" : ", ''");
	$_class = (($_class and $_class !== "''") ? ", $_class" : ", 'notice'"); // cf. @note
	$_role  = ($_role  ? ", $_role"  : ", 'alert'");
	$_id    = ($_id    ? ", $_id"    : '');

	$f = chercher_filtre('message_alerte');
	$p->code = "$f($_texte$_titre$_class$_role$_id)";
@@ -60,6 +65,10 @@ 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.
 *
 * @package SPIP\Core\Compilateur\Balises
 * @balise
 * @see balise_ALERTE_FERMER_dist() Pour clôturer une alerte
@@ -80,9 +89,9 @@ function balise_ALERTE_OUVRIR_dist($p) {
	$_role  = interprete_argument_balise(3, $p);
	$_id    = interprete_argument_balise(4, $p);
	$_titre = ($_titre ? "$_titre"   : "''");
	$_class = ($_class ? ", $_class" : ", ''");
	$_role  = ($_role ? ", $_role" : ", ''");
	$_id    = ($_id ? ", $_id" : ", ''");
	$_class = (($_class and $_class !== "''") ? ", $_class" : ", 'notice'"); // cf. @note
	$_role  = ($_role  ? ", $_role"  : ", 'alert'");
	$_id    = ($_id    ? ", $_id"    : '');

	$f = chercher_filtre('message_alerte_ouvrir');
	$p->code = "$f($_titre$_class$_role$_id)";
@@ -185,12 +194,9 @@ function message_alerte_ouvrir(string $titre = '', string $class = '', string $r
		'info',
	];
	$type  = array_intersect(explode(' ', $class), $types);
	$type  = reset($type) ?: 'notice';
	$type  = reset($type) ?: '';
	$class = trim(str_replace($types, '', $class) . " $type");

	// Role
	$role = $role ?: 'alert';

	// Classes
	$class_racine = 'msg-alert';
	$clearfix     = ($prive ? 'clearfix' : '');
@@ -212,14 +218,15 @@ function message_alerte_ouvrir(string $titre = '', string $class = '', string $r
		$titre = ajouter_class($titre, $class_titre);
	}

	// Autres attributs
	// Attributs
	$attr_role = ($role ? "role=\"$role\"" : '');
	$attr_id   = ($id ? "id=\"$id\"" : '');
	$attr_data = ($type ? "data-$role=\"$type\"" : '');
	$attr_data = ($type ? "data-alert=\"$type\"" : '');

	$message =
		"<div class=\"$class_alerte\" role=\"$role\" $attr_id $attr_data>" .
			$titre .
			"<div class=\"$class_texte\">";
		"<div class=\"$class_alerte\" $attr_role $attr_id $attr_data>"
			. $titre
			. "<div class=\"$class_texte\">";

	return $message;
}