Corbeille : prendre en compte un nouvel objet éditorial

Le plugin Corbeille peut prendre en compte n’importe quel objet éditorial.
Cet article explique comment faire.

Prérequis

Vous avez créé avec La Fabrique un plugin qui propose un objet éditorial.

Avertissement : dans la suite de cet article il est question de prefixe du plugin et du nom de l’objet à prendre en compte. Il faudra les remplacer par la bonne valeur. C’est souvent la même valeur mais pas toujours.
Exemple : on veut que Corbeille prenne en compte l’objet ’definition’ présent dans le plugin Dictionnaires.

  • prefixe -> dictionnaires
  • objet -> definition

1 - Déclarer l’objet

Cette déclaration se fait en créant le squelette /prive/listes/corbeille_objets.html.

Ce squelette affichera la liste des occurrences de l’objet à supprimer dans la page Corbeille.

  1. dans votre plugin, créer le répertoire /prive/listes ;
  2. dans ce répertoire, créer le fichier corbeille_objets.html avec le code suivant :
<B_objets>
<div class="liste corbeille-objets">
[<h3 class="titrem">(#GRAND_TOTAL|singulier_ou_pluriel{corbeille:prefixe_corbeille_un,corbeille:prefixe_corbeille_tous})</h3>]
[<p class='pagination'>(#PAGINATION)</p>]
<ul class='liste-items checkables'>
	<BOUCLE_objets(OBJETS){statut}{pagination 5}{!par date}{recherche ?}>
	<li class='item'>
		<label for='objet-#ID_OBJET'><:corbeille:selectionner:></label><input type='checkbox' name='elements[]' id="objet-#ID_OBJET" value='#ID_OBJET'[ (#ID_OBJET|in_any{#ENV{elements}}|oui)checked='checked']/>
		<h4>[##ID_OBJET - (#TITRE|sinon{<:info_sans_titre:>})]</h4>
		<small>[(#DATE|affdate)][ (#DATE|heures)]:[(#DATE|minutes)]</small>
		- #INTRODUCTION
		<p class='actions'>[<a href='#URL_ECRIRE{objet,id_objet=#ID_OBJET}'><:corbeille:voir_detail:></a>]</p>
	</li>
	</BOUCLE_objets>
</ul>
[<p class='pagination'>(#PAGINATION)</p>]
</div>
</B_objets>

…et remplacer toutes les occurrences du mot ’objet’ (au singulier, pluriel et lettres capitales) par le type de l’objet

  • objet -> ex. : livre
  • objets -> ex. : livres
  • id_objet -> ex. : id_livre
  • #ID_OBJET -> ex. : #ID_LIVRE
  • (OBJETS) -> ex. : (LIVRES)

De plus les balises #TITRE et #INTRODUCTION présentes dans le code ci-dessus n’auront peut être pas de sens pour votre objet éditorial. À remplacer probablement.

Option : créer les chaines de langue

Si vous avez inséré des chaines de langues dans le fichier /prive/listes/corbeille_objets.html, pensez à les déclarer dans vos fichiers /lang/prefixe_xx.php.

2 - Définir l’action « Supprimer la sélection » pour cet objet

Le plugin Corbeille introduit le pipeline corbeille_table_infos qui permet justement cela.

2.1 Déclarer le pipeline corbeille_table_infos

Comme pour tous les pipelines, son activation se fait dans le fichier paquet.xml de votre plugin (voir aussi à ce propos Déclarer un nouveau pipeline).

<pipeline nom="corbeille_table_infos" inclure="prefixe_pipelines.php" />

 

2.2 Ajouter les paramètres correspondants aux spécificités de votre objet

Dans le fichier prefixe_pipelines.php de votre plugin, ajouter la fonction suivante :

function prefixe_corbeille_table_infos($param) {
	$param['objets'] = array(
		'statut'=>'poubelle',
		'tableliee'=> array('spip_documents_liens'),
	);
	return $param;
}

Cet exemple montre le cas le plus courant, celui d’un objet avec :

  • statut -> le statut de l’objet à prendre en compte pour les suppressions (obligatoire) ;
  • tableliee -> les liaisons à supprimer en même temps (optionnel).

Un troisième paramètre « table » permet de prendre en compte, pour une même table, plusieurs statuts.

Exemple : pour le plugin Forum, prendre en compte les status ’off’ et ’privoff’ de la table ’’spip_forum

function prefixe_corbeille_table_infos($param) {
	$param['forum'] = array(
		"forums_publics" => array(
			"statut" => "off",
			"table"=>"forum",
		),

		"forums_prives" => array(
			"statut" => "privoff",
			"table"=>"forum",
		),
	);
	return $param;
}

 

Plus d’exemples

Vous trouverez aussi des exemples dans le plugin Corbeille lui même :

  • déclarations d’objets : dans le répertoire /corbeille/prive/listes
  • définir des actions : dans /corbeille/action/corbeille_vider.php.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom