Export Web/SCORM : corrige le chemin de l'icône doublé "static/static/"
Le premier correctif ("static/icons/x.svg") ne suffisait pas : cette URL
est posée en style inline (--icon-url) mais CONSOMMÉE par `mask-image:
var(--icon-url)` dans static/style.css (.icon-svg) — une URL relative
dans une propriété personnalisée CSS se résout par rapport à la feuille
de style où le var() est UTILISÉ, pas où elle est définie (piège CSS
connu). Résultat : "static/icons/x.svg" redevenait
"static/static/icons/x.svg" une fois résolu depuis static/style.css
(CORS bloqué — deuxième rapport du même utilisateur). Seul "icons/x.svg"
(sans le préfixe "static/") est correct une fois résolu depuis
static/style.css. Corrigé côté rendu initial
(_relativize_absolute_urls) et côté port JS (forgeRenderIcone, qui
régénère ce widget après une action).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e08c53e042
commit
b60fe63a54
@@ -56,9 +56,16 @@ def test_export_scorm_icon_widget_uses_a_relative_url(client, game):
|
||||
part de la racine du serveur Flask) — jamais réécrit par le refactor
|
||||
asset_url de templates/play.html (celui-ci ne touche que les <script>/
|
||||
<link> du template, pas le rendered_html déjà bake dans le payload).
|
||||
Sans _relativize_absolute_urls (build_scorm_package.py), un index.html
|
||||
ouvert en local (file://) déclenchait un blocage CORS sur cette icône
|
||||
("la requête CORS n'utilise pas HTTP") — voir aussi le miroir JS
|
||||
|
||||
Cette URL, posée en style INLINE (--icon-url), est CONSOMMÉE par
|
||||
`mask-image: var(--icon-url)` dans static/style.css (voir .icon-svg) —
|
||||
une URL relative dans une propriété personnalisée CSS se résout par
|
||||
rapport à LA FEUILLE DE STYLE où le var() est utilisé, pas où elle est
|
||||
définie (piège CSS connu) : un premier correctif ("static/icons/x.svg")
|
||||
redevenait donc "static/static/icons/x.svg" une fois résolu depuis
|
||||
static/style.css (CORS bloqué sur ce chemin doublé — deuxième rapport
|
||||
du même utilisateur) — seul "icons/x.svg" (sans "static/") est correct
|
||||
une fois résolu depuis static/style.css. Voir aussi le miroir JS
|
||||
(forgeRenderIcone, static/js/play/offline/render-special-widgets.js),
|
||||
qui régénère ce même widget après une action, et devait être corrigé
|
||||
séparément."""
|
||||
@@ -72,7 +79,8 @@ def test_export_scorm_icon_widget_uses_a_relative_url(client, game):
|
||||
import io
|
||||
with zipfile.ZipFile(io.BytesIO(resp.data)) as zf:
|
||||
html = zf.read("index.html").decode("utf-8")
|
||||
assert "static/icons/star.svg" in html
|
||||
assert "icons/star.svg" in html
|
||||
assert "static/icons/star.svg" not in html
|
||||
assert "/static/icons/star.svg" not in html
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user