Le nouveau PhotoSwipeLightbox expérimental (siteSettings.experimental_lightbox) contient des bugs lorsque le lien de l’image se trouve dans Discourse Solved ou dans le composant de téléchargement dans admin/config/logo. La cause première est que PhotoSwipeLightbox a besoin de la largeur et de la hauteur de l’image déjà chargée, tandis que Discourse Solved et le composant de téléchargement n’ont pas ces attributs.
Sans ces attributs, l’image sera étirée pour remplir la fenêtre du navigateur, provoquant une distorsion, comme le montre la figure ci-jointe.
Ce commit ajoute un mécanisme de préchargement pour les images sans dimensions afin d’obtenir leurs dimensions, afin qu’elles puissent être affichées normalement.
Merci d’avoir signalé ce problème et d’avoir partagé une solution.
J’ai ajouté quelques commentaires/suggestions sur la PR, mais dans l’ensemble, je pense que nous avons besoin d’une solution de repli comme celle-ci pour gérer les cas limites.
D’accord, merci. Je vais ajouter des commentaires pertinents dès que j’aurai du temps.
context "lorsque les attributs de données sont manquants" do
it "précharge les images et définit les dimensions" do
upload_1.update(width: 400, height: 300)
post.update(
cooked:
"<p><a href=\"#{upload_1.url}\" class=\"lightbox\" data-download-href=\"#{upload_1.url}\">[image]</a></p>",
)
topic_page.visit_topic(topic)
lightbox_link = find("#post_1 a.lightbox")
expect(lightbox_link["data-target-width"]).to be_nil
expect(lightbox_link["data-target-height"]).to be_nil
lightbox_link.click
expect(lightbox).to be_visible
expect(lightbox_link["data-target-width"]).to eq(upload_1.width.to_s)
expect(lightbox_link["data-target-height"]).to eq(upload_1.height.to_s)
end
end
Je vais ajouter cela au fichier lightbox_spec.rb en tant que test unitaire pour les images sans dimensions. Cela vous semble-t-il correct ?
De plus, j’ai apporté quelques modifications à la logique de discrimination pour gérer ceux qui ont des métadonnées mais dont les métadonnées échouent à contenir les informations de taille. (c’est-à-dire le composant de téléchargement)