新しい実験的な PhotoSwipeLightbox(siteSettings.experimental_lightbox)には、Discourse Solved 内に画像リンクが存在する場合や、admin/config/logo のアップロードコンポーネントに画像リンクが存在する場合にバグが含まれています。根本的な原因は、PhotoSwipeLightbox が既に読み込まれた画像から幅と高さを必要とするのに対し、Discourse Solved とアップロードコンポーネントにはこれらの属性がないことです。
これらの属性がないと、画像はブラウザウィンドウ全体を埋めるように引き伸ばされ、添付された図に示すように歪みが発生します。
このコミットは、寸法のない画像の寸法を取得するためのプリロードメカニズムを追加し、正常に表示できるようにします。
「いいね!」 2
davidb
(David B)
2
ご報告いただき、また修正を共有いただきありがとうございます。
PRにコメントや提案を追加しましたが、全体として、このようなフォールバックが必要だと考えています。これにより、エッジケースをキャッチできます。
OK、ありがとうございます。空いたときにコメントに応じて洞察を加えます。
context "データ属性が欠落している場合" do
it "画像を事前読み込みし、サイズを設定する" 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
このテストを lightbox_spec.rb にユニットテストとして追加しますが、問題ないでしょうか?
「いいね!」 1
また、メタ情報を持つがメタ情報にサイズ情報が含まれていない(つまり、アップロードコンポーネント)場合の差別ロジックをいくつか変更しました。
const missingMetaData = !item
.querySelector(".meta")
?.textContent.trim()
.split(/x|×/)
.every((v) => v && +v > 0);
「いいね!」 1
davidb
(David B)
6
これに取り組んでいただき、プルリクエストのレビューにご対応いただきありがとうございます。これでマージしました。
「いいね!」 1
@davidb ライトボックスコンポーネントへの最近のコミットに、Discourse Solved やその他の項目でコンポーネントの起動を妨げるバグがあるようです。
問題はこのコミットに関連している可能性があります
https://github.com/discourse/discourse/pull/36240、https://github.com/discourse/discourse/pull
/36214。確信はありません。
再現は現在こちらで行うことができます。
指定されたページで、引用符または Discourse Solved コンポーネントから [IMG_6085] をクリックするなどです。
「いいね!」 1