Kommentarfeld fixed in SW 5.6.10

Hallo!

Suche einen Programmierer, der mir das Kommentarfeld in SW5.6.10 fixed (Lt. Lenz handelt es sich da um einen Bug in SW). Beim Ablehnen von Cookies am Shopanfang wird bei Bestellabschluss das Kommentarfeld geleert (Bestellkommentarplugin von Lenz, Original Kommentarfeld verhält sich aber genau so), wenn der Kunde nochmals die Menge ändert.

Mit KI habe ich schon alles probiert, inkl. Javascript im Theme, etc., leider führte rein gar nichts zum Erfolg. Eventuell liegt es auch an einem Mengenanzahlplugin, das ich aber nicht abschalten kann da benötigt.

Problem: Session-Verlust bei AJAX-Requests (Mengenänderung im Checkout), wenn Cookies abgelehnt werden. Dadurch wird das Kommentarfeld (sComment) geleert.

Manuelle JavaScript-Workarounds (LocalStorage) im Theme greifen nicht, vermutlich weil der AJAX-Reload den DOM zu schnell/hart überschreibt.

Am sinnvollsten wäre, wenn der Text im Kommentarfeld als “technisch notwendig” klassifiziert wird und so geschützt bleiben würde. Ich kann zwar die Cookie Abfrage abschalten auf nur “Annehmen”, aber das ist mir rechtlich zu unsicher.

Infos bitte an: gelöst

Grüße,

Stephan

Die Ursache dahinter ist der BlackHoleStorage welcher eingerichtet wird und somit weder geschrieben noch gelesen werden kann aus sowohl Localstorage als auch Sessionstorage, was mir noch nicht ganz so klar ist, ist warum geprüft wird ob die Cookies akzeptiert wurden obwohl Session unter technisch notwendig steht.

Die interessante Datei ist hierbei diese:
/themes/Frontend/Responsive/frontend/_public/src/js/jquery.storage-manager.js

Vielleicht kann dir hier noch jemand weiterhelfen warum das ganze so gemacht wird, bevor du einfach etwas änderst, aber wenn diese Abfrage draußen ist wird der Kommentar sauber übernommen und auch die Session gespeichert obwohl die Cookies abgelehnt wurden.

Alex

Super, danke. Habe Deine Antwort in Gemini eingegeben und das wäre nun der Fix, den ich auf allen Browsern getestet habe, auch incognito Mode:

themes/Frontend/Responsive/frontend/_public/src/js/jquery.state-manager.js

Zeile einfügen:

function hasCookiesAllowed () {
    return true; // <--- Diesen Befehl einfügen!

    if (window.cookieRemoval === 0) {
        return true;
    }
    // ... der Rest wird nun vom Browser ignoriert

Cache leeren, fertig!

Warum das funktioniert:

Durch das return true; direkt am Anfang der Funktion wird der ganze „BlackHole“-Mechanismus ausgehebelt. Der Browser darf wieder in den LocalStorage schreiben, und Shopware verliert den Kommentar nicht mehr, egal was im Banner geklickt wurde.

Herzlichen Dank für Deinen Fingerzeig!

Hey,

ich wär vorsichtig.

Wenn dann würde ich hier die Prüfung rausnehmen:

Bei deinem Vorgehen wird jetzt immer gesagt der Kunde hätte alle Cookies akzeptiert, sofern die Prüfung noch wo anders verwendet wird(Captcha, CSRF usw). Ich glaube kaum das du das möchtest.

Deswegen hinterfragen was einem die KI auch ausspuckt.

Die Funktion prüft ja ob alle Cookies akzeptiert wurden und durch deinen return ist das ganze immer wahr.

1 „Gefällt mir“

So in etwa? Funktionieren tut es. Zeile 60 bis 62, jquery.storage-manager.js

            } else {
                enableBlackHoleStorage();
				//Kommentarfix
				storage.session = window.sessionStorage; 
				//Kommentarfix