[spip-dev] BUG flux RSS suivi des révisions

Bonsoir,

SPIP 2.0.0 beta SVN [12487]

sur la page .../ecrire/?exec=suivi_revisions le fil RSS (icône orange a un bug). Le lien (.../spip.php?page=rss&op=revisions&id=1&lang=fr&cle=d4b66f8c&args=)
donne une page qui dit
« Erreur(s) dans le squelette : filtre « revisions_diff » non défini »

Paolo

Oups, j'avais oublié que j'avais mis ça dans mon "mes_options".
[12492] devrait le résoudre.

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Oups, j'avais oublié que j'avais mis ça dans mon "mes_options".
[12492] devrait le résoudre.

Cela résout ce problème, mais il semble qu'il y a un autre avec le flux lui-même. Le " " ne passe pas.

Opera dit :

XML parsing failed: syntax error (Line: 18, Character: 18)

Reparse document as HTML
Error:well-formedness constraint: entity declared
Specification:Extensible Markup Language (XML) 1.0 (Fifth Edition)
  15: <dc:format>text/html</dc:format>
  16: <dc:language>fr</dc:language>
  17: <dc:creator>webadmin &lt;paolo2&lt;span class=&quot;spancrypt&quot;&gt; &lt;/span&gt;taize.fr&gt;</dc:creator>
  18: <description>484&nbsp;octets</description>
  19: </item>
  20: <item>
  21: <title>Horaires de train</title>

http://feedvalidator.org/ dit:
"One solution that is widely supported is to replace the use of named entity references with their numerical equivalents. For example, use &#160 or &#xa0; instead of &nbsp;. ... Another approach is to make use of entity-encoded HTML. For example, use &amp;nbsp instead of &nbsp;. In Atom, this requires the use of the type="html" attribute on the construct."

Paolo

Grmpf.

http://trac.rezo.net/trac/spip/changeset/12495

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Grmpf.

Merci :slight_smile:
Pourtant ce flux ne se comporte toujours pas comme attendu.

spip.php?page=rss&op=revisions&id=1&lang=en&cle=d4b66f8c&args=

donne un liste d'articles en français, pas en anglais. (Et ce n'est pas les bons articles en français, non plus.) Tandis que
ecrire/?exec=suivi_revisions&lang_choisie=en
donne une toute autre liste.

Ah désolé, j'avais pas bien compris qqch quand j'ai passé tout ça en squelette:

  http://trac.rezo.net/trac/spip/changeset/12496

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Ah désolé,

Moi aussi, car ce n'est pas encore bon :wink:

../ecrire/?exec=suivi_revisions est bon et donne les dernières révisions toutes langues confondues, mais le lien (bouton RSS orange) en bas à gauche donne seulement les dernières révisions en anglais (peut-être parce que c'est la « langue principale » du site?).

Cela avec l'URL : spip.php?page=rss&op=revisions&id=1&lang=fr&cle=d4b66f8c&args=

D'ailleurs, même si on choisi une langue dans la page de l'espace privé, le flux RSS demeure toujours le même URL et donne toujours seulement les révisions en anglais.

Paolo

http://trac.rezo.net/trac/spip/changeset/12499

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

http://trac.rezo.net/trac/spip/changeset/12499

Salut,
Après avoir reçu ton message, j'espérais regarder le problème ce soir. Mais voilà que tu m'a dévancé.

Ce que je ne comprends pas, c'est qu'il y a toujours 2 instances de "lang_choisie" dans le squelette. Et ce paramètre n'est pas dans l'URL. Et puis une fois "langue_choisie" (ou je pense cela devrait être "lang_choisie").

- - -

Si on change (ligne 12 du squelette) :

... langue_choisie=(#ENV{lang_choisie} ...

en
... lang_choisie=(#ENV{lang} ...

et ligne 14 à :
<language>[(#ENV{lang}|texte_backend)]</language>

tout rentre dans l'ordre (du moins, je pense).

Paolo

Mais il y a un hic avec ce que je viens de proposer.

La liste à gauche, sur la page
.../ecrire/?exec=suivi_revisions
propose non seulement des séléctions par langue mais aussi des séléctions par rubrique.

Et le bouton RSS dans ces cas comporte un URL comme celui-ci :

.../spip.php?page=rss&op=revisions&id=1&lang=fr&id_secteur=41&cle=9b535acc&args=id_secteur-41

ou 41 est le secteur, et "fr" est la "langue d'interface".

Je crois qu'il faudrait virer cette "lang=xx" de l'URL.
Dans le cas présent, comme 41 est un secteur contenant des articles en allemand. le lang=fr suffit pour que le flux RSS demeure toujours vide.

Paolo

Tu as raison (ton autre mail) pour le lang_choisie que j'avais oublié de corriger.

Pour le problème d'avoir id_secteur et lang en même temps, c'est assez théorique: le bouton RSS est proposé dans le script suivi_revisions avec les mêmes arguments que ce script, qui n'est jamais appelé avec les 2 valeurs à la fois, je ne crois pas qu'il faille s'en soucier donc, ta modification me semble suffisante.

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Pour le problème d'avoir id_secteur et lang en même temps, c'est assez théorique: le bouton RSS est proposé dans le script suivi_revisions avec
les mêmes arguments que ce script, qui n'est jamais appelé avec les 2 valeurs à la fois, je ne crois pas qu'il faille s'en soucier donc, ta modification me semble suffisante.

Je ne comprends pas. Sur notre site ce n'est pas théorique : Sur la page ecrire/?exec=suivi_revisions SPIP propose, à gauche, une liste de pages de révisions, chacune avec un bouton RSS.

Dans cette liste il y a d'abord les secteurs (dont les boutons RSS *ne marchent pas*),
et ensuite les langues (dont les boutons RSS marchent maintenant convenablement).

Je pense qu'une possibilité serait d'enlever le $spip_lang de ligne 1290 de inc/presentation.php ; mettre par exemple :

$url = generer_url_low_sec($op, $args, $GLOBALS['connect_id_auteur'], $lang ? $lang : '');

  et de changer le squelette prive/rss/revisions pour qu'il accepte des URL sans lang défini.

(Pour ce qui me concerne, c'est un bug qui ne presse pas, mais qui est quand même un bug.)

Paolo

Sur la page ecrire/?exec=suivi_revisions SPIP propose, à gauche, une liste de pages de révisions, chacune avec un bouton RSS.

Dans cette liste il y a d'abord les secteurs (dont les boutons RSS *ne marchent pas*),
et ensuite les langues (dont les boutons RSS marchent maintenant convenablement).

Je pense qu'une possibilité serait d'enlever le $spip_lang de ligne 1290 de inc/presentation.php ; mettre par exemple :

$url = generer_url_low_sec($op, $args, $GLOBALS['connect_id_auteur'], $lang ? $lang : '');

oui tu as raison, j'étais persuadé que c'était ça qui était écrit.
Ca marchait vraiment en 1.9.2 ?

et de changer le squelette prive/rss/revisions pour qu'il accepte des URL sans lang défini.

C'est déjà le cas grace au critère conditionnel que j'ai mis justement en pensant que c'est cela qu'il y avait, j'aurais dû vérifier.

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

et de changer le squelette prive/rss/revisions pour qu'il accepte des URL sans lang défini.

C'est déjà le cas grace au critère conditionnel que j'ai mis justement en pensant que c'est cela qu'il y avait, j'aurais dû vérifier.

D'après mes tests, cela ne marche toujours pas.

Avec l'URL
spip.php?page=rss&op=revisions&id=1&id_secteur=71&cle=736435e7&args=id_secteur-71

(sans paramètre de langue donc) le debug de

<BOUCLE_RSS(versions articles){id_version >1}{statut IN prop, publie, #ENV{statut, prop}}{!par date}{0,10}{lang ?}{id_secteur ?}{id_auteur ?}>

donne :

SELECT versions.id_article, versions.id_version, FIELD(L1.statut,'prop','publie','prop') AS cpt1, versions.date, L1.titre, L1.lang
03 FROM spip_versions AS `versions`
04 INNER JOIN spip_articles AS L1 ON ( L1.id_article = versions.id_article )
05 WHERE (versions.id_version > 1)
06 AND (FIELD(L1.statut,'prop','publie','prop') <> 0)
07 AND (L1.lang = 'en')
08 AND (L1.id_secteur = 71)
09 GROUP BY versions.id_article,versions.id_version
10 ORDER BY versions.date DESC
11 LIMIT 0,10

Vois la ligne 07 -- une contrainte de langue (en = la langue principale du site chez moi) a été ajoutée. Je ne sais pas d'où elle vient.

Paolo

Bon, j'ai re-regardé l'implémentation de la 1.9.2 et je comprends mieux les raisons du problème.
Dans la 1.9.2, il y avait 2 infos sur la langue passées dans les arguments du script action/rss de l'espace public:
- un argument "lang" toujours égal au $GLOBALS['spip_lang'] de l'espace privé
- pour certain cas, un sous-argument "lang_choisie" caché dans l'argument args

La mise en squelette de ces flux impose que "lang_choisie" apparaisse explicitement sous le nom "lang" dans l'URL d'appel du squelette, à cause des limitations du critère conditionnel en SPIP (cf. http://trac.rezo.net/trac/spip/changeset/12499) ce qui impose d'évacuer l'autre paramètre "lang" d'une manière ou d'une autre.

Est-ce que je me trompe en disant que ce $GLOBALS['spip_lang'] de l'espace privé vaut toujours la valeur du champ "lang" de l'auteur demandant le flux ? Si oui, il suffit de mettre le critère {lang_select} dans la boucle AUTEUR des nouveaux squelettes pour effectiver ne plus avoir besoin de passer l'ancien paramètre lang.

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Est-ce que je me trompe en disant que ce $GLOBALS['spip_lang'] de l'espace privé vaut toujours la valeur du champ "lang" de l'auteur demandant le flux ?

Je ne sais pas. J'ai l'interface en français. Mais si lang=xx n'est pas dans l'URL, #ENV{lang} rend "en" (voir mon message précédent), ce qui n'est pas « ma langue d'interface » mais plutôt la « langue principale du site ».

Paolo

Ah oui, c'est vrai que ce n'est pas la même chose, mais après tout ça me parait mieux de prendre la langue d'interface: pour un site ayant L pour langue principale avec deux admins ayant des langues d'interface différentes, la 1.9.2 force les deux admins à avoir le flux RSS en L, tandis qu'avec cette nouvelle implémentation ils l'auraient chacun dans leur langue. Ca me parait plus souple et plus logique puisque lorsqu'ils cliqueront sur le lien les menant à la page de l'espace privé proposé par le flux, ils seront accueillis dans leur langue d'interface, pas dans celle du site.

Non ?

Committo,Ergo:Sum

qui ne dit mot consent:

http://trac.rezo.net/trac/spip/changeset/12515

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

qui ne dit mot consent:

Tout à fait :wink:
Ou bien, il est un peu perdu (souvent le cas ici)

En tout cas avec SPIP 2.0.0 dev [12524], je n'arrive toujours pas à avoir le RSS selon la rubrique, les RSS par langue marchent bien.

Paolo

Chez moi ça semble marcher. Il faut vider le cache (puisque c'est ainsi maintenant pour les RSS) et on est bien d'accord qu'il s'agit des revision des articles d'un meme secteur, pas d'une meme rubrique ?

Committo,Ergo:Sum