diff --git a/DATABASE_STRUCTURE.md b/DATABASE_STRUCTURE.md index 323bfc7..ca26eb5 100644 --- a/DATABASE_STRUCTURE.md +++ b/DATABASE_STRUCTURE.md @@ -249,3 +249,41 @@ Przypisanie layoutow do kategorii sklepu. **Uzywane w:** `Domain\\Layouts\\LayoutsRepository`, `front\\factory\\Layouts` **Aktualizacja 2026-02-12 (ver. 0.256):** modul `/admin/layouts` korzysta z `Domain\\Layouts\\LayoutsRepository` (DI kontroler + fasada legacy). + +## pp_newsletter +Adresy e-mail zapisane do newslettera. + +| Kolumna | Opis | +|---------|------| +| id | PK | +| email | Adres e-mail subskrybenta | +| hash | Hash potwierdzenia/wypisu | +| status | 1 = potwierdzony, 0 = oczekujacy | + +**Uzywane w:** `Domain\\Newsletter\\NewsletterRepository`, `front\\factory\\Newsletter` + +## pp_newsletter_send +Kolejka wysylki newslettera. + +| Kolumna | Opis | +|---------|------| +| id | PK | +| email | Adres docelowy | +| dates | Zakres dat artykulow (tekst) | +| id_template | FK do `pp_newsletter_templates` (NULL gdy brak szablonu) | + +**Uzywane w:** `Domain\\Newsletter\\NewsletterRepository`, `front\\factory\\Newsletter::newsletter_send()` + +## pp_newsletter_templates +Szablony tresci e-maili (uzytkownik + administracyjne/systemowe). + +| Kolumna | Opis | +|---------|------| +| id | PK | +| name | Nazwa/klucz szablonu | +| text | Tresc HTML szablonu | +| is_admin | 1 = szablon administracyjny/systemowy, 0 = szablon uzytkownika | + +**Uzywane w:** `Domain\\Newsletter\\NewsletterRepository`, `admin\\Controllers\\NewsletterController`, `front\\factory\\Newsletter` + +**Aktualizacja 2026-02-12 (ver. 0.257):** modul `/admin/newsletter` korzysta z `Domain\\Newsletter\\NewsletterRepository` (DI kontroler + fasada legacy). diff --git a/PROJECT_STRUCTURE.md b/PROJECT_STRUCTURE.md index 8a54078..1f9a596 100644 --- a/PROJECT_STRUCTURE.md +++ b/PROJECT_STRUCTURE.md @@ -419,3 +419,21 @@ Aktualnie w suite są też testy modułów `Dictionaries`, `Articles` i `Users` - CLEANUP: usuniete legacy klasy `autoload/admin/controls/class.Layouts.php`, `autoload/admin/view/class.Layouts.php`; `admin/factory/class.Layouts.php` dziala jako fasada do `Domain\\Layouts\\LayoutsRepository`. - UPDATE: `admin\\Controllers\\ArticlesController` pobiera layouty przez `Domain\\Layouts\\LayoutsRepository` (DI). - Testy: 141 tests, 336 assertions + +## Aktualizacja 2026-02-12 (ver. 0.257) +- NOWE: `Domain\\Newsletter\\NewsletterRepository` (subskrybenci, szablony, ustawienia, kolejka wysylki). +- NOWE: `Domain\\Newsletter\\NewsletterPreviewRenderer` (render podgladu newslettera). +- NOWE: `admin\\Controllers\\NewsletterController` (DI) dla akcji `emails_list`, `prepare`, `send`, `preview`, `settings*`, `email_template*`. +- UPDATE: `/admin/newsletter/*` przepiete z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit`. +- UPDATE: nowy endpoint podgladu `/admin/newsletter/preview/` (bez `admin/ajax.php`). +- UPDATE: `admin\\Site` ma fabryke DI dla modulu `Newsletter`. +- UPDATE: `admin\\factory\\Newsletter` dziala jako fasada do `Domain\\Newsletter\\NewsletterRepository`. +- UPDATE: `front\\factory\\Newsletter` nie korzysta z `admin\\view\\Newsletter`. +- CLEANUP: usuniete legacy klasy `autoload/admin/controls/class.Newsletter.php`, `autoload/admin/view/class.Newsletter.php`. +- Testy: 150 tests, 372 assertions + +## Aktualizacja 2026-02-12 (ver. 0.258) +- UPDATE: modul `/admin/newsletter/` - tymczasowo wylaczono akcje `prepare/send/preview` (Wysylka - przygotowanie). +- UPDATE: modul `/admin/newsletter/` - tymczasowo wylaczono liste `email_templates_user` (Szablony uzytkownika). +- UPDATE: lista i edycja szablonow newslettera w panelu ograniczona do szablonow administracyjnych (`is_admin = 1`). +- CLEANUP: usuniete nieuzywane widoki: `admin/templates/newsletter/prepare.php`, `admin/templates/newsletter/preview.php`, `admin/templates/newsletter/email-templates-user.php`. diff --git a/REFACTORING_PLAN.md b/REFACTORING_PLAN.md index 6cbc7b8..4d0de26 100644 --- a/REFACTORING_PLAN.md +++ b/REFACTORING_PLAN.md @@ -614,3 +614,23 @@ Gdy `persist = true`: - UPDATE: `admin\\Controllers\\ArticlesController` korzysta z `Domain\\Layouts\\LayoutsRepository` (DI) dla listy layoutow - Testy po zmianie: **141 tests, 336 assertions** + +## Aktualizacja 2026-02-12 (ver. 0.257) +- **Newsletter** - **ZMIGROWANE** (2026-02-12) + - NOWE: `Domain\\Newsletter\\NewsletterRepository` (listy admin, szablony, ustawienia, kolejka wysylki) + - NOWE: `Domain\\Newsletter\\NewsletterPreviewRenderer` (wspolny render podgladu) + - NOWE: `admin\\Controllers\\NewsletterController` (DI) + - UPDATE: routing DI (`admin\\Site`) rozszerzony o modul `Newsletter` + - UPDATE: widoki `/admin/newsletter/*` migrowane na `components/table-list` i `components/form-edit` + - UPDATE: `admin\\factory\\Newsletter` jako fasada do repozytorium + - UPDATE: `front\\factory\\Newsletter` bez zaleznosci od `admin\\view\\Newsletter` + - CLEANUP: usuniete `autoload/admin/controls/class.Newsletter.php`, `autoload/admin/view/class.Newsletter.php` + +- Testy po zmianie: **150 tests, 372 assertions** + +## Aktualizacja 2026-02-12 (ver. 0.258) +- **Newsletter** + - UPDATE: tymczasowo wylaczono flow `prepare/send/preview` (wymaga przebudowy). + - UPDATE: tymczasowo wylaczono modul `Szablony uzytkownika`. + - UPDATE: aktywna obsluga tylko szablonow administracyjnych (`is_admin = 1`). + - CLEANUP: usuniete nieuzywane widoki `prepare.php`, `preview.php`, `email-templates-user.php`. diff --git a/TESTING.md b/TESTING.md index 14598bd..23e7e41 100644 --- a/TESTING.md +++ b/TESTING.md @@ -206,3 +206,21 @@ Nowe testy dodane 2026-02-12: Zaktualizowane testy 2026-02-12: - `tests/Unit/Domain/Languages/LanguagesRepositoryTest.php` (defaultLanguageId) - `tests/Unit/admin/Controllers/ArticlesControllerTest.php` (konstruktor + LayoutsRepository) + +## Aktualizacja suite (release 0.257) +Ostatnio zweryfikowano: 2026-02-12 + +```text +OK (150 tests, 372 assertions) +``` + +Nowe testy dodane 2026-02-12: +- `tests/Unit/Domain/Newsletter/NewsletterRepositoryTest.php` +- `tests/Unit/admin/Controllers/NewsletterControllerTest.php` + +## Aktualizacja suite (release 0.258) +Ostatnio zweryfikowano: 2026-02-12 + +```text +OK (150 tests, 372 assertions) +``` diff --git a/admin/templates/newsletter/email-template-edit.php b/admin/templates/newsletter/email-template-edit.php index 7c6aa1d..3615024 100644 --- a/admin/templates/newsletter/email-template-edit.php +++ b/admin/templates/newsletter/email-template-edit.php @@ -1,67 +1 @@ - - - -global $db; -ob_start(); -?> - = \Html::input( - array( - 'label' => 'Nazwa', - 'name' => 'name', - 'id' => 'name', - 'value' => $this -> email_template['name'], - 'inline' => true, - 'readonly' => $this -> email_template['is_admin'] ? true : false - ) - );?> - = \Html::textarea( - array( - 'label' => 'Treść', - 'name' => 'text', - 'id' => 'text', - 'value' => $this ->email_template['text'], - 'inline' => true - ) - );?> - - -$out = ob_get_clean(); -$grid = new \gridEdit; -$grid -> id = 'email-templates-edit'; -$grid -> gdb_opt = $gdb; -$grid -> include_plugins = true; -$grid -> title = 'Edycja szablonu newslettera'; -$grid -> fields = [ - [ - 'db' => 'id', - 'type' => 'hidden', - 'value' => $this -> email_template['id'] - ] - ]; -$grid -> external_code = $out; -$grid -> actions = [ - 'save' => [ - 'url' => '/admin/newsletter/template_save/', - 'back_url' => $this -> email_template['is_admin'] ? '/admin/newsletter/email_templates_admin/' : '/admin/newsletter/email_templates_user/' - ], - 'cancel' => [ - 'url' => $this -> email_template['is_admin'] ? '/admin/newsletter/email_templates_admin/' : '/admin/newsletter/email_templates_user/' - ] - ]; -$grid -> persist_edit = true; -$grid -> id_param = 'id'; - -echo $grid -> draw(); -?> - \ No newline at end of file += \Tpl::view('components/form-edit', ['form' => $this->form]); ?> \ No newline at end of file diff --git a/admin/templates/newsletter/email-templates-admin.php b/admin/templates/newsletter/email-templates-admin.php index be182b7..17cbbb8 100644 --- a/admin/templates/newsletter/email-templates-admin.php +++ b/admin/templates/newsletter/email-templates-admin.php @@ -1,28 +1 @@ - gdb_opt = $gdb; -$grid -> order = [ 'column' => 'name', 'type' => 'ASC' ]; -$grid -> where = [ 'is_admin' => 1 ]; -$grid -> columns_view = [ - [ - 'name' => 'Lp.', - 'th' => [ 'class' => 'g-lp' ], - 'td' => [ 'class' => 'g-center' ], - 'autoincrement' => true - ], - [ - 'name' => 'Nazwa', - 'db' => 'name', - 'php' => 'echo "[name]";', - 'sort' => true - ], - [ - 'name' => 'Edytuj', - 'action' => [ 'type' => 'edit', 'url' => '/admin/newsletter/email_template_edit/id=[id]' ], - 'th' => [ 'class' => 'g-center', 'style' => 'width: 70px;' ], - 'td' => [ 'class' => 'g-center' ] - ] - ]; -echo $grid -> draw(); \ No newline at end of file += \Tpl::view('components/table-list', ['list' => $this->viewModel]); ?> \ No newline at end of file diff --git a/admin/templates/newsletter/email-templates-user.php b/admin/templates/newsletter/email-templates-user.php deleted file mode 100644 index 6275e03..0000000 --- a/admin/templates/newsletter/email-templates-user.php +++ /dev/null @@ -1,42 +0,0 @@ - gdb_opt = $gdb; -$grid -> order = [ 'column' => 'name', 'type' => 'ASC' ]; -$grid -> where = [ 'is_admin' => 0 ]; -$grid -> columns_view = [ - [ - 'name' => 'Lp.', - 'th' => [ 'class' => 'g-lp' ], - 'td' => [ 'class' => 'g-center' ], - 'autoincrement' => true - ], - [ - 'name' => 'Nazwa', - 'db' => 'name', - 'php' => 'echo "[name]";', - 'sort' => true - ], - [ - 'name' => 'Edytuj', - 'action' => [ 'type' => 'edit', 'url' => '/admin/newsletter/email_template_edit/id=[id]' ], - 'th' => [ 'class' => 'g-center', 'style' => 'width: 70px;' ], - 'td' => [ 'class' => 'g-center' ] - ], - [ - 'name' => 'Usuń', - 'action' => [ 'type' => 'delete', 'url' => '/admin/newsletter/email_template_delete/id=[id]' ], - 'th' => [ 'class' => 'g-center', 'style' => 'width: 70px;' ], - 'td' => [ 'class' => 'g-center' ] - ] - ]; -$grid -> buttons = [ - [ - 'label' => 'Dodaj szablon', - 'url' => '/admin/newsletter/email_template_edit/', - 'icon' => 'fa-plus-circle', - 'class' => 'btn-success' - ] - ]; -echo $grid -> draw(); \ No newline at end of file diff --git a/admin/templates/newsletter/emails-list.php b/admin/templates/newsletter/emails-list.php index 19f1827..0f89c5b 100644 --- a/admin/templates/newsletter/emails-list.php +++ b/admin/templates/newsletter/emails-list.php @@ -1,30 +1 @@ - gdb_opt = $gdb; -$grid -> order = [ 'column' => 'email', 'type' => 'ASC' ]; -$grid -> search = [ - [ 'name' => 'Email', 'db' => 'email', 'type' => 'text' ] - ]; -$grid -> columns_view = [ - [ - 'name' => 'Lp.', - 'th' => [ 'class' => 'g-lp' ], - 'td' => [ 'class' => 'g-center' ], - 'autoincrement' => true - ], - [ - 'name' => 'Email', - 'db' => 'email', - 'sort' => true - ], - [ - 'name' => 'Potwierdzony', - 'db' => 'status', - 'sort' => true, - 'replace' => [ 'array' => [ 0 => 'nie', 1 => 'tak' ] ] - ] - ]; -$grid -> actions = [ 'delete' => true ]; -echo $grid -> draw(); \ No newline at end of file += \Tpl::view('components/table-list', ['list' => $this->viewModel]); ?> diff --git a/admin/templates/newsletter/prepare.php b/admin/templates/newsletter/prepare.php deleted file mode 100644 index 565dd21..0000000 --- a/admin/templates/newsletter/prepare.php +++ /dev/null @@ -1,131 +0,0 @@ - -global $db; - -ob_start(); -?> -
--- brak zdefiniowanego nagłówka ---
';?> ---- brak zdefiniowanej stopki ---
';?> -