update
This commit is contained in:
224
.paul/phases/02-admin-panel-upgrade/02-02-PLAN.md
Normal file
224
.paul/phases/02-admin-panel-upgrade/02-02-PLAN.md
Normal file
@@ -0,0 +1,224 @@
|
||||
---
|
||||
phase: 02-admin-panel-upgrade
|
||||
plan: 02
|
||||
type: execute
|
||||
wave: 2
|
||||
depends_on: ["02-01"]
|
||||
files_modified:
|
||||
- src/Services/WordPressService.php
|
||||
- src/Controllers/SiteController.php
|
||||
- templates/sites/dashboard.php
|
||||
- templates/sites/comments.php
|
||||
- config/routes.php
|
||||
autonomous: true
|
||||
delegation: off
|
||||
---
|
||||
|
||||
<objective>
|
||||
## Goal
|
||||
Dodac do zarzadzania pojedyncza strona WordPress zdalna kontrole komentarzy:
|
||||
1. Wlaczenie i wylaczenie mozliwosci komentowania na danym serwisie.
|
||||
2. Pobranie listy komentarzy z danego serwisu.
|
||||
3. Usuwanie komentarzy z poziomu BackPRO.
|
||||
|
||||
## Purpose
|
||||
BackPRO ma centralnie zarzadzac siecia stron zapleczowych. Komentarze sa ryzykiem moderacyjnym i spamowym, wiec operator powinien moc szybko wylaczyc komentowanie oraz usuwac niechciane komentarze bez logowania sie do kazdego panelu WordPress osobno.
|
||||
|
||||
## Output
|
||||
- Metody w `WordPressService` do statusu komentarzy, zmiany ustawien, listowania i usuwania komentarzy.
|
||||
- Akcje w `SiteController` dla panelu komentarzy i operacji POST.
|
||||
- Widok `/sites/{id}/comments` z tabela komentarzy, filtrami i akcja usuniecia.
|
||||
- Karta/status komentarzy na dashboardzie strony.
|
||||
- Nowe trasy w `config/routes.php`.
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## Project Context
|
||||
@.paul/PROJECT.md
|
||||
@.paul/ROADMAP.md
|
||||
@.paul/STATE.md
|
||||
|
||||
## Prior Work
|
||||
@.paul/phases/02-admin-panel-upgrade/02-01-PLAN.md
|
||||
|
||||
## Source Files
|
||||
@src/Services/WordPressService.php
|
||||
@src/Controllers/SiteController.php
|
||||
@templates/sites/dashboard.php
|
||||
@templates/sites/index.php
|
||||
@config/routes.php
|
||||
@src/Core/Controller.php
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Status i przelaczanie komentowania
|
||||
```gherkin
|
||||
Given uzytkownik jest zalogowany w BackPRO i ma skonfigurowany serwis WordPress z plikiem zdalnym BackPRO
|
||||
When przechodzi do dashboardu strony
|
||||
Then widzi aktualny status komentowania dla nowych wpisow
|
||||
And moze wlaczyc lub wylaczyc komentowanie z poziomu BackPRO
|
||||
And po akcji widzi komunikat sukcesu albo konkretny blad polaczenia
|
||||
```
|
||||
|
||||
## AC-2: Lista komentarzy z serwisu
|
||||
```gherkin
|
||||
Given uzytkownik jest zalogowany i strona ma poprawne dane WordPress API
|
||||
When przechodzi do /sites/{id}/comments
|
||||
Then widzi liste komentarzy z WordPressa z autorem, trescia, data, statusem i linkiem do wpisu
|
||||
And moze filtrowac komentarze po statusie all/hold/approve/spam/trash
|
||||
And widok poprawnie obsluguje pusta liste i blad pobrania danych
|
||||
```
|
||||
|
||||
## AC-3: Usuwanie komentarzy
|
||||
```gherkin
|
||||
Given uzytkownik widzi komentarz na liscie komentarzy strony
|
||||
When klika usun i potwierdza operacje
|
||||
Then BackPRO usuwa komentarz przez WordPress API
|
||||
And uzytkownik wraca do listy komentarzy z komunikatem wyniku
|
||||
And bledy 401/403/404 sa obsluzone czytelnym komunikatem
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Rozszerzyc WordPressService o operacje komentarzy</name>
|
||||
<files>src/Services/WordPressService.php</files>
|
||||
<action>
|
||||
Dodac publiczne metody:
|
||||
- getCommentSettings(array $site): array
|
||||
- Uzyc callRemoteService($site, 'get_comment_settings').
|
||||
- Jezeli endpoint jest nieaktualny, wywolac ensureRemoteService(), odswiezyc site z bazy i ponowic probe.
|
||||
- Zwracac success, default_comment_status, comments_enabled, message.
|
||||
- setCommentsEnabled(array $site, bool $enabled): array
|
||||
- Uzyc callRemoteService($site, 'set_comment_settings', ['comments_enabled' => '1'/'0']).
|
||||
- Endpoint po stronie WordPress ma ustawiac option default_comment_status na open/closed.
|
||||
- Nie zmieniac masowo istniejacych postow w tym planie, zeby nie zaskoczyc uzytkownika utrata historii dyskusji.
|
||||
- getComments(array $site, string $status = 'all', int $page = 1, int $perPage = 20): array
|
||||
- Uzyc WP REST `wp/v2/comments` z auth z buildAuthOption().
|
||||
- Parametry: status, page, per_page, orderby=date, order=desc, context=edit.
|
||||
- Zwracac success, comments, page, total_pages, total, message.
|
||||
- Dla 401/403 zwrocic komunikat o braku uprawnien aplikacyjnego hasla/API uzytkownika.
|
||||
- deleteComment(array $site, int $commentId): array
|
||||
- Uzyc WP REST DELETE `wp/v2/comments/{id}` z auth i query force=true.
|
||||
- 404 traktowac jako czytelny blad "komentarz nie istnieje" albo sukces idempotentny tylko jesli API jasno zwraca deleted=true.
|
||||
|
||||
Zaktualizowac BACKPRO_REMOTE_SERVICE_VERSION do kolejnej wersji i tresc getBackproRemoteServiceContent():
|
||||
- ping ma zwracac nowa wersje.
|
||||
- action=get_comment_settings zwraca default_comment_status i comments_enabled.
|
||||
- action=set_comment_settings waliduje comments_enabled i zapisuje update_option('default_comment_status', 'open'/'closed').
|
||||
|
||||
Zachowac istniejace fallbacki requestWp() i nie ruszac logiki publikacji, mediow, permalinkow ani indeksowania.
|
||||
</action>
|
||||
<verify>php -l src/Services/WordPressService.php</verify>
|
||||
<done>AC-1, AC-2 i AC-3 maja warstwe komunikacji z WordPressem.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Dodac akcje kontrolera i trasy komentarzy</name>
|
||||
<files>src/Controllers/SiteController.php, config/routes.php</files>
|
||||
<action>
|
||||
Dodac do SiteController:
|
||||
- comments(string $id): void
|
||||
- Auth::requireLogin().
|
||||
- Pobrac Site::find(), obsluzyc brak strony.
|
||||
- Odczytac status z query `status` z whitelista: all, hold, approve, spam, trash.
|
||||
- Odczytac page jako int >= 1.
|
||||
- Wywolac WordPressService::getCommentSettings() oraz getComments().
|
||||
- Renderowac `sites/comments` z site, commentSettings, commentsResult, selectedStatus, page.
|
||||
- updateCommentsEnabled(string $id): void
|
||||
- POST z polem enabled=1/0.
|
||||
- Wywolac setCommentsEnabled().
|
||||
- Flash success/danger i redirect do `/sites/{id}/comments`.
|
||||
- deleteComment(string $id, string $commentId): void
|
||||
- Walidowac commentId > 0.
|
||||
- Wywolac deleteComment().
|
||||
- Flash success/danger i redirect z zachowaniem statusu, jesli podany.
|
||||
|
||||
Dodac trasy:
|
||||
- GET `/sites/{id}/comments` -> SiteController@comments
|
||||
- POST `/sites/{id}/comments/settings` -> SiteController@updateCommentsEnabled
|
||||
- POST `/sites/{id}/comments/{commentId}/delete` -> SiteController@deleteComment
|
||||
|
||||
Kontroler ma zostac cienki: mapuje request, wywoluje WordPressService, ustawia flash i przekazuje dane do widoku. Nie wkladac logiki REST API do kontrolera.
|
||||
</action>
|
||||
<verify>php -l src/Controllers/SiteController.php oraz php -l config/routes.php</verify>
|
||||
<done>AC-1, AC-2 i AC-3 dostepne przez routing BackPRO.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 3: Zbudowac UI komentarzy dla pojedynczej strony</name>
|
||||
<files>templates/sites/dashboard.php, templates/sites/comments.php</files>
|
||||
<action>
|
||||
Utworzyc `templates/sites/comments.php`:
|
||||
- Naglowek: nazwa strony, link powrotu do dashboardu i listy stron.
|
||||
- Karta "Komentowanie" z badge ON/OFF wedlug commentSettings.
|
||||
- Dwa formularze POST do `/sites/{id}/comments/settings`: wlacz i wylacz komentarze.
|
||||
- Krotka informacja, ze przelacznik dotyczy domyslnego komentowania nowych wpisow.
|
||||
- Filtry statusu jako linki: Wszystkie, Oczekujace, Zatwierdzone, Spam, Kosz.
|
||||
- Tabela komentarzy: autor, email/URL jesli dostepne, fragment tresci bez HTML, data, status, link do wpisu, akcja usun.
|
||||
- Usuwanie jako POST z `data-confirm`.
|
||||
- Paginacja na podstawie total_pages i aktualnej strony.
|
||||
- Wszystkie dane z WordPressa escape przez htmlspecialchars.
|
||||
|
||||
Zaktualizowac `templates/sites/dashboard.php`:
|
||||
- Dodac karte lub przycisk "Komentarze" w sekcji zarzadzania strona.
|
||||
- Pokazac status komentowania, jesli SiteController::dashboard przekaze commentSettings.
|
||||
- Link do `/sites/{id}/comments`.
|
||||
|
||||
Zaktualizowac SiteController::dashboard w ramach Task 2 lub tego taska:
|
||||
- pobrac commentSettings przez WordPressService i przekazac do widoku dashboardu.
|
||||
|
||||
Nie tworzyc osobnego globalnego ekranu komentarzy dla wszystkich stron w tym planie.
|
||||
</action>
|
||||
<verify>php -l templates/sites/dashboard.php oraz php -l templates/sites/comments.php</verify>
|
||||
<done>AC-1, AC-2 i AC-3 maja kompletny interfejs w panelu strony.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## DO NOT CHANGE
|
||||
- src/Services/PublisherService.php
|
||||
- src/Models/Article.php
|
||||
- src/Models/Topic.php
|
||||
- migrations/* (brak zmian schematu bazy w tym planie)
|
||||
- templates/articles/* (komentarze dotycza zarzadzania strona, nie artykulow BackPRO)
|
||||
|
||||
## SCOPE LIMITS
|
||||
- Przelacznik komentowania dotyczy domyslnego komentowania nowych wpisow (`default_comment_status`), bez masowego zamykania komentarzy w istniejacych postach.
|
||||
- Nie dodawac moderacji approve/spam/unspam w tym planie; tylko lista i usuwanie.
|
||||
- Nie cache'owac komentarzy lokalnie w bazie BackPRO.
|
||||
- Nie dodawac nowych zaleznosci Composer.
|
||||
- Nie zmieniac sposobu przechowywania danych API/FTP stron.
|
||||
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
Before declaring plan complete:
|
||||
- [ ] php -l src/Services/WordPressService.php
|
||||
- [ ] php -l src/Controllers/SiteController.php
|
||||
- [ ] php -l config/routes.php
|
||||
- [ ] php -l templates/sites/dashboard.php
|
||||
- [ ] php -l templates/sites/comments.php
|
||||
- [ ] /sites/{id}/dashboard pokazuje wejscie do komentarzy i status ustawienia
|
||||
- [ ] /sites/{id}/comments pokazuje tabele albo czytelny blad pobrania
|
||||
- [ ] POST ustawienia komentowania zmienia default_comment_status na WordPressie
|
||||
- [ ] POST usuniecia komentarza usuwa komentarz albo pokazuje czytelny blad
|
||||
- [ ] Aktualizacja pliku serwisowego BackPRO podnosi wersje remote service
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Operator moze wlaczyc i wylaczyc komentowanie dla wybranej strony.
|
||||
- Operator widzi komentarze pobrane z danego serwisu WordPress.
|
||||
- Operator moze usuwac komentarze z BackPRO.
|
||||
- Bledy polaczenia i uprawnien sa czytelne w UI.
|
||||
- Brak regresji w publikacji, permalinkach, StatLink i istniejacym dashboardzie strony.
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.paul/phases/02-admin-panel-upgrade/02-02-SUMMARY.md`
|
||||
</output>
|
||||
39
.paul/phases/02-admin-panel-upgrade/02-02-SUMMARY.md
Normal file
39
.paul/phases/02-admin-panel-upgrade/02-02-SUMMARY.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
phase: 02-admin-panel-upgrade
|
||||
plan: 02
|
||||
completed: 2026-04-24T07:11:11.932Z
|
||||
---
|
||||
|
||||
# Phase 02-02 Summary
|
||||
|
||||
****
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status |
|
||||
|-----------|--------|
|
||||
| Task 1: Rozszerzyc WordPressService o operacje komentarzy | Pass — Dodano status i ustawianie komentarzy przez backpro-remote-service v1.5.0 oraz listowanie/usuwanie komentarzy przez WP REST API. Zweryfikowano php -l src/Services/WordPressService.php. |
|
||||
| Task 2: Dodac akcje kontrolera i trasy komentarzy | Pass — Dodano akcje comments, updateCommentsEnabled i deleteComment w SiteController oraz trasy /sites/{id}/comments. Zweryfikowano php -l src/Controllers/SiteController.php i php -l config/routes.php. |
|
||||
| Task 3: Zbudowac UI komentarzy dla pojedynczej strony | Pass — Dodano templates/sites/comments.php oraz kartę/link komentarzy na dashboardzie strony. Zweryfikowano php -l templates/sites/dashboard.php i php -l templates/sites/comments.php. |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- Task 1: Rozszerzyc WordPressService o operacje komentarzy: Dodano status i ustawianie komentarzy przez backpro-remote-service v1.5.0 oraz listowanie/usuwanie komentarzy przez WP REST API. Zweryfikowano php -l src/Services/WordPressService.php.
|
||||
- Task 2: Dodac akcje kontrolera i trasy komentarzy: Dodano akcje comments, updateCommentsEnabled i deleteComment w SiteController oraz trasy /sites/{id}/comments. Zweryfikowano php -l src/Controllers/SiteController.php i php -l config/routes.php.
|
||||
- Task 3: Zbudowac UI komentarzy dla pojedynczej strony: Dodano templates/sites/comments.php oraz kartę/link komentarzy na dashboardzie strony. Zweryfikowano php -l templates/sites/dashboard.php i php -l templates/sites/comments.php.
|
||||
|
||||
## Files Modified
|
||||
|
||||
- `src/Services/WordPressService.php`
|
||||
- `src/Controllers/SiteController.php`
|
||||
- `config/routes.php`
|
||||
- `templates/sites/dashboard.php`
|
||||
- `templates/sites/comments.php`
|
||||
|
||||
## Deviations
|
||||
|
||||
Live verification against a real WordPress site was not performed in this APPLY; automated PHP lint verification passed for all changed PHP/template files.
|
||||
|
||||
---
|
||||
*Phase: 02-admin-panel-upgrade, Plan: 02*
|
||||
*Completed: 2026-04-24*
|
||||
Reference in New Issue
Block a user