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&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>[ ...
+ {pagination 10}{', '}><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></BOUCLE_enligne>[ ...
(#GRAND_TOTAL|>{10}|oui)
([(#GRAND_TOTAL|objet_afficher_nb{auteur})])
]