fix(imagor): stop mangling the watermark filter, use media picker for the logo #33

Merged
csaeum merged 1 commit from fix/imagor-watermark-media-picker into main 2026-08-09 16:30:50 +00:00
Owner

Closes #32.

Root Cause (live auf projektleder.de gefunden): watermark() bettete eine zweite absolute https://-URL als Filter-Argument ein (verschachtelter imagor-Self-Call zum Vorab-Resize des Logos). Diese wurde irgendwo zwischen Shopware und imagor gemangelt — kein Log-Eintrag in imagor, keine Fehlermeldung, einfach stillschweigend kein Wasserzeichen.

  • Logo wird jetzt direkt referenziert (schema-los wie das Hauptbild), kein verschachtelter Resize-Call mehr
  • Logo-Auswahl über Shopwares Medien-Picker (sw-media-field) statt Freitext-URL
  • imagorBaseUrl nutzt jetzt Shopwares natives url-Feld
  • imagorLogoWidth/-Height beschreiben jetzt die tatsächliche Pixelgröße des hochgeladenen Logos (nur für Text-Offset, kein Resize-Enforcement mehr)

Live in DDEV mit echtem Medium verifiziert: generierte URL enthält jetzt an keiner Stelle mehr ein eingebettetes https:// außer am Anfang. 54 Unit-Tests grün.

Closes #32. Root Cause (live auf projektleder.de gefunden): `watermark()` bettete eine zweite absolute `https://`-URL als Filter-Argument ein (verschachtelter imagor-Self-Call zum Vorab-Resize des Logos). Diese wurde irgendwo zwischen Shopware und imagor gemangelt — kein Log-Eintrag in imagor, keine Fehlermeldung, einfach stillschweigend kein Wasserzeichen. - Logo wird jetzt direkt referenziert (schema-los wie das Hauptbild), kein verschachtelter Resize-Call mehr - Logo-Auswahl über Shopwares Medien-Picker (`sw-media-field`) statt Freitext-URL - `imagorBaseUrl` nutzt jetzt Shopwares natives `url`-Feld - `imagorLogoWidth`/`-Height` beschreiben jetzt die tatsächliche Pixelgröße des hochgeladenen Logos (nur für Text-Offset, kein Resize-Enforcement mehr) Live in DDEV mit echtem Medium verifiziert: generierte URL enthält jetzt an keiner Stelle mehr ein eingebettetes `https://` außer am Anfang. 54 Unit-Tests grün.
The watermark() filter embedded a second absolute https:// URL (a
nested imagor self-call to pre-resize the logo) as a filter argument.
Live testing on projektleder.de showed this got mangled somewhere
between Shopware and imagor (the "function(https://...)" pattern
looks like an SSRF/injection attempt) - imagor's logs never even saw
the request, so no watermark was applied, with no visible error.

Fixes:
- Logo is now referenced directly (scheme stripped, like the main
  image) instead of via a nested imagor resize call.
- Logo is selected through Shopware's native media picker
  (sw-media-field) instead of a free-text URL field.
- imagorBaseUrl now uses Shopware's dedicated url field type.
- imagorLogoWidth/-Height now describe the actual pixel size of the
  uploaded logo (for text-offset math only, no resize enforcement).

closes #32

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnKDEjUKQrLSD7Fs8x79G4
csaeum merged commit 4fff795a67 into main 2026-08-09 16:30:50 +00:00
csaeum deleted branch fix/imagor-watermark-media-picker 2026-08-09 16:30:51 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SW-Plugins/wsc_swplugin_aiseotools!33
No description provided.