Re: SPIP nu

James <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <CAE50Zk6-YbW6pVg9ys89WfBbHHEz4wdq03jE+hE6m7S5213wxQ@mail.gmail.com>
Salut,

Un patch (non, 3) donc, mais pas pour un critère {pipeline} parce que
finalement, ça me plaisait pas trop.

ici, j'introduis un pipeline 'inserer_criteres' qui permet d'injecter des
critères avant que le compilateur ne démarre son analyse. Ce qui permet de
coder des insertions à l'aide de chaine de caractères (ex: "{id_mots?}"
plutôt que de construire des instances de l'objet Critere, parce que c'est
cauchemardesque :-)

Exemple exhaustif avec les plugins mots et organiseur.

Amitiés,

Le 8 mai 2016 à 00:25, James <[email protected]> a écrit :

> Je viens de faire l'essai. J'ai codé un critère {pipeline} qui appelle un
> pipeline inserer_critere, remplacé {id_mot?} dans la boucle "_liste_art"
> par ce critère et ajouté une fonction dans le plugin mots qui insère le
> critère {id_mot?} via le pipeline. Et ça marche.
>
> Le truc, tel que je l'ai codé, c'est que ce critère {id_mot?} sera inséré
> dans absolument toutes les boucles qui exploiteront {pipeline}. On pourrait
> limiter aux seules boucles ARTICLES, ou ARTICLES+RUBRIQUES, par exemple.
> mais ça sera appliqué quand même à toutes les boucles ARTICLES (ou
> ARTICLES+RUBRIQUES) et on ne le souhaite pas forcément...
>
> De même, si un autre plugin utilise le pipeline inserer_critere, pour
> ajouter son critère, on se retrouve avec 2 critères ajoutés
> systématiquement à toutes les boucles... et on ne le souhaite pas
> forcément, non plus ...
>
> Et je ne suis pas certain que d'ajouter un paramètre soit judicieux :
> {pipeline truc} qui n'appliquerait que les critères qui s'enregistrent dans
> "truc", je n'y crois pas beaucoup.
>
> Bref, je crois que soit il manque quelque chose à ce concept, soit que ce
> n'est pas le bon.
>
> Mais je fournis le patch si vous voulez.
>
>
> Le 7 mai 2016 à 18:00, Eric Lupinacci <[email protected]> a écrit :
>
>> Yo,
>>
>>
>> Le 7 mai 2016 à 17:48, James <[email protected]> a écrit :
>>
>>>
>>> Pour l'histoire des critères, j'ai plus de mal ...
>>>
>>>
>> On pourrait pas imaginer un meta critère {pipeline} dans une boucle qui
>> indiquerait qu'on ouvre un point d'entrée dans cette boucle pour y insérer
>> des critères additionnels ?
>> Et dans le plugin on déclarerait un pipeline inserer_critere par exemple
>> ou l'on donnerait suivant une syntaxe à définir les éléments du critère ?
>>
>>
>> ++
>> Eric
>>
>>
>
>
> --
> James
>



-- 
James
spipnu_mots.patch (application/octet-stream, 1.3 KB)
Index: plugins-dist/mots/mots_pipelines.php
===================================================================
--- plugins-dist/mots/mots_pipelines.php	(revision 97986)
+++ plugins-dist/mots/mots_pipelines.php	(working copy)
@@ -128,3 +128,13 @@
 
 	return $flux;
 }
+
+function mots_inserer_criteres($flux)
+{
+    list($criteres, $boucle) = $flux;
+    if ($boucle->id_boucle === '_liste_art' && $boucle->descr['sourcefile'] === '../prive/objets/liste/articles.html') {
+        $criteres = '{id_mot?}' . $criteres;
+    }
+
+    return array($criteres, $boucle);
+}
Index: plugins-dist/mots/paquet.xml
===================================================================
--- plugins-dist/mots/paquet.xml	(revision 97986)
+++ plugins-dist/mots/paquet.xml	(working copy)
@@ -25,6 +25,7 @@
 	<pipeline nom="affiche_milieu" inclure="mots_pipelines.php" />
 	<pipeline nom="post_edition" inclure="mots_pipelines.php" />
 	<pipeline nom="ieconfig_metas" inclure="mots_ieconfig.php" />
+	<pipeline nom="inserer_criteres" inclure="mots_pipelines.php" />
 
 	<menu nom="mots" titre="mots:icone_mots_cles" parent="menu_edition" icone="images/mot-16.png" action="mots" />
 	<menu nom="mot_creer" titre="mots:icone_creation_mots_cles" parent="outils_rapides" icone="images/mot-new-16.png" action="mot_edit" parametres="new=oui&amp;id_groupe=@id_groupe@" />
spipnu_organiseur.patch (application/octet-stream, 1.5 KB)
Index: plugins-dist/organiseur/organiseur_pipelines.php
===================================================================
--- plugins-dist/organiseur/organiseur_pipelines.php	(revision 97986)
+++ plugins-dist/organiseur/organiseur_pipelines.php	(working copy)
@@ -228,3 +228,13 @@
 
 	return $flux;
 }
+
+function organiseur_inserer_criteres($flux)
+{
+    list($criteres, $boucle) = $flux;
+    if ($boucle->id_boucle === '_enligne' && $boucle->descr['sourcefile'] === '../prive/objets/liste/auteurs_enligne.html') {
+        $criteres = '{imessage!=non}{en_ligne>#VAL{\'Y-m-d H:i:s\'}|date{#VAL{\'-15 minutes\'}|strtotime}}{!par en_ligne}' . $criteres;
+    }
+
+    return array($criteres, $boucle);
+}
Index: plugins-dist/organiseur/paquet.xml
===================================================================
--- plugins-dist/organiseur/paquet.xml	(revision 97986)
+++ plugins-dist/organiseur/paquet.xml	(working copy)
@@ -31,6 +31,7 @@
 	<pipeline nom="quete_calendrier_prive" action="" />
 	<pipeline nom="messagerie_statuts_destinataires_possibles" action="" />
 	<pipeline nom="ieconfig_metas" inclure="organiseur_ieconfig.php" />
+	<pipeline nom="inserer_criteres" inclure="organiseur_pipelines.php" />
 
 	<menu nom="calendrier" titre="organiseur:info_agenda_interne" parent="outils_collaboratifs" icone="images/calendrier-16.png" />
 	<menu nom="messagerie" titre="info_messagerie_interne" action="messages" parent="outils_collaboratifs" icone="images/messagerie-16.png" />
spipnu.patch (application/octet-stream, 2.6 KB)
Index: ecrire/paquet.xml
===================================================================
--- ecrire/paquet.xml	(revision 23015)
+++ ecrire/paquet.xml	(working copy)
@@ -133,6 +133,7 @@
 	<pipeline nom="trig_propager_les_secteurs" action="" />
 	<pipeline nom="trig_supprimer_objets_lies" action="" />
 	<pipeline nom="trig_purger" action="" />
+	<pipeline nom="inserer_criteres" action="" />
 
 	<procure nom="iterateurs" version="0.6.1" />
 	<procure nom="queue" version="0.6.6" />
Index: ecrire/public/phraser_html.php
===================================================================
--- ecrire/public/phraser_html.php	(revision 23015)
+++ ecrire/public/phraser_html.php	(working copy)
@@ -819,6 +819,9 @@
 			$result->table_optionnelle = $type;
 		}
 
+		// Insertion dynamique de criteres
+		list($milieu, $result) = pipeline('inserer_criteres', array($milieu, $result));
+
 		// 1ere passe sur les criteres, vu comme des arguments sans fct
 		// Resultat mis dans result->param
 		phraser_args($milieu, "/>", "", $all_res, $result);
Index: prive/objets/liste/articles.html
===================================================================
--- prive/objets/liste/articles.html	(revision 23015)
+++ prive/objets/liste/articles.html	(working copy)
@@ -19,7 +19,7 @@
 		</tr>
 	</thead>
 	<tbody>
-	<BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,date}|defaut_tri_par{#GET{defaut_tri}},#GET{defaut_tri},session_liste_art}{par titre}{pagination #ENV{nb,10}}{!lang_select}>
+	<BOUCLE_liste_art(ARTICLES){id_article?}{id_rubrique?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,date}|defaut_tri_par{#GET{defaut_tri}},#GET{defaut_tri},session_liste_art}{par titre}{pagination #ENV{nb,10}}{!lang_select}>
 		[(#LANG|changer_typo)]
 		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
 			<td class='statut'>[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]</td>
Index: prive/objets/liste/auteurs_enligne.html
===================================================================
--- prive/objets/liste/auteurs_enligne.html	(revision 23015)
+++ prive/objets/liste/auteurs_enligne.html	(working copy)
@@ -4,8 +4,7 @@
 <BOUCLE_enligne(AUTEURS)
 	{id_auteur!=#SESSION{id_auteur}}
 	{statut IN 1comite,0minirezo}
-	{imessage!=non}
-	{en_ligne>#VAL{'Y-m-d H:i:s'}|date{#VAL{'-15 minutes'}|strtotime}}{!par en_ligne}{pagination 10}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_enligne>[&nbsp;...
+	{pagination 10}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_enligne>[&nbsp;...
 	(#GRAND_TOTAL|>{10}|oui)
 	([(#GRAND_TOTAL|objet_afficher_nb{auteur})])
 	]
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.