[spip-dev] SPIP 1.9 Bug avec <emb|docxxx>

dans SPIP 1.9

<emb3354|left>

me donne

<div class='spip_document_3344 spip_documents spip_documents_left' style='float: left; width: 512px;'>
<img src='IMG/cache-240x300_dalila-240x300.jpg' width='240' height='300' alt="Dalila - 63.3&amp;nbsp;ko" /><div class='spip_doc_titre'><strong>Dalila</strong></div></div>

Je ne comprend pas d'où est sorti width: 512px

Est-il possible de modifier cette valeur

Sinon quelle est la logique du fonctionnement de <emb>???

<emb3354|left>

me donne

<div class='spip_document_3344 spip_documents spip_documents_left'
style='float: left; width: 512px;'>
<img src='IMG/cache-240x300_dalila-240x300.jpg' width='240'
height='300' alt="Dalila - 63.3&amp;nbsp;ko" /><div
class='spip_doc_titre'><strong>Dalila</strong></div></div>

Je ne comprend pas d'où est sorti width: 512px

Je pense qu'elle vient de <emb3354|left>, id est il s'agit de la largeur du
document 3354; ensuite ton <emb> étant filtré par |réduire_image, il passe à
300 pixels de large, mais le div englobant n'est pas informé du changement.

Est-il possible de modifier cette valeur

Il faudrait probablement supprimer ce width, soit au niveau de
reduire_image, soit, s'il ne sert pas vraiment, au niveau de la génération
de <emb>

Sinon quelle est la logique du fonctionnement de <emb>???

Afficher le doc directement au milieu de la page.

-- Fil

Fil a écrit :

<emb3354|left>

me donne

<div class='spip_document_3344 spip_documents spip_documents_left' style='float: left; width: 512px;'>
<img src='IMG/cache-240x300_dalila-240x300.jpg' width='240' height='300' alt="Dalila - 63.3&amp;nbsp;ko" /><div class='spip_doc_titre'><strong>Dalila</strong></div></div>

Je ne comprend pas d'où est sorti width: 512px

Je pense qu'elle vient de <emb3354|left>, id est il s'agit de la largeur du
document 3354; ensuite ton <emb> étant filtré par |réduire_image, il passe à
300 pixels de large, mais le div englobant n'est pas informé du changement.

Est-il possible de modifier cette valeur

Il faudrait probablement supprimer ce width, soit au niveau de
reduire_image, soit, s'il ne sert pas vraiment, au niveau de la génération
de <emb>

Sinon quelle est la logique du fonctionnement de <emb>???

Afficher le doc directement au milieu de la page.

-- Fil

Je me demandais à quoi servait ici l'attribut style.
"float: left;" est déjà défini par la classe spip_documents_left et la largeur de la div est fixée par la largeur de l'image.

Ne serait-il pas plus utile d'avoir id='spip_document_3344' plutôt que class='spip_document_3344' ?

Jean

Je me demandais à quoi servait ici l'attribut style.
"float: left;" est déjà défini par la classe spip_documents_left

Ca sert à assurer un minimum d'alignement même en l'absence de
spip_style.css

et la
largeur de la div est fixée par la largeur de l'image.

Oui, c'est ça qui est discutable, justement

Ne serait-il pas plus utile d'avoir id='spip_document_3344' plutôt que
class='spip_document_3344' ?

Non car tu peux inclure plusieurs fois la même illustration dans un article
(par exxemple).

-- Fil

Bonjour,

Dans le fichier article.html du dossier dist de la version du 18 août, un <br class="nettoyeur" /> mal placé ou inutile produit un code non conforme. Il pourrait être déplacé entre <li> et </li>.

[(#REM) Autres documents joints a l'article ]
<B_documents_joints>
<div id="documents_joints">
  <h2><:titre_documents_joints:></h2>
  <ul>
<BOUCLE_documents_joints(DOCUMENTS) {id_article} {mode=document} {par num titre, date} {doublons}>
    <li>
      <div class="spip_doc_titre"><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</a> <small>(#TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)])</small></div>
      [<div class="spip_doc_descriptif">(#DESCRIPTIF)</div>]</li>
    <br class="nettoyeur" />
</BOUCLE_documents_joints>
  </ul>
</div>
</B_documents_joints>

Version du 18 août

Si je mets un lien sur une image
[<img17|left>->doc7]
cela produit le code suivant :

<p class="spip"><a href="IMG/jpg/004.jpg" class="spip_in">
<span class='spip_document_17 spip_documents spip_documents_left'
  style='float:left; width: 150;'>
  <img src='IMG/cache-150x112/_018-150x112.jpg' width='150' height='112' alt=" (JPG)" />
</span>
</a></p>

Sous Windows, cela fonctionne bien avec Firefox. Avec IE6, au survol, il n'y a pas la petite main, l'url apparaît bien dans la barre d'état, mais l'image n'est pas cliquable.
La page est valide xhtml 1.0 transitional.
Avec le <a> à l'intérieur de <span> </span>, cela fonctionne.

Dans style='float:left; width: 150;', il manque l'unité px qui a disparu il y a peu, il me semble.

Jean

Est-ce dû à l'introduction des modèles ? Ou est-ce que ça date d'avant ?

Je pense qu'on pourrait prévoir de passer dans #ENV{lien} le lien, s'il
existe, qui entoure le modèle...

@ Jean Biron <jean.biron@libertysurf.fr> :

Version du 18 août

Si je mets un lien sur une image
[<img17|left>->doc7]
cela produit le code suivant :

<p class="spip"><a href="IMG/jpg/004.jpg" class="spip_in">
<span class='spip_document_17 spip_documents spip_documents_left'
  style='float:left; width: 150;'>
  <img src='IMG/cache-150x112/_018-150x112.jpg' width='150' height='112'
alt=" (JPG)" />
</span>
</a></p>

Sous Windows, cela fonctionne bien avec Firefox. Avec IE6, au survol, il
n'y a pas la petite main, l'url apparaît bien dans la barre d'état, mais
l'image n'est pas cliquable.
La page est valide xhtml 1.0 transitional.
Avec le <a> à l'intérieur de <span> </span>, cela fonctionne.

Dans style='float:left; width: 150;', il manque l'unité px qui a disparu
il y a peu, il me semble.

-- Fil

Dans le fichier article.html du dossier dist de la version du 18 août,
un <br class="nettoyeur" /> mal placé ou inutile produit un code non
conforme. Il pourrait être déplacé entre <li> et </li>.

je l'ai enlevé, car ici on ne produit que quelques mots et un lien.

-- Fil

> Version du 18 août
>
> Si je mets un lien sur une image
> [<img17|left>->doc7]
> cela produit le code suivant :
>
> <p class="spip"><a href="IMG/jpg/004.jpg" class="spip_in">
> <span class='spip_document_17 spip_documents spip_documents_left'
> style='float:left; width: 150;'>
> <img src='IMG/cache-150x112/_018-150x112.jpg' width='150' height='112'
> alt=" (JPG)" />
> </span>
> </a></p>
>
> Sous Windows, cela fonctionne bien avec Firefox. Avec IE6, au survol, il
> n'y a pas la petite main, l'url apparaît bien dans la barre d'état, mais
> l'image n'est pas cliquable.
> La page est valide xhtml 1.0 transitional.
> Avec le <a> à l'intérieur de <span> </span>, cela fonctionne.

C'est réparé

> Dans style='float:left; width: 150;', il manque l'unité px qui a disparu
> il y a peu, il me semble.

Ca devrait être bon aussi (à vérifier)

-- Fil

Fil a écrit :

Version du 18 août

Si je mets un lien sur une image
[<img17|left>->doc7]
cela produit le code suivant :

<p class="spip"><a href="IMG/jpg/004.jpg" class="spip_in">
<span class='spip_document_17 spip_documents spip_documents_left'
  style='float:left; width: 150;'>
  <img src='IMG/cache-150x112/_018-150x112.jpg' width='150' height='112' alt=" (JPG)" />
</span>
</a></p>

Sous Windows, cela fonctionne bien avec Firefox. Avec IE6, au survol, il n'y a pas la petite main, l'url apparaît bien dans la barre d'état, mais l'image n'est pas cliquable.
La page est valide xhtml 1.0 transitional.
Avec le <a> à l'intérieur de <span> </span>, cela fonctionne.

C'est réparé

Dans style='float:left; width: 150;', il manque l'unité px qui a disparu il y a peu, il me semble.

Ca devrait être bon aussi (à vérifier)

Je ne sais si c'est un comportement normal :

si on met dans un article une image qui fait 2000 px de large, l'image est bien réduite sur le site public quand on affiche l'article, mais la largeur du div est de 2000px aussi, ce qui donne au moins une page de 2000px de large. Voici le code que ça donne (deuxième ligne pour la largeur du div) :

<div class="texte"><div class='spip_document_4 spip_documents spip_documents_center' style='width: 2000px;'>
<a href="IMG/jpg/mon_image.jpg" type="image/jpeg"><img src='IMG/jpg/mon_image.jpg' width='520' height='390' alt="JPG - 716.7&amp;nbsp;ko" title="JPG - 716.7 ko" /></a>
<div class='spip_doc_titre'><strong>Mon titre d'image</strong></div>
<div class='spip_doc_descriptif'>Mon descriptif d'image</div></div></div>

Franck Ducas a écrit :

Je ne sais si c'est un comportement normal :

si on met dans un article une image qui fait 2000 px de large, l'image est bien réduite sur le site public quand on affiche l'article, mais la largeur du div est de 2000px aussi, ce qui donne au moins une page de 2000px de large. Voici le code que ça donne (deuxième ligne pour la largeur du div) :

<div class="texte"><div class='spip_document_4 spip_documents spip_documents_center' style='width: 2000px;'>
<a href="IMG/jpg/mon_image.jpg" type="image/jpeg"><img src='IMG/jpg/mon_image.jpg' width='520' height='390' alt="JPG - 716.7&amp;nbsp;ko" title="JPG - 716.7 ko" /></a>
<div class='spip_doc_titre'><strong>Mon titre d'image</strong></div>
<div class='spip_doc_descriptif'>Mon descriptif d'image</div></div></div>

Ca va au delà d'un lien sur une image.

Je détaille la procèdure reproductible sur la 7137.

Dans la modification d'un article dans l'espace privé, dans l'encadré "Ajouter une image", je télécharge une image de plus de 2000px. L'interface me donne, en dessous de l'image, <img1|left>, <img1|center>, <img1|right>. Je mets par exemple <img1|right> dans le corps de l'article, et j'enregistre.

Lorsque je vais voir l'article en ligne, mon image est bien réduite à 500px de largeur environ et tout est parfait.

Je retourne dans l'espace privé, puis je vais à nouveau dans la modification du même article, et cette fois-ci j'ajoute un titre et une description à mon image. J'enregistre les modifications générales sur l'article. Puis je retourne directement dans la modification du même article, et <img1|left>, <img1|center>, <img1|right> ont laissé la place à un <doc1> (qui contient le même titre et le même descriptif que j'ai rentré aupravant sur l'"img1"). Je suis obligé de mettre <doc1|right> dans le corps de l'article pour que mon image s'affiche dans l'espace public (sinon elle ne s'affiche plus : normale, elle porte maintenant le nom "doc1" au lieu de "img1" ). Mais cette fois-ci la largeur du div correspond à la largeur même de l'image.

Faut-il tester autre chose ?

si on met dans un article une image qui fait 2000 px de large, l'image
est bien réduite sur le site public quand on affiche l'article, mais la
largeur du div est de 2000px aussi, ce qui donne au moins une page de
2000px de large. Voici le code que ça donne (deuxième ligne pour la
largeur du div) :

Oui, comme dit récemment (avant-hier ?) c'est une insuffisance, soit du
filtre reduire_image qui devrait vérifier cette div, soit du modèle qui ne
devrait pas mettre 200px dans le div.

La question est : faut-il mettre ce width dans le div englobant ?

-- Fil

si on met dans un article une image qui fait 2000 px de large, l'image
est bien réduite sur le site public quand on affiche l'article, mais la
largeur du div est de 2000px aussi, ce qui donne au moins une page de
2000px de large. Voici le code que ça donne (deuxième ligne pour la
largeur du div) :

<div class="texte"><div class='spip_document_4 spip_documents
spip_documents_center' style='width: 2000px;'>
<a href="IMG/jpg/mon_image.jpg" type="image/jpeg"><img
src='IMG/jpg/mon_image.jpg' width='520' height='390' alt="JPG -
716.7&amp;nbsp;ko" title="JPG - 716.7 ko" /></a>
<div class='spip_doc_titre'><strong>Mon titre d'image</strong></div>
<div class='spip_doc_descriptif'>Mon descriptif d'image</div></div></div>

La version [7152] devrait donner un bien meilleur comportement.

Le width était introduit pour que la légende (titre et descriptif) du
document ne déborde pas trop en largeur -- qu'il soit contenu, grosso modo,
sous l'image, sauf si celle-ci était trop étroite (120 px), auquel cas il
pouvait déborder un peu.

Mais du coup on introduisait width:2000px pour la légende quand l'image
faisait 2000px. Même quand il n'y avait pas de légende... Ce qui donnait ce
truc affreux quand on réduisait l'image...

Maintenant, changement de stratégie : on donne un espace à la légende,
compris entre 120px et 350px. C'est la largeur de l'image si elle est dans
ces dimensions, sinon c'est 120 (si elle est plus étroite), ou 350 (si elle
est plus large).

L'idéal serait d'utiliser min-width et max-width mais j'ai cru comprendre
que ça ne marchait pas encore partout. On peut donc certainement affiner
encore.

A tester avec des images très petites, moyennes, et très grandes, et un
titre et descriptif très longs.

-- Fil