Valider 863065c9 rédigé par tcharlss's avatar tcharlss
Parcourir les fichiers

Rendre les saisies selecteur_article et selecteur_rubrique un peu plus souples...

Rendre les saisies selecteur_article et selecteur_rubrique un peu plus souples : on peut passer une valeur simple en entrée, par ex. `10` ou `array(10,20)`, et celle-ci sera convertie dans le bon format pour le picker ajax : `array('article|10', 'article|20')`. Cela évite d'avoir à faire ça à chaque fois dans le charger des formulaires.
parent 1dcc9a55
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+14 −11
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
[(#REM)

  ### /!\ selecteur (spip Bonux) ###
	  Attention, ce qui est retourne est un tableau :
	Affiche un navigateur de sélection d’articles par le biais du sélecteur générique de Spip.

	### /!\ Format des données ###
	Attention, le picker ajax du sélecteur générique retourne toujours un tableau :
	_request($name) = array('article|3', 'article|9', 'rubrique|10');
		Une fonction de SPIP Bonux permet de récupérer un tableau d'identifiants par type d'objet : 
	Une fonction de SPIP 3 permet de récupérer un tableau d'identifiants par type d'objet :
	[(#CHAMP|picker_selected{article})]
		Cette fonction peut etre pratique dans une boucle en utilisant le critere IN
	Cette fonction peut être pratique dans une boucle en utilisant le critere IN
	(picker_selected est dans prive/formulaires/selecteur/generique_fonctions.php de SPIP 3)
	La valeur en entrée peut être un simple id ou un tableau d'ids, elle sera convertie au bon format.

  Parametres :
  - multiple : si oui, on peut selectionner plusieurs articles
@@ -20,7 +23,7 @@
	[(#SAISIE{selecteur_article,id_article,
		label=<:plugin:article_en_une:>})] 
]
[(#SET{val,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}})]
[(#SET{val,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}|saisies_picker_preselect_objet{article}})]

[(#SET{filtrer_langue_article,[(#ENV{afficher_art_dans_langue_interface,0}|oui) #ENV{lang}]})]

+11 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
[(#REM)

  ### /!\ selecteur (spip Bonux) ###
	  Attention, ce qui est retourne est un tableau :
	Affiche un navigateur de sélection de rubriques par le biais du sélecteur générique de Spip.

	### /!\ Format des données ###
	Attention, le picker ajax du sélecteur générique retourne toujours un tableau :
	_request($name) = array('article|3', 'article|9', 'rubrique|10');
	  Une fonction de SPIP Bonux permet de récupérer un tableau d'identifiants par type d'objet :
	Une fonction de SPIP 3 permet de récupérer un tableau d'identifiants par type d'objet :
	[(#CHAMP|picker_selected{rubrique})]
		Cette fonction peut etre pratique dans une boucle en utilisant le critere IN
	Cette fonction peut être pratique dans une boucle en utilisant le critere IN
	(picker_selected est dans prive/formulaires/selecteur/generique_fonctions.php de SPIP 3)
	La valeur en entrée peut être un simple id ou un tableau d'ids, elle sera convertie au bon format.

  Parametres :
  - multiple : si oui, on peut selectionner plusieurs rubriques
@@ -21,8 +24,7 @@
		multiple=oui,
		label=<:plugin:article_en_une:>})]
]

[(#SET{val,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}})]
[(#SET{val,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}|saisies_picker_preselect_objet{rubrique}})]

[(#SET{filtrer_langue_rubrique,[(#ENV{afficher_rub_dans_langue_interface,0}|oui) #ENV{lang}]})]

+12 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
[(#REM)

  ### /!\ selecteur (spip Bonux) ###
	  Attention, ce qui est retourne est un tableau :
	Affiche un navigateur de sélection d’articles ou de rubriques par le biais du sélecteur générique de Spip.

	### /!\ Format des données ###
	Attention, le sélecteur générique retourne toujours un tableau :
	_request($name) = array('article|3', 'article|9', 'rubrique|10');
	  Une fonction de SPIP Bonux permet de récupérer un tableau d'identifiants par type d'objet :
	Une fonction de SPIP 3 permet de récupérer un tableau d'identifiants par type d'objet :
	[(#CHAMP|picker_selected{article})]
		Cette fonction peut etre pratique dans une boucle en utilisant le critere IN
	Cette fonction peut être pratique dans une boucle en utilisant le critere IN
	(picker_selected est dans prive/formulaires/selecteur/generique_fonctions.php de SPIP 3)

  Parametres :
+43 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -354,3 +354,46 @@ function saisies_statut_titre($statut, $objet = '') {
	$titre = statut_titre($objet, $statut);
	return $titre ? $titre : $statut; 
}

/**
 * Convertit si nécessaire une valeur au format du picker ajax du sélecteur générique
 * quand on sait que la valeur ne concerne qu'un seul type d'objet.
 *
 * Fait en quelque sorte l'inverse de picker_selected().
 * Cela évite d'avoir à modifier le charger des formulaires quand on traite des cas simples :
 * juste un plusieurs ids d'un seul type d'objet.
 *
 * @example
 * - Entrée : 10,           sortie : array('article|10')
 * - Entrée : array(10,20), sortie : array('article|10', 'article|20')
 *
 * @see picker_selected()
 *
 * @param array|string|int $valeur
 *    - Soit un tableau issu du sélecteur (dans ce cas on ne fait rien) : `array('article|1', 'article|2')`
 *    - Soit l'id d'un objet : 1
 *    - Soit un tableau d'ids : array(1,2)
 * @param string $objet
 * @return array
 *    Tableau au format du sélecteur générique
 */
function saisies_picker_preselect_objet($valeur, $objet) {

	// Nb : évitons des preg_match si possible
	$is_objet_unique   = is_numeric($valeur); // ex. : 10
	$is_objet_multiple = (is_array($valeur) and is_numeric($valeur[0])); // ex. : array(10,20)

	if (
		$is_objet_unique
		or $is_objet_multiple
	) {
		if ($is_objet_unique) {
			$valeur = array($valeur);
		}
		foreach ($valeur as $k => $id_objet) {
			$valeur[$k] = "$objet|$id_objet";
		}
	}

	return $valeur;
}