Catégories vos saisies

Maïeul Rouquette <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
Salut,

et voilà, après moult débat, le version 3.48.0 du plugin saisies 
catégorise enfin les saisies.

Il est donc temps d'affecter, si tel est votre souhait, des catégories 
aux saisies des plugins que vous maintenez (je me suis permis de le 
faire pour les saisies du plugin agenda et du plugin CVT-Upload).

Voici comment faire (note : cela est documenté dans l'article, non 
encore publié pour cause d'il faut finir un plugin qui sert d'exemple, 
suivant : https://contrib.spip.net/ecrire/?exec=article&id_article=5272).

##  D'abord, la liste des catégories



|Clé informatique|Libellé humain|Exemple de saisie concernée|
|libre|Champ libre|input
|choix|Choix restreint|radio|
|structure|Structure|fieldset|
|objet|Contenu éditorial|selecteur_article|
|defaut|Divers|hidden|

## Ensuite l'affectation
La saisie <code>email</code> possède les entrées suivantes dans son 
<code>.yaml</code> :

<code class='yaml'>
categorie:
   type: 'libre'
   rang: 10
</code>

En revanche la saisie  <code>input</code> possède les entrées suivantes 
dans son <code>.yaml</code> :


<code class='yaml'>
categorie:
   type: 'libre'
</code>

La saisie <code>input</code> de range <code>0</code> (par défaut) 
apparaît avant la saisie <code>email</code> au sein de la catégorie 
<code>libre</code>.

## Créer ses propres catégories

Le pipeline <code>saisies_lister_categories</code> permet d'ajouter (ou 
le cas échéant, de modifier ou supprimer) une ou plusieurs catégories de 
saisie.

Par exemple l'association Planète Sciences ajouter une catégorie pour 
les saisies propres à ses activités, avant toutes les autres catégories

<code class="php">
/**
  * Ajout d'une catégorie de saisies plasci
  * @param array $flux
  * @return $flux modifié
**/
function plasci_saisies_lister_categories($flux) {
	$plasci = array(
		'plasci' => array(
			'nom' => _T('plasci:plasci')
		)
	);
	$flux = array_merge($plasci, $flux);//Mettre plasci en premier
	return $flux;
}
</code>

Nous avons ajouté une catégorie dont la clé est <code>plasci</code> et 
dont le nom humain est <code>_T('plasci:plasci')</code>. Pour l'instant, 
les catégories n'ont comme seule propriété que leur nom, mais cela 
pourrait changer à l'avenir.

À noter qu'une sécurité est appliquée, afin de s'assurer que la 
catégorie <code>defaut</code> se trouve systématiquement à la fin.


## Réaffecter des catégories

Pour vos besoins perso, pas pour les plugins communautaires !

Il est parfois utile de modifier la liste des saisies proposés, soit 
pour réaffecter des catégories, soit pour supprimer certaines saisies. 
Pour ce faire, on peut utiliser le pipeline 
<code>saisies_lister_disponibles</code>.

Par exemple, pour alléger son interface, Planète Sciences affecte la 
saisie <code>evenements</code> du plugin agenda à la catégorie 
<code>plasci</code>, et supprime toutes les saisies de catégorie 
<code>objet</code>.

<code class="php">
/**
  * Met la saisie evenements dans la catégorie plasci
  * Supprime toute les saisies objets
  * @param array $flux
  * @return $flux
**/
function plasci_saisies_lister_disponibles($flux) {
	foreach ($flux as $saisie => &$description) {
		if ($saisie == 'evenements') {
			$description['categorie']['type'] = 'plasci';
			$description['categorie']['rang'] = -10;
		} elseif (isset($description['categorie']['type']) and 
$description['categorie']['type'] == 'objet') {
			unset($flux[$saisie]);
		}
	}
	return $flux;
}
</code>

## PS

Si vous utilisez l'un ou l'autre des 2 pipelines ci-dessus dans un 
pipeline communautaire, je suis preneur, pour éviter de donner du code 
de Planète Sciences dans l'article de doc.

Maïeul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.