Incohérence du 2è paramètre du critère `{pagination}` #3429

Closed
opened 8 years ago by marcimat · 2 comments
marcimat commented 8 years ago
Owner

Hop,

Je viens de tomber sur un truc curieux, reproductible simplement.
Lorsqu'on demande debutX=identifiant` à une boucle pagination, cela ne fonctionne que si on a une balise en 1er ou 2è argument du critère pagination :

  • {pagination #VAL{10} X} fonctionne,
  • {pagination 10 #VAL{X}} fonctionne,
  • mais pas {pagination 10 X} ;

Le nombre 10 est pourtant bien pris en compte dans les 3 situations finalement ; mais pas le 'X' dans le dernier cas.
Plus précisément le critère pagination croit lire dans le dernier cas un nombre '10 X' qu'il transforme en 10 avec un strval(). Mais il perd l'info X.

Du coup, la variable créée est debutX dans les premiers cas, et debut_{NOM_BOUCLE} dans le dernier.

Une solution pourrait être d'accepter (et préférer) l'écriture {paginaiton N, X} ?

Hop, Je viens de tomber sur un truc curieux, reproductible simplement. Lorsqu'on demande `debutX=`identifiant` à une boucle pagination, cela ne fonctionne que si on a une balise en 1er ou 2è argument du critère pagination : - `{pagination #VAL{10} X}` fonctionne, - `{pagination 10 #VAL{X}}` fonctionne, - mais pas `{pagination 10 X}` ; Le nombre 10 est pourtant bien pris en compte dans les 3 situations finalement ; mais pas le 'X' dans le dernier cas. Plus précisément le critère pagination croit lire dans le dernier cas un nombre '10 X' qu'il transforme en 10 avec un strval(). Mais il perd l'info X. Du coup, la variable créée est debutX dans les premiers cas, et `debut_{NOM_BOUCLE}` dans le dernier. Une solution pourrait être d'accepter (et préférer) l'écriture `{paginaiton N, X}` ?
Owner

Oui, je confirme le problème remonté par Marcimat.
Je pense que la proposition de mettre une virgule est pertinente {pagination 10, nom}
Le code pour tenir compte de cette modification en gardant la compatibilité avec l'ancienne est le suivant:

	// Calcul du nommage de la pagination si il existe.
	// La nouvelle syntaxe {pagination 20, nom} est prise en compte et privilégiée mais on reste
	// compatible avec l'ancienne car certains cas fonctionnent correctement
	if (!isset($crit->param[0][1])) {
		$type = !isset($crit->param[1][0]) ? "'$idb'"
			: calculer_liste(array($crit->param[1][0]), array(), $boucles, $boucle->id_parent);
		}
	else {
		$type = calculer_liste(array($crit->param[0][1]), array(), $boucles, $boucle->id_parent);
	}

en lieu et place de :

	$type = !isset($crit->param[0][1]) ? "'$idb'"
		: calculer_liste(array($crit->param[0][1]), array(), $boucles, $boucle->id_parent);

Si on est d'accord avec la proposition de Marcimat je peux commiter.

Oui, je confirme le problème remonté par Marcimat. Je pense que la proposition de mettre une virgule est pertinente {pagination 10, nom} Le code pour tenir compte de cette modification en gardant la compatibilité avec l'ancienne est le suivant: <pre> // Calcul du nommage de la pagination si il existe. // La nouvelle syntaxe {pagination 20, nom} est prise en compte et privilégiée mais on reste // compatible avec l'ancienne car certains cas fonctionnent correctement if (!isset($crit->param[0][1])) { $type = !isset($crit->param[1][0]) ? "'$idb'" : calculer_liste(array($crit->param[1][0]), array(), $boucles, $boucle->id_parent); } else { $type = calculer_liste(array($crit->param[0][1]), array(), $boucles, $boucle->id_parent); } </pre> en lieu et place de : <pre> $type = !isset($crit->param[0][1]) ? "'$idb'" : calculer_liste(array($crit->param[0][1]), array(), $boucles, $boucle->id_parent); </pre> Si on est d'accord avec la proposition de Marcimat je peux commiter.
Owner
Corrigé par http://core.spip.org/projects/spip/repository/revisions/22077 **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.