This commit is contained in:
2026-05-19 09:39:05 +02:00
parent 301cf5123e
commit 958c59b2f8
12 changed files with 562 additions and 16 deletions

View File

@@ -0,0 +1,173 @@
---
plan_id: 20260519-0928-fix-cookie-injectscripts
title: Naprawa bledu injectScripts w Cookie Notice Pro
storage: plan-first
legacy_phase: null
created: 2026-05-19T09:28:06+02:00
status: applied
type: execute
autonomous: true
delegation: auto
files_modified:
- wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js
quality_radar: degraded
---
<objective>
## Goal
Usunac blad JavaScript `Uncaught ReferenceError: injectScripts is not defined` wystepujacy po kliknieciu przycisku akceptacji cookies.
## Purpose
Blad przerywa sciezke akceptacji cookies i moze blokowac poprawne zapisanie preferencji oraz aktualizacje Google Consent Mode.
## Output
Zmodyfikowany plik `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` z lokalna, bezpieczna obsluga brakujacego `injectScripts()`.
</objective>
<context>
## Project Docs
@.paul/PROJECT.md
@.paul/STATE.md
@.paul/config.md
@.paul/codebase/impact_map.md
@.paul/codebase/quality_risks.md
@.paul/codebase/tooling_status.md
## Source Files
@wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js
@wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php
</context>
<clarifications>
- Brak dodatkowych wyjasnien wymaganych. Komunikat z konsoli wskazuje dokladny blad i plik.
- Uzytkownik wskazal poprzednia instancje `c:\visual studio code\projekty\luxmedkrakow.pl\`; tam poprawka polegala na dodaniu `const injectScripts = () => {};` w `cookienoticepro.script.js`.
- Porownanie sekcji `googleConsentModeHandler()` pokazalo, ze obsluga `analytics_storage` jest zgodna z referencja. Pelne kopiowanie skryptu nie jest zalecane, bo referencja zawiera inne roznice konfiguracyjne i dodatkowa obsluge `functionality_storage`/`personalization_storage`.
</clarifications>
<impact_scan>
## Quality Radar
**Status:** degraded
**Tools:** codebase-memory-mcp dostepny, ale projekt nie jest widoczny w rejestrze MCP przy odczycie; `jscpd` i `ast-grep` sa disabled by policy.
## Affected Areas
- `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` - glowna logika banera cookies, preferencji i Google Consent Mode.
- `wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` - ladowanie skryptu i inicjalizacja `window.cookieNoticePro.init()` w stopce.
- Publiczna strona WordPress - `mu-plugin` laduje sie globalnie.
- Referencja: `c:\visual studio code\projekty\luxmedkrakow.pl\wp-content\mu-plugins\cookie-notice-pro\assets\cookienoticepro.script.js:401` zawiera sprawdzona poprawke `const injectScripts = () => {};`.
- Referencyjna sekcja `analytics_storage` dziala tak samo jak w tej instancji; wymaganie analityki po odswiezeniu powinno byc zweryfikowane manualnie po przeniesieniu brakujacej funkcji.
## Duplicate / Hardcoded Risks
- Konfiguracja cookies i Google Consent Mode jest hardcoded w `cookienoticepro.script.js`; poprawka ma nie zmieniac wartosci konfiguracji.
- Elementor i WordPress moga dodawac logike poza repozytorium; weryfikacja musi obejmowac zachowanie w przegladarce.
## Explicit Deferrals
- Pelne mapowanie repozytorium przez `$paul-map-codebase` odlozone, bo zakres poprawki jest waski i dotyczy jednego bledu runtime.
- Nie wlaczamy `jscpd` ani `ast-grep`, bo sa wylaczone w `.paul/config.md`.
- Nie kopiujemy calego pliku z `luxmedkrakow.pl`, bo zawiera inne roznice konfiguracji i logiki consent. Przenosimy tylko minimalna poprawke brakujacej funkcji.
- Jesli po wdrozeniu minimalnej poprawki analityka nadal nie dziala po reloadzie, dopiero wtedy wykonac drugi, kontrolowany plan dla logiki Consent Mode zamiast podmieniac caly skrypt.
</impact_scan>
<acceptance_criteria>
## AC-1: Klikniecie akceptacji nie powoduje ReferenceError
```gherkin
Given baner cookies jest widoczny i `showSettingsBtn` ma wartosc `true`
When uzytkownik klika `#cookieAccept`
Then konsola przegladarki nie pokazuje `Uncaught ReferenceError: injectScripts is not defined`
And cookie zgody oraz preferencji sa nadal zapisywane
```
## AC-2: Istniejaca obsluga Google Consent Mode zostaje zachowana
```gherkin
Given `enableGoogleConsentMode` ma wartosc `true`
When uzytkownik akceptuje cookies albo wraca na strone z istniejaca zgoda
Then `googleConsentModeHandler()` nadal wykonuje sie bez zmiany konfiguracji GTM ani wartosci zgody
```
## AC-3: Analityka dziala po akceptacji zgody i odswiezeniu strony
```gherkin
Given uzytkownik zaakceptowal zgody cookies z wlaczona preferencja `analytics`
When strona zostaje odswiezona
Then zapisane `cnp_prefs` nadal zawiera `analytics`
And Google Consent Mode ustawia `analytics_storage` na `granted`
And tagi analityczne moga uruchomic sie przez GTM zgodnie z udzielona zgoda
```
## AC-4: Panel preferencji nadal dziala
```gherkin
Given uzytkownik otwiera ustawienia cookies przez `#cookieSettings`, `#cookieReject` albo zminimalizowana ikone
When wybiera preferencje i zatwierdza
Then baner zapisuje wybrane preferencje i nie tworzy dodatkowych bledow JS
```
</acceptance_criteria>
<tasks>
<task type="auto">
<name>Task 1: Przenies minimalna poprawke injectScripts z poprzedniej instancji</name>
<files>wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js</files>
<action>
Dodaj `const injectScripts = () => {};` w zakresie glownego IIFE, analogicznie do poprzedniej instancji `luxmedkrakow.pl`, najlepiej przed `changeRootVariables`. Nie kopiuj calego pliku referencyjnego i nie zmieniaj konfiguracji, tekstow, linkow ani logiki `googleConsentModeHandler()`.
</action>
<verify>rg -n "const injectScripts|function injectScripts|injectScripts\\(" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js</verify>
<done>Spelnia AC-1 i nie zmienia konfiguracji z AC-2 oraz AC-3.</done>
</task>
<task type="auto">
<name>Task 2: Zweryfikuj zachowanie analityki po reloadzie</name>
<files>wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js</files>
<action>
Sprawdz, czy aktualna sciezka po zaakceptowaniu cookies zapisuje `analytics` w `cnp_prefs`, a po odswiezeniu strony `googleConsentModeHandler()` odczytuje te preferencje i ustawia `analytics_storage: granted`. Jezeli samo dodanie no-op `injectScripts` nie wystarczy, popraw tylko minimalny fragment odpowiedzialny za odczyt/zapis preferencji albo kolejnosc wywolania `googleConsentModeHandler()`. Nie zmieniaj nazw cookies ani konfiguracji GTM.
</action>
<verify>Manualnie: wyczysc `cnp_*`, zaakceptuj zgody, odswiez strone, sprawdz `cnp_prefs` i Consent Mode dla `analytics_storage`.</verify>
<done>Spelnia AC-2 i AC-3 bez rozszerzania zakresu poza cookies/consent.</done>
</task>
<task type="auto">
<name>Task 3: Zweryfikuj brak regresji runtime</name>
<files>wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js, wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php</files>
<action>
Sprawdz skladnie i sciezke inicjalizacji: PHP nadal laduje `cnp-script`, footer nadal wywoluje `window.cookieNoticePro.init()`, a JS nadal eksportuje `window.cookieNoticePro`.
</action>
<verify>php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php; rg -n "window\\.cookieNoticePro|injectScripts|googleConsentModeHandler" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js</verify>
<done>Spelnia AC-2, AC-3 i potwierdza, ze poprawka nie narusza inicjalizacji pluginu.</done>
</task>
</tasks>
<boundaries>
## Do Not Change
- Nie zmieniac `wp-config.php`.
- Nie zmieniac `CNP_GTM_ID`.
- Nie zmieniac wartosci cookie names: `cnp_consent`, `cnp_prefs`, `cnp_gconsent_ad_prefs`, `cnp_gconsent_analytics_storage`.
- Nie przebudowywac wygladu banera ani tekstow prawnych.
## Scope Limits
- Zakres obejmuje naprawe bledu `injectScripts is not defined`.
- Pelna refaktoryzacja Cookie Notice Pro jest poza zakresem.
- Integracje z dodatkowymi skryptami marketingowymi/analitycznymi sa poza zakresem, chyba ze istnieja juz w tym pliku.
</boundaries>
<verification>
- [ ] `rg -n "injectScripts" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` pokazuje definicje i kontrolowane wywolania.
- [ ] `php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` przechodzi.
- [ ] Manualnie w przegladarce: wyczysc cookies `cnp_*`, odswiez strone, kliknij `Akceptuj`, sprawdz brak `ReferenceError`.
- [ ] Manualnie w przegladarce: po kliknieciu `Akceptuj` odswiez strone i sprawdz, ze analityka ma zgode `analytics_storage: granted`.
- [ ] Manualnie w przegladarce: otworz ustawienia cookies i zatwierdz preferencje, sprawdz brak nowych bledow JS.
- [ ] Quality Radar relevant risks handled or deferred.
</verification>
<success_criteria>
- [ ] Wszystkie AC przechodza.
- [ ] Weryfikacja wykonana lub brak mozliwosci weryfikacji opisany w SUMMARY.md.
- [ ] `.paul/codebase/impact_map.md` i `.paul/codebase/tooling_status.md` zostaly odswiezone, jezeli w apply pojawia sie istotna zmiana zakresu.
</success_criteria>
<output>
SUMMARY.md path: `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md`
</output>

View File

@@ -0,0 +1,75 @@
---
plan_id: 20260519-0928-fix-cookie-injectscripts
title: Naprawa bledu injectScripts w Cookie Notice Pro
completed: 2026-05-19T09:37:49+02:00
storage: plan-first
quality_radar: degraded
---
# Summary: Naprawa bledu injectScripts w Cookie Notice Pro
## Objective
Usunac blad `Uncaught ReferenceError: injectScripts is not defined` w `cookienoticepro.script.js` bez zmiany konfiguracji GTM, nazw cookies, tekstow prawnych ani logiki Google Consent Mode.
## What Was Built
| Area | Result |
|------|--------|
| Cookie Notice Pro JS | Dodano brakujaca funkcje `const injectScripts = () => {};` w zakresie glownego IIFE. |
| Google Consent Mode | Pozostawiono istniejaca obsluge `analytics_storage` bez zmian. |
| PAUL docs | Zapisano plan, wynik apply, radar post-apply i finalne SUMMARY. |
## Files Modified
- `wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` - dodano brakujaca funkcje `injectScripts`.
- `.paul/plans/20260519-0928-fix-cookie-injectscripts/PLAN.md` - oznaczono plan jako `applied`.
- `.paul/plans/20260519-0928-fix-cookie-injectscripts/SUMMARY.md` - zapisano wynik UNIFY.
- `.paul/STATE.md` - zamknieto petle i ustawiono nastepna akcje.
- `.paul/codebase/tooling_status.md` - dopisano wynik post-apply.
- `.paul/codebase/impact_map.md` - dopisano obszar weryfikacji dla bledu cookies.
## Acceptance Criteria Results
| Criterion | Status | Evidence |
|-----------|--------|----------|
| AC-1 | Pass | `injectScripts` ma definicje w tym samym IIFE, a oba istniejace wywolania pozostaly kontrolowane. |
| AC-2 | Pass | `googleConsentModeHandler()` nie zostal zmieniony; `window.cookieNoticePro.init()` i eksport pozostaly na miejscu. |
| AC-3 | Partial | Statycznie potwierdzono, ze `#cookieAccept` zapisuje `cnp_prefs` przed `googleConsentModeHandler()`, a `analytics_storage: granted` zalezy od preferencji `analytics`. Wymaga jeszcze manualnego sprawdzenia w przegladarce po odswiezeniu. |
| AC-4 | Partial | Kod panelu preferencji nie zostal zmieniony i powinien dzialac jak przed poprawka, ale pelna weryfikacja wymaga klikniecia w przegladarce. |
## Verification Results
| Check | Result | Notes |
|-------|--------|-------|
| `rg -n "const injectScripts|function injectScripts|injectScripts\\(" wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Pokazuje dwa wywolania i jedna definicje `const injectScripts = () => {};`. |
| `node --check wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Skladnia JS poprawna. |
| `git diff --check -- wp-content/mu-plugins/cookie-notice-pro/assets/cookienoticepro.script.js` | Pass | Brak bledow whitespace; Git pokazuje tylko ostrzezenie LF/CRLF. |
| `php -l wp-content/mu-plugins/cookie-notice-pro/cookie-notice-pro.php` | Skipped | `php` nie jest dostepny w PATH. |
| Manual browser: akceptacja i reload | Skipped | Do wykonania na dzialajacej stronie: sprawdzic brak `ReferenceError` i `analytics_storage: granted` po odswiezeniu. |
## Quality Radar Results
**Status:** degraded
- New risks: brak nowych ryzyk kodowych poza wymaganiem manualnej weryfikacji Consent Mode.
- Resolved risks: usunieto brakujaca definicje `injectScripts`, ktora powodowala runtime `ReferenceError`.
- Deferred risks: pelne mapowanie MCP odlozone; projekt nadal nie jest widoczny w rejestrze MCP przy odczycie architektury.
- Raw outputs: `.paul/codebase/radar/codebase-memory-full.txt`
## Deviations
- Nie wykonano `php -l`, bo `php` nie jest dostepny w PATH.
- Nie wykonano manualnej weryfikacji w przegladarce w tej sesji.
- Nie kopiowano calego skryptu z `luxmedkrakow.pl`, bo analiza pokazala inne roznice konfiguracji i zgodna logike `analytics_storage` w tej instancji.
## Key Decisions / Patterns
- Wybrano minimalna poprawke kompatybilna z poprzednia instancja: `const injectScripts = () => {};`.
- Nie zmieniano `googleConsentModeHandler()`, bo sciezka analityki byla juz zgodna z referencja.
- Pelne sprawdzenie dzialania analityki pozostaje testem manualnym na stronie po zapisaniu cookies i odswiezeniu.
## Follow-up
- W przegladarce wyczysc cookies `cnp_*`, kliknij `Akceptuj`, odswiez strone i sprawdz brak `ReferenceError` oraz `analytics_storage: granted`.
- Jesli analityka nadal nie dziala po reloadzie, utworzyc osobny plan dla logiki Consent Mode zamiast podmieniac caly skrypt.