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).

  1. <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.

updated on 8 November 2019

Discussion

Aucune discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom