Carnet Wiki

Ajouter des Objets Editoriaux dans le calendrier personnel - l’exemple des Pense-bêtes.

Version 7 — Mars 2020 Thrax

Cet article est une visée pédagogique. Il vous explique comment j’ai ajouté dans le plugin [Pense-bêtes->https://plugins.Il est proposé ici d’ajouter les pense-bêtes reçus par un auteur (après installation du plugin [Pense-bêtes->https://plugins.spip.net/pensebetes.html] les objets pense-bêtes reçus par un auteur ) dans le calendrier personnel de l’auteur.

Le but est cet article est de faire comprendre le fonctionnement du pipeline à utiliser pour ajouter un nouvel objet éditorial dans le calendrier.

L’Agenda interne de SPIP est la superposition de deux agendas, l’agenda public de la vie du site et l’agenda personnel de l’auteur [1]. Chaque calendrier présente des objets éditoriaux placés dans le calendrier par sa date : la date de publication d’un article par exemple est le repère pris pour placer l’article dans le calendrier public. C’est le plugin Organiseur inclus dans la distribution de SPIP qui s’occupe de cette fonction.

L’objet du présent article est de vous montrer apprendre comment j’ai incorporer dans le calendrier personnel [l’agenda  (…)" id="nh2">2] .]]. un nouvel objet éditorial propre au plugin [Pense-bêtes->https://plugins.spip.net/pensebetes.html], qui est l’Objet Pensebete (on parle d’objet [ ?éponyme]).

Mon objectif était et que vous souhaitez le modifier pour que les pense-bêtes adressés à l’auteur apparaissent dans le calendrier de l’auteur par date. Vous pourrez adapter les démarches ici décrites à d’autres objets éditoriaux dans les plugins que vous programmerez. Pensez aux r[ègles de rédaction Pour l’exercice pédagogique , on va partir du code préconisées->https://www principe que vous avez installé le plugin [Pense-bêtes->https://plugins .spip.net/pensebetes.net/fr_article825 . html] html#Regles-de-presentation-et-d-ecriture] sous SPIP afin que ce que vous rédigiez soit facilement compréhensible par la communauté.

Déclaration de l’utilisation du pipeline quete_calendrier_prive

Les plugins peuvent afficher leurs événements dans le calendrier privé par le [pipeline->https://programmer . pipeline quete_calendrier_prive ’. spip.net/-Les-pipelines-] ’quete_calendrier_prive’. Ce pipeline est créé par le plugin [Organiseur->https://plugins.spip.net/organiseur.html].

Pour pouvoir utiliser ce pipeline d’Organiseur, on déclare dans notre propre plugin que l’on va se brancher dessus en ajoutant une ligne dans les déclaration du paquet.xml :

<pipeline nom  = nom="quete_calendrier_prive  "quete_calendrier_prive "  inclure  =  " pensebetes_pipelines inclure="pensebetes_pipelines .php" />

Cette déclaration faite, il faut créer la fonction qui utilisera effectivement le pipeline. Pour ce faire, on modifie modifier le fichier pensebetes_pipelines.php pour ajouter la fonction nécessaire :php :

function pensebetes_quete_calendrier_prive($flux) {


return $flux;
}

Pour l’instant, les tuyaux de programmation sont installés (on a dérivé le pipeline), mais le flux de données qui les traversent ne sont pas modifiés. En d’autres ternes, l’information circule mais n’est pas modifiée.

Vous voulez regardez ce qui se passe ? Vous pouvez le faire par un log. Un log est un journal de bord horodaté, à l’usage du programmeur, qui ordonne les différents événements qui se sont produits. Vous pouvez aller le consulter dans les répertoire tmp/log, ou installer un charmant plugin,
Simples Logs, qui vous permettra de faire cela depuis l’interface privée.

function pensebetes_quete_calendrier_prive($flux) {
	$start = $flux['args']['start'];
	$end = $flux['args']['end'];
	$quoi = print_r($flux['data'],  true ,true );


spip_log("start  =  $ start  end  =  $ end  quoi  =  $ quoi spip_log("start=$start  end=$end  quoi=$quoi ", 'calendrier'._LOG_INFO_IMPORTANTE);
	return $flux;
}

Ajout d’informations formatées dans le flux

Le plug Organisateur met en forme ses données au travers et tester si vous pouvez introduire de deux fonctions nouvelles informations . Pour Maintenant que vous savez comment est formaté le flux de donnée , vous pouvez regarder comment le plug Organisateur le met en forme [Le plugin (…)" id="nh3">3]

Vous pouvez écrire votre propre formatage des données que vous allez ajouter à celles qui transitent dans le pipeline que nous avons dérivé.

Nous avons ajouter un évènement test pour la date d’aujourd’hui. Cet évènement vous rappellera le premier article que vous avez écrit sous SPIP. Nous reprenons donc la fonction précitée située dans le fichier pensebetes_pipelines.php et nous la rédigeons ainsi :

Pour ce faire, nous allons modifier les données qui transitent dans le pipeline que nous avons dérivé. Nous avons ajouter un évènement pour aujourd’hui.

function pensebetes_quete_calendrier_prive($flux) {
	
	$texte  =   generer_url_ecrire('article ',  'id_article  =   1 $texte=generer_url_ecrire('article','id_article=1 ');// fonction dans urls.php
	$texte=str_replace  ('&','&',$ texte =   str_replace  ('&',  '&',  $ texte ); // on injecte du json pas du HTML
	$flux['data'][] =  array =array  ('id' => ,
	'title' => "Mon premier article",
	'allDay' => 1,
	'start' => date('Y-m-d'),
	'end' => date('Y-m-d'),
	'url' => liens_absolus($texte, ''), //fonction de filtres_mini.php
	'className' => 'calendrier-event calendrier-couleur01',
	'description' =>'Ma description qui déchire !');


return $flux;
}

La consultation du calendrier fera Vous verrez apparaitre à la date d’aujourd’hui un évènement vous rappelant le premier article que vous avez qui a été écrit ( article1 ). sous SPIP .

Ajout de l’information que vous souhaitez dans le flux

L’objectif est maintenant de faire apparaitre les pense-bêtes qu’a reçu l’auteur dans son calendrier personnel. Voici comment le plugin [Pense-bêtes->https://plugins.spip.net/pensebetes.html] procède :

function pensebetes_quete_calendrier_prive($flux) {
	
	$id_auteur =  $  =$ GLOBALS['visiteur_session']['id_auteur'] ;


if ($mes_pensebetes=   sql_allfetsel('id_pensebete, titre, texte, date', 'spip_pensebetes', 'id_receveur=' . intval($id_auteur). ' AND date > "'.$flux['args']['start'].'" AND date < "'.$flux['args']['end'].'"')) {
		foreach ($mes_pensebetes as $un) {
			$texte  =   generer_url_ecrire('pensebete','id_pensebete ='  .  $texte=generer_url_ecrire('pensebete','id_pensebete ='. $un['id_pensebete']);// fonction dans urls.php
			$texte  =   str_replace texte=str_replace  ('&','&',$texte); // on injecte du json pas du HTML
			$flux['data'][] =  array =array  ('id' => ,
			'title' => $un['titre'],
			'allDay' => 1,
			'start' => substr ($un['date'],0,10),
			'end' => substr ($un['date'],0,10),
			'url' => liens_absolus($texte, ''), //fonction de filtres_mini.php
			'className' => 'calendrier-event calendrier-couleur01',
			'description' =>$un['texte']);
		}
	}
	return $flux;
}

Si vous souhaitez vous aussi insérer vos données, vous pouvez vous inspirer de cette démarche.