Valider 5ee5db40 rédigé par Eric Lupinacci's avatar Eric Lupinacci
Parcourir les fichiers

Retour en arrière sur le commit précédent qui était totalement faux.

Ajout d'un extender '{raz}' qui permet de remettre à zéro la numérotation des titres : cette nouvelle fonction permet de gérer l'affichage de plusieurs champs avec intertitres numérotés ce qui n'est pas possible par défaut.
parent 3e00b0d2
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+31 −22
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -19,7 +19,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 * 2 - le type|level - ou string/contenu si intertitre spip
 * 3 - le contenu
 * 4 - le groupe fermant
 * 5 - attributs class|id
 * 5 - les extenders attributs, class, id ou indicateur de raz de la numérotation
 *
 * @see http://zone.spip.org/trac/spip-zone/browser/_plugins_/todo/trunk/wheels/todo.php
 * @see http://lumadis.be/regex/test_regex.php?id=2938
@@ -31,9 +31,21 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function intertitres($t) {
	// Initialisation des variables de base : ne pas utiliser de static car on peut mettre des intertitres
	// dans d'autres champs que le texte.
	static $base_level = 0;
	static $type = '';
	static $last_node = array();

	// Extraction des extenders : classes, id, propriétés additionnelles et indicateur de raz
	// - on traite ce bloc de suite car l'extender {raz} permet de remttre à zéro les compteurs de numérotation
	if (isset($t[5])) {
		extract_attributes($t[5], $attributs);
		if (!empty($attributs['raz'])) {
			// On remet tous les compteurs à zéro
			$base_level = 0;
			$type = '';
			$last_node = array();
		}
	}

	// Ajuster le niveau de l'item
	if(!$base_level){
@@ -73,26 +85,18 @@ function intertitres($t) {
		$last_node = $node;
	}

	// Traitements des extenders : classes, id et propriétés additionnelles
	// Traitements des extenders hors raz (class, id, attribut)
	$id = '';
	$properties = '';
	if (isset($t[5])) {
		// Si il existe les extenders on les caractérise et on les insère dans le HTML final.
		$attributs = array(
			'css'        => '',
			'id'         => '',
			'properties' => '',
		);
		extract_attributes($t[5], $attributs);

	if (!empty($attributs['css'])) {
		$css .= $attributs['css'];
		if ($attributs['id']) {
	}
	if (!empty($attributs['id'])) {
		$id = "id=\"{$attributs['id']}\"";
	}
		if($attributs['properties']) {
	if(!empty($attributs['properties'])) {
		$properties = ' ' . $attributs['properties'];
	}
	}

	// Calcul du HTML compilé pour le titre : on ne dépasse pas h6
	if($level < 7) {
@@ -118,9 +122,11 @@ function format_title($title, $node) {

/**
 * Détermine la liste des attributs additionnels à ajouter à la balise hx.
 * Pour permettre d'utiliser des numéros dans plusieurs champs d'un objet, on ajoute un extender `raz`
 * indiquant à la wheel qu'il faut remettre les compteurs à zéro.
 *
 * @param string $extenders chaine extraite correspondant à des extenders possibles
 * @param array  $attributs Tableau des attributs contenant systématiquement les index `css`, `id`, `properties`
 * @param array  $attributs Tableau des attributs contenant systématiquement les index `css`, `id`, `properties`, `raz`
 *                          qui peuvent être vides.
 *
 * @return void
@@ -130,7 +136,10 @@ function extract_attributes($extenders, &$attributs) {
	$extenders = preg_split('/[\s]+/', $extenders);
	foreach($extenders as $extender){
		// css
		if ($class = get_css($extender)) {
		if ($extender === 'raz') {
			$attributs['raz'] = true;
		}
		elseif ($class = get_css($extender)) {
			$attributs['css'] .= ' ' . $class[1];
		}
		// id (un seul possible)