[spip-dev] r18587 - in branches/spip-2.1: ecrire/exec ecrire/inc prive squelettes-dist

* ben.spip@gmail.com tapuscrivait, le 03/10/2011 18:44:

Author: ben.spip@gmail.com
Date: 2011-10-03 18:44:01 +0200 (lun, 03 oct 2011)
New Revision: 18587

Details: http://core.spip.org/projects/spip/repository/revisions/18587

Ce dépôt casse la validité W3C du mini agenda utilisé dans le squelette SoyezCréateurs :line 996 column 7 - Erreur: document type does not allow element "div" here
line 997 column 3 - Erreur: document type does not allow element "tr" here; assuming missing "table" start-tag
line 1008 column 10 - Erreur: end tag for "table" omitted, but OMITTAG NO was specified
line 997 - Info: start tag was here
line 1009 column 9 - Erreur: end tag for "tbody" which is not finished

Ca ne sert à rien de donner tous ces numéros de ligne si tu ne donnes pas l'URL de test. On ne sait meme pas la DTD utilisée.

Committo,Ergo:Sum

* Committo,Ergo:sum tapuscrivait, le 04/10/2011 17:00:

Ce dépôt casse la validité W3C du mini agenda utilisé dans le squelette SoyezCréateurs :line 996 column 7 - Erreur: document type does not allow element "div" here
line 997 column 3 - Erreur: document type does not allow element "tr" here; assuming missing "table" start-tag
line 1008 column 10 - Erreur: end tag for "table" omitted, but OMITTAG NO was specified
line 997 - Info: start tag was here
line 1009 column 9 - Erreur: end tag for "tbody" which is not finished

Ca ne sert à rien de donner tous ces numéros de ligne si tu ne donnes pas l'URL de test. On ne sait meme pas la DTD utilisée.

Tu peux voir ça sur Pyrat.net – Création de sites Internet
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;

Merci.

Quant à SoyezCréateurs, c'est celui-ci :

* RealET tapuscrivait, le 04/10/2011 17:12:

* Committo,Ergo:sum tapuscrivait, le 04/10/2011 17:00:

Ce dépôt casse la validité W3C du mini agenda utilisé dans le
squelette SoyezCréateurs :line 996 column 7 - Erreur: document type
does not allow element "div" here
line 997 column 3 - Erreur: document type does not allow element "tr"
here; assuming missing "table" start-tag
line 1008 column 10 - Erreur: end tag for "table" omitted, but
OMITTAG NO was specified
line 997 - Info: start tag was here
line 1009 column 9 - Erreur: end tag for "tbody" which is not finished

Ca ne sert à rien de donner tous ces numéros de ligne si tu ne donnes
pas l'URL de test. On ne sait meme pas la DTD utilisée.

Tu peux voir ça sur Pyrat.net – Création de sites Internet
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;

Merci.

Quant à SoyezCréateurs, c'est celui-ci :
Connexion · GitLab

Et à l'invitation de b_b sur #IRC, j'ai regardé dans ecrire/inc/agenda.php ligne 212 :
return "<div><div id='$id'></div>$res</div>";
Et j'ai remplacé par :
return "$res";

Et je n'ai plus d'erreur W3C :slight_smile:

Tu es sûr de ça ? Comme "$res" commence normalement par "<table>", si un "<table" est accepté par la DTD XHTML 1 alors un "<div>" doit l'être aussi à ce même endroit.

Pour ma part, j'en étais arrivé à la conclusion que c'était la fonction sc_Agenda_memo_full qui fait des hypothèses exagérées sur le code produit par inc/agenda, mais je n'ai pas vu dans ton plugin où est définie cette fonction.

Committo,Ergo:Sum

* Committo,Ergo:sum tapuscrivait, le 04/10/2011 17:40:

Quant à SoyezCréateurs, c'est celui-ci :
Connexion · GitLab

Et à l'invitation de b_b sur #IRC, j'ai regardé dans ecrire/inc/agenda.php ligne 212 :
return "<div><div id='$id'></div>$res</div>";
Et j'ai remplacé par :
return "$res";

Et je n'ai plus d'erreur W3C :slight_smile:

Tu es sûr de ça ? Comme "$res" commence normalement par "<table>", si un"<table" est accepté par la DTD XHTML 1 alors un "<div>" doit l'être aussi à ce même endroit.

Pour ma part, j'en étais arrivé à la conclusion que c'était la fonction sc_Agenda_memo_full qui fait des hypothèses exagérées sur le code produit par inc/agenda, mais je n'ai pas vu dans ton plugin où est définie cette fonction.

C'est ici :Connexion · GitLab

Merci

Hum, mettre des majuscules dans le squelette et mettre des minuscules dans le fichier PHP, c'est perturbant.

La fonction problématique est en fait sc_agenda_mini, qui appelle http_calendirer_init mais je maitiens que pb se posait avant: tu appelles ce filtre pour que son résultat s'insère dans un Tbody, lequel n'admet que des TR comme balise fille. Que http_calendrier_init retourne un Table ou un Div, ton squelette ne sera jamais valide.

Committo,Ergo:Sum

* Committo,Ergo:sum tapuscrivait, le 04/10/2011 18:20:

Et à l'invitation de b_b sur #IRC, j'ai regardé dans ecrire/inc/agenda.php ligne 212 :
return "<div><div id='$id'></div>$res</div>";
Et j'ai remplacé par :
return "$res";

Et je n'ai plus d'erreur W3C :slight_smile:

Tu es sûr de ça ? Comme "$res" commence normalement par "<table>", si un"<table" est accepté par la DTD XHTML 1 alors un "<div>" doit l'être aussi à ce même endroit.

Pour ma part, j'en étais arrivé à la conclusion que c'était la fonction sc_Agenda_memo_full qui fait des hypothèses exagérées sur le code produit par inc/agenda, mais je n'ai pas vu dans ton plugin où est définie cette fonction.

C'est ici :Connexion · GitLab

Hum, mettre des majuscules dans le squelette et mettre des minuscules dans le fichier PHP, c'est perturbant.

La fonction problématique est en fait sc_agenda_mini, qui appelle http_calendirer_init mais je maitiens que pb se posait avant: tu appelles ce filtre pour que son résultat s'insère dans un Tbody, lequel n'admet que des TR comme balise fille. Que http_calendrier_init retourne un Table ou un Div, ton squelette ne sera jamais valide.

Merci pour ces indications.
Je laisse Potter64 prendre la suite des échanges : c'est lui qui avait étudié le code... (et codé).

Salut,

Hum, mettre des majuscules dans le squelette et mettre des minuscules dans le fichier PHP, c’est perturbant.

La fonction problématique est en fait sc_agenda_mini, qui appelle http_calendirer_init mais je maitiens que pb se posait avant: tu appelles ce filtre pour que son résultat s’insère dans un Tbody, lequel n’admet que des TR comme balise fille. Que http_calendrier_init retourne un Table ou un Div, ton squelette ne sera jamais valide.

Le problème ne se posait pas vraiment avant car les fonctions génériques http_calendrier_* retournaient seulement le contenu du tableau et non le tableau + le header du tableau. Maintenant, avec ta mise à jour, on a tout dans la même fonction, alors qu’avant c’était séparé. Donc pour les agendas codés de telle manière à recevoir seulement le contenu du en php, ça casse tout évidemment…
Il faudrait vraiment mettre tes deux div dans la fonction spécifique des agendas qui sont fait pour. Ça évitera de tout devoir recoder en php ce qui est déjà fait en spip pour juste ça… faire juste un return « $res »; avec le $res qui contient lui même les div…

Ici : http://zone.spip.org/trac/spip-zone/browser/squelettes/soyezcreateurs_net/plugins_2.1/plugins/soyezcreateurs/noisettes/agenda/miniagenda.html j’ai codé de telle manière le header pour prendre en charge les changements de date différement de SPIP aujourd’hui. J’ai fait ça en SPIP. Si je devais mettre à jour tout pour générer caption et thead en php, je pense que tu vois un peu le boulot et aussi l’usine à gaz que ça générerait en php (utilisation de l’api sql par rapport aux boucles, calculs sur les variables avec les dates, …)

bref, je ne sais pas si je suis le seul à avoir créé mon propre agenda en utilisant l’api de l’agenda qui utilisait à l’époque (c’est à dire le tbody seulement en php) mais je crois déjà que ça casserait le miniagenda officiel : http://zone.spip.org/trac/spip-zone/browser/plugins/agenda/2_0_0/formulaires/calendrier_mini.html (celui de SC fonctionne un peu pareil, mais je n’ai pas testé pour savoir si ça le casse vraiment, ça reste une supposition).

Enlever ces div (ou les mettre dans un test) ne serait pas plus simple pour ne pas faire une trop grosse rupture de compatibilité ?

Salut,
Le problème ne se posait pas vraiment avant car les fonctions génériques http_calendrier_* retournaient seulement le contenu du tableau et non le tableau

mais non !
Regarde l'état avant mes modifs:
http://core.spip.org/projects/spip/repository/revisions/16764/entry/branches/spip-2.1/ecrire/inc/agenda.php
tu peux aussi regarder la 2.0 les 1.9 et la 1.8 c'est comme ça aussi.

Il faudrait vraiment mettre tes deux div dans la fonction spécifique des agendas qui sont fait pour.

je ne vois pas de quoi tu parles.

Ça évitera de tout devoir recoder en php ce qui est déjà fait en spip pour juste ça... faire juste un return "$res"; avec le $res qui contient lui même les div...

Ici : Connexion · GitLab j'ai codé de telle manière le header pour prendre en charge les changements de date différement de SPIP aujourd'hui. J'ai fait ça en SPIP. Si je devais mettre à jour tout pour générer caption et thead en php, je pense que tu vois un peu le boulot et aussi l'usine à gaz que ça générerait en php (utilisation de l'api sql par rapport aux boucles, calculs sur les variables avec les dates, ...)

Bien sûr, il s'agit seulement de réaliser enfin que http_calendrier_init ne retourne pas une suite de TR comme tu le dis,
mais quelque chose qui encpasule cette suite. Avant la capsule était un table, maintenant c'est div+table, mais ton code aurait dû faire ce boulot depuis le début. Et il n'a pas été fait parce qu'en fait cette invalidité XML n'est pas vraiment gênante: ça s'affiche quand même.

bref, je ne sais pas si je suis le seul à avoir créé mon propre agenda en utilisant l'api de l'agenda qui utilisait à l'époque (c'est à dire le tbody seulement en php) mais je crois déjà que ça casserait le miniagenda officiel : Connexion · GitLab (celui de SC fonctionne un peu pareil, mais je n'ai pas testé pour savoir si ça le casse vraiment, ça reste une supposition).

Enlever ces div (ou les mettre dans un test) ne serait pas plus simple pour ne pas faire une trop grosse rupture de compatibilité ?

Aujourd'hui comme hier ce code est valide XHTML, pourquoi faudrait-il le changer alors que c'est le tien qui ne l'a jamais été ?

Plus généralement, avant de prétendre qu'un Commit casse quelque chose, ce serait bien de vérifier qu'on a pas découvert un vieug bug chez soi.

  Committo,Ergo:Sum

Salut,

Le problème ne se posait pas vraiment avant car les fonctions génériques http_calendrier_* retournaient seulement le contenu du tableau et non le tableau

mais non !
Regarde l’état avant mes modifs:
http://core.spip.org/projects/spip/repository/revisions/16764/entry/branches/spip-2.1/ecrire/inc/agenda.php
tu peux aussi regarder la 2.0 les 1.9 et la 1.8 c’est comme ça aussi.

peut-être les fonctions du core, mais on était en aucun cas obligé dans nos fonctions de retourner tout le tableau, on pouvait très bien retourner une partie seulement du tableau et faire le reste en html, là non, tu nous obliges à tout faire en php…

Il faudrait vraiment mettre tes deux div dans la fonction spécifique des agendas qui sont fait pour.

je ne vois pas de quoi tu parles.

les mettre dans les fonctions du core (du genre http_calendrier_mois). On a déjà http://core.spip.org/projects/spip/repository/revisions/16764/entry/branches/spip-2.1/ecrire/inc/agenda.php#L226 avec le table en dur, pourquoi ne pas mettre le div ici et tout est arrangé ? la compatibilité sera rétablie ainsi…

Ça évitera de tout devoir recoder en php ce qui est déjà fait en spip pour juste ça… faire juste un return « $res »; avec le $res qui contient lui même les div…

Ici : http://zone.spip.org/trac/spip-zone/browser/squelettes/soyezcreateurs_net/plugins_2.1/plugins/soyezcreateurs/noisettes/agenda/miniagenda.html j’ai codé de telle manière le header pour prendre en charge les changements de date différement de SPIP aujourd’hui. J’ai fait ça en SPIP. Si je devais mettre à jour tout pour générer caption et thead en php, je pense que tu vois un peu le boulot et aussi l’usine à gaz que ça générerait en php (utilisation de l’api sql par rapport aux boucles, calculs sur les variables avec les dates, …)

Bien sûr, il s’agit seulement de réaliser enfin que http_calendrier_init ne retourne pas une suite de TR comme tu le dis,
mais quelque chose qui encpasule cette suite. Avant la capsule était un table, maintenant c’est div+table, mais ton code aurait dû faire ce boulot depuis le début. Et il n’a pas été fait parce qu’en fait cette invalidité XML n’est pas vraiment gênante: ça s’affiche quand même.

ça, c’est toi qui le décide que dorénavant on doit retourner tout un tableau entier avec cette fonction… avant on pouvait retourner ce que l’on voulait, dont une suite de tr ce qui était le plus logique… pourquoi retourner un entête dans du php ?

bref, je ne sais pas si je suis le seul à avoir créé mon propre agenda en utilisant l’api de l’agenda qui utilisait à l’époque (c’est à dire le tbody seulement en php) mais je crois déjà que ça casserait le miniagenda officiel : http://zone.spip.org/trac/spip-zone/browser/plugins/agenda/2_0_0/formulaires/calendrier_mini.html (celui de SC fonctionne un peu pareil, mais je n’ai pas testé pour savoir si ça le casse vraiment, ça reste une supposition).

Enlever ces div (ou les mettre dans un test) ne serait pas plus simple pour ne pas faire une trop grosse rupture de compatibilité ?

Aujourd’hui comme hier ce code est valide XHTML, pourquoi faudrait-il le changer alors que c’est le tien qui ne l’a jamais été ?

Plus généralement, avant de prétendre qu’un Commit casse quelque chose, ce serait bien de vérifier qu’on a pas découvert un vieug bug chez soi.

Non, il n’est plus valide avec ce commit, tu viens de le dire juste avant.

Et j’ai été vérifier, retourner le div dans http_calendrier_init casse AUSSI la validité xhtml de l’agenda du plugin original. Là, je pense que vraiment ça va poser un problème à beaucoup de monde…

Commiter quelque chose qui a l’air de plus sémantique dans du php, c’est cool, mais faut penser aussi aux codes des autres qui pensent la sémantique d’une autre manière.

Je n'ai jamais dit ça et je répète que ce code est valide, as-tu appliqué le validateur sur le core avant de balancer une énormité pareille ?

De manière générale on est dans le dialogue de sourds: j'ai été voir ton code et j'ai dit qu'appeller http_calendrier_init entre deux balises "tbody" ne pouvait que produire du code XHTML invalide, aujourd'hui comme hier, et tu ne réponds pas sur ce point précis. Tu parles d'un "plugin original", sans même donner son URL pour qu'on puisse le regarder.

Je rappelle que ce commit permet aux téléphones portables d'afficher correctement les calendriers; cet aspect devrait t'intéresser, je ne comprends pas cette attitude qui consiste à demander que SPIP soit figé sur une DTD obsolète, a fortiori quand, comme je l'affirme, c'est ton code qui est à revoir depuis longtemps, code que tu n'as visiblement pas relu entre tes deux mails, c'est pourquoi on n'avance pas.

Committo,Ergo:Sum

06/10/2011, Emmanuel:

Je n'ai jamais dit ça et je répète que ce code est valide, as-tu
appliqué le validateur sur le core avant de balancer une énormité
pareille ?

M'enfin, restons courtois. :slight_smile:

Hello,

je ne pense pas que l’usabilité sur téléphone portable puisse se ramener à un problème de structure de code HTML.

En l’état, dans sa dernière version
http://www.spip-contrib.net/?page=agenda

n’est guère inutilisable sur un téléphone portable :

  • le survol n’existe pas et il n’est donc pas possible d’accéder à la navigation « rapide » par le bandeau, pour se déplacer de plusieurs mois
    (de ce point de vue, les anciennes versions de l’agenda fonctionnaient mieux : sur http://zine.spip.org/?page=agenda je peux faire apparaître la navigation « rapide » par un clic sur l’icône du calendrier, ce qui ne semble plus fonctionnel maintenant)
  • les boutons de la barre de navigation sont tellement petits qu’il faut zoomer à fond pour arriver à cliquer dessus, ce qui rend toute navigation très compliquée (puisqu’après chargement de la page, on revient au zoom mini, il faut rezoomer etc…)

A comparer avec le calendrier de SPIP3, qui repose sur la librairie fullcalendar
http://distroy.tetue.net/?page=calendrier
dont l’affichage du calendrier s’adapte à la largeur des petits écrans (du fait de l’adaptation de la dist réalisée par tetue)
et qui conserve du coup des gros boutons clicables dans ces conditions d’usage.

Par ailleurs, le chargement JSON des événements lors de la navigation permet d’avoir des hits à moins de 1Ko, et d’être réactif même avec une connexion lente type réseau GSM.

Cédric
(tests réalisés sur iphone, à compléter par des retours sur d’autres plateformes)

* RealET tapuscrivait, le 04/10/2011 16:52:

* ben.spip@gmail.com tapuscrivait, le 03/10/2011 18:44:

Author: ben.spip@gmail.com
Date: 2011-10-03 18:44:01 +0200 (lun, 03 oct 2011)
New Revision: 18587

Details: http://core.spip.org/projects/spip/repository/revisions/18587

Et http://core.spip.org/projects/spip/repository/revisions/18599 clos le problème de validité W3C rencontré avec SoyezCréateurs.
Merci.