Files
bilety.brzezovka.pl/.paul/phases/03-cookie-consent/03-01-SUMMARY.md
Jacek Pyziak 28d38156e2 feat(03-cookie-consent): integrate CookieNoticePro with Google Consent Mode v2
Phase 3 complete:
- Copy CookieNoticePro library to libraries/CookieNoticePro/
- Fix bug: analytics_storage sent 'granted' instead of 'denied' on rejection
- Add Consent Mode v2 default-denied init before GTM snippet in layout-logged.php
- Fix plugin init: cookieNoticePro.init() per library docs
- Fix duplicate button label (CSS display:none for acceptBtnSettingsLabel)
- Add Bootstrap 5 compatibility reset for banner buttons
- Set regulamin link to https://bilety.brzezovka.pl/tickets/regulamin/

v0.2 Analytics & Privacy milestone complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:50:45 +02:00

5.2 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
03-cookie-consent 01 ui
cookies
gdpr
consent-mode-v2
gtm
cookienoticepro
phase provides
02-purchase-event-prepayment GTM już wdrożony w layout-logged.php
Baner zgody na cookies (CookieNoticePro) zintegrowany z serwisem
Google Consent Mode v2 z domyślnymi denied przed GTM
Naprawiony błąd analytics_storage w bibliotece CookieNoticePro
added patterns
CookieNoticePro jQuery plugin
Consent Mode v2 default-denied init before GTM snippet
created modified
libraries/CookieNoticePro/cookienoticepro.script.js
libraries/CookieNoticePro/cookienoticepro.style.css
templates/site/layout-logged.php
Inicjalizacja: cookieNoticePro.init() zamiast $.fn.cookieNoticePro() — zgodnie z dokumentacją biblioteki
acceptBtnSettingsLabel ukryty przez CSS (display:none) — JS nie ustawiał stanu początkowego
Consent Mode v2 default init zawsze przed snippetem GTM w <head>
~45min 2026-04-26T00:00:00Z 2026-04-26T00:00:00Z

Phase 3 Plan 01: Cookie Consent Banner Summary

CookieNoticePro z Google Consent Mode v2 wdrożony — serwis spełnia wymogi RODO, analytics_storage poprawnie ustawiane na denied przy odmowie zgody.

Performance

Metric Value
Duration ~45 min
Tasks 2 auto + 1 checkpoint
Files modified 3

Acceptance Criteria Results

Criterion Status Notes
AC-1: Consent Mode v2 default przed GTM Pass Blok w <head> przed <!-- Google Tag Manager -->
AC-2: Baner przy pierwszej wizycie Pass Zweryfikowane manualnie
AC-3: Naprawa analytics_storage denied Pass Linia ~351: 'granted''denied' w bloku else
AC-4: Akceptacja → granted Pass Blok if (analytics accepted) bez zmian
AC-5: Pliki biblioteki obecne Pass libraries/CookieNoticePro/ skonfigurowany

Accomplishments

  • Skopiowano i zintegrowano bibliotekę CookieNoticePro z istniejącym projektem
  • Naprawiono błąd biblioteki: analytics_storage: 'granted''denied' w bloku odrzucenia analytics
  • Consent Mode v2 inicjalizowany z defaultami denied przed snippetem GTM — wymaganie Google od marca 2024
  • Baner wyświetla się przy pierwszej wizycie, zapamiętuje wybór przez 365 dni

Files Created/Modified

File Change Purpose
libraries/CookieNoticePro/cookienoticepro.script.js Created Biblioteka banera — zkopiona + naprawiony błąd analytics_storage + link regulaminu
libraries/CookieNoticePro/cookienoticepro.style.css Created Style banera — zkopione + Bootstrap 5 compat reset + initial state fix
templates/site/layout-logged.php Modified Consent Mode v2 default przed GTM, CSS/JS banera, inicjalizacja cookieNoticePro.init()

Decisions Made

Decision Rationale Impact
cookieNoticePro.init() zamiast $.fn.cookieNoticePro() Demo index.html z biblioteki pokazuje właściwy sposób inicjalizacji Poprawne uruchomienie banera
CSS display:none na .acceptBtnSettingsLabel JS przełącza etykiety tylko na click — nie ustawia stanu początkowego Brak duplikatu tekstu w przycisku "Akceptuj/Zatwierdź"
Bootstrap 5 compat reset w CSS Bootstrap nadpisuje line-height, font-size przycisków Poprawny wygląd przycisków banera

Deviations from Plan

Summary

Type Count Impact
Auto-fixed 3 Niezbędne poprawki, brak scope creep
Scope additions 1 Drobna zmiana na prośbę użytkownika

Total impact: Drobne poprawki wynikające z integracji z Bootstrap 5 i specyfiki biblioteki

Auto-fixed Issues

1. Inicjalizacja pluginu

  • Found during: Checkpoint (błąd konsoli)
  • Issue: $.cookieNoticePro is not a function — plugin rejestruje się jako $.fn, nie $
  • Fix: $.cookieNoticePro()$.fn.cookieNoticePro()cookieNoticePro.init()
  • Files: templates/site/layout-logged.php

2. Duplikat tekstu w przycisku akceptacji

  • Found during: Checkpoint (feedback użytkownika)
  • Issue: .acceptBtnSettingsLabel ("Zatwierdź") widoczny razem z .acceptBtnLabel ("Akceptuj") — brak initial hide w JS
  • Fix: Dodano display: none w CSS dla .acceptBtnSettingsLabel
  • Files: libraries/CookieNoticePro/cookienoticepro.style.css

3. Bootstrap 5 button override

  • Found during: Checkpoint (button layout)
  • Issue: Bootstrap nadpisuje line-height i font-size przycisków banera
  • Fix: CSS reset z !important-safe specificity dla .btn-wrap button
  • Files: libraries/CookieNoticePro/cookienoticepro.style.css

Scope Additions

  • Link regulaminu zmieniony na https://bilety.brzezovka.pl/tickets/regulamin/ (prośba użytkownika podczas weryfikacji)

Next Phase Readiness

Ready:

  • v0.2 Analytics & Privacy — wszystkie 3 fazy kompletne
  • Tracking ecommerce (Phase 1+2) + RODO (Phase 3) wdrożone

Concerns:

  • Brak — integracja stabilna

Blockers:

  • None

Phase: 03-cookie-consent, Plan: 01 Completed: 2026-04-26