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