194 lines
8.4 KiB
Markdown
194 lines
8.4 KiB
Markdown
---
|
|
phase: 01-fix-article-info-metryczki
|
|
plan: 01
|
|
type: execute
|
|
wave: 1
|
|
depends_on: []
|
|
files_modified:
|
|
- layouts/joomla/content/info_block.php
|
|
- layouts/joomla/content/info_block/create_date.php
|
|
- layouts/joomla/content/info_block/publish_date.php
|
|
- layouts/joomla/content/info_block/modify_date.php
|
|
- layouts/joomla/content/info_block/author.php
|
|
autonomous: false
|
|
delegation: off
|
|
---
|
|
|
|
<objective>
|
|
## Goal
|
|
Przywrócić prawidłowe wyświetlanie metryczek artykułów na stronie BIP po aktualizacji Joomla i rozszerzeń. Elementy z klasą `article-info text-muted` muszą renderować się z prawidłową strukturą HTML, którą oczekują skrypty JS (`dodajmetryczke.js`, `metryczka.js`).
|
|
|
|
## Purpose
|
|
Metryczki artykułów BIP to wymóg prawny. Klient zgłasza, że po aktualizacji przestały się wyświetlać. Problem jest powtarzalny — aktualizacja Joomla nadpisuje pliki core layouts.
|
|
|
|
## Output
|
|
Pliki layout przywrócone do stanu kompatybilnego z JS metryczek. Metryczki widoczne na stronie.
|
|
</objective>
|
|
|
|
<context>
|
|
## Project Context
|
|
@.paul/PROJECT.md
|
|
@.paul/ROADMAP.md
|
|
|
|
## Source Files
|
|
@layouts/joomla/content/info_block.php
|
|
@layouts/joomla/content/info_block/create_date.php
|
|
@layouts/joomla/content/info_block/publish_date.php
|
|
@layouts/joomla/content/info_block/modify_date.php
|
|
@layouts/joomla/content/info_block/author.php
|
|
@templates/instytut_dendrologii_/js/metryczka.js
|
|
@templates/instytut_dendrologii_/js/dodajmetryczke.js
|
|
|
|
## Analiza problemu
|
|
Skrypty JS metryczek (`metryczka.js`, `dodajmetryczke.js`) polegają na konkretnych selektorach CSS:
|
|
- `.grid-bip .article-info` — wrapper metryczki (dodajmetryczke.js:8)
|
|
- `.create [itemprop="dateCreated"]` — data wytworzenia (metryczka.js:41)
|
|
- `.published [itemprop="datePublished"]` — data udostępnienia (metryczka.js:45)
|
|
- `.modified [itemprop="dateModified"]` — data modyfikacji (metryczka.js:49)
|
|
- `.metryczka` → `.closest('.article-info').lastChild` — toggle visibility (dodajmetryczke.js:21)
|
|
|
|
Aktualizacja Joomla mogła:
|
|
1. Zmienić strukturę HTML sublayoutów (inne klasy, brak itemprop)
|
|
2. Zmienić format tekstu (np. "Utworzono:" → "Created on")
|
|
3. Zmienić typ elementów (dd→div, time→span)
|
|
|
|
Obecna lokalna wersja plików może nie odpowiadać stanowi na serwerze po aktualizacji.
|
|
</context>
|
|
|
|
<acceptance_criteria>
|
|
|
|
## AC-1: Metryczka BIP widoczna na stronie artykułu
|
|
```gherkin
|
|
Given artykuł w sekcji BIP (klasa .grid-bip)
|
|
When użytkownik otwiera stronę artykułu
|
|
Then element .article-info text-muted jest obecny w DOM
|
|
And zawiera przycisk "METRYCZKA" (klasa .infometryczka)
|
|
And po kliknięciu "METRYCZKA" pojawia się blok z danymi
|
|
```
|
|
|
|
## AC-2: Dane metryczki poprawnie wypełnione
|
|
```gherkin
|
|
Given artykuł BIP z uzupełnionymi polami (autor, daty)
|
|
When skrypt metryczka.js wypełnia dane
|
|
Then metryczka zawiera: Podmiot udostępniający, Wytwarzający, Data wytworzenia, Data udostępnienia
|
|
And daty są w poprawnym formacie (nie "undefined" ani puste)
|
|
```
|
|
|
|
## AC-3: Selektory JS pasują do struktury HTML
|
|
```gherkin
|
|
Given pliki info_block.php i sublayouty na serwerze
|
|
When przeglądarka renderuje stronę
|
|
Then selektory .create [itemprop="dateCreated"], .published [itemprop="datePublished"], .modified [itemprop="dateModified"] znajdują elementy
|
|
And dodajmetryczke.js poprawnie wstrzykuje HTML metryczki
|
|
```
|
|
|
|
</acceptance_criteria>
|
|
|
|
<tasks>
|
|
|
|
<task type="checkpoint:human-action" gate="blocking">
|
|
<what-built>Synchronizacja plików z serwera</what-built>
|
|
<how-to-verify>
|
|
1. W VS Code użyj ftp-kr: pobierz aktualną wersję plików z serwera
|
|
2. Pliki do pobrania:
|
|
- `layouts/joomla/content/info_block.php`
|
|
- `layouts/joomla/content/info_block/create_date.php`
|
|
- `layouts/joomla/content/info_block/publish_date.php`
|
|
- `layouts/joomla/content/info_block/modify_date.php`
|
|
- `layouts/joomla/content/info_block/author.php`
|
|
- `layouts/joomla/content/info_block/category.php`
|
|
- `layouts/joomla/content/info_block/hits.php`
|
|
3. Opcjonalnie: pobierz cały folder `layouts/joomla/content/` rekursywnie
|
|
</how-to-verify>
|
|
<resume-signal>Wpisz "pobrane" gdy pliki zostaną zsynchronizowane z serwera</resume-signal>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: Diagnoza różnic po aktualizacji</name>
|
|
<files>layouts/joomla/content/info_block.php, layouts/joomla/content/info_block/create_date.php, layouts/joomla/content/info_block/publish_date.php, layouts/joomla/content/info_block/modify_date.php, layouts/joomla/content/info_block/author.php</files>
|
|
<action>
|
|
Po pobraniu plików z serwera:
|
|
1. Przeczytaj zaktualizowane pliki layoutów
|
|
2. Sprawdź czy struktura HTML pasuje do selektorów JS:
|
|
- `<dl class="article-info text-muted">` — wrapper
|
|
- `<dd class="create">` z `<time itemprop="dateCreated">` — data wytworzenia
|
|
- `<dd class="published">` z `<time itemprop="datePublished">` — data publikacji
|
|
- `<dd class="modified">` z `<time itemprop="dateModified">` — data modyfikacji
|
|
3. Zidentyfikuj co się zmieniło (klasy, tagi, atrybuty, format tekstu)
|
|
4. Przygotuj listę zmian potrzebnych do przywrócenia kompatybilności
|
|
</action>
|
|
<verify>Lista zidentyfikowanych różnic między oczekiwaną a aktualną strukturą HTML</verify>
|
|
<done>AC-3 częściowo: Wiadomo co wymaga poprawy</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 2: Naprawa plików layout — przywrócenie kompatybilności z JS</name>
|
|
<files>layouts/joomla/content/info_block.php, layouts/joomla/content/info_block/create_date.php, layouts/joomla/content/info_block/publish_date.php, layouts/joomla/content/info_block/modify_date.php, layouts/joomla/content/info_block/author.php</files>
|
|
<action>
|
|
Na podstawie diagnozy z Task 1:
|
|
1. Edytuj pliki sublayoutów, aby przywrócić oczekiwaną strukturę HTML
|
|
2. Upewnij się, że:
|
|
- Wrapper ma klasę `article-info text-muted` (tag `<dl>`)
|
|
- create_date.php: `<dd class="create">` + `<time itemprop="dateCreated">`
|
|
- publish_date.php: `<dd class="published">` + `<time itemprop="datePublished">`
|
|
- modify_date.php: `<dd class="modified">` + `<time itemprop="dateModified">`
|
|
- Tekst dat zawiera polskie frazy: "Utworzono", "Opublikowano:", "Poprawiono:"
|
|
(metryczka.js robi .replace() tych fraz)
|
|
3. NIE zmieniaj plików JS — one działają poprawnie, problem jest w HTML
|
|
4. NIE modyfikuj plików CSS szablonu
|
|
</action>
|
|
<verify>Przejrzyj zmodyfikowane pliki i porównaj selektory JS z wygenerowanym HTML</verify>
|
|
<done>AC-3 satisfied: Selektory JS pasują do struktury HTML</done>
|
|
</task>
|
|
|
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
<what-built>Naprawione pliki layout metryczek</what-built>
|
|
<how-to-verify>
|
|
1. Wgraj poprawione pliki na serwer (ftp-kr upload)
|
|
2. Otwórz stronę artykułu BIP na idpan.poznan.pl
|
|
3. Sprawdź w DevTools (F12 → Elements):
|
|
- Czy jest element `<dl class="article-info text-muted">`
|
|
- Czy wewnątrz są `<dd class="create">`, `<dd class="published">`, `<dd class="modified">`
|
|
4. Kliknij przycisk "METRYCZKA"
|
|
5. Sprawdź czy pojawiają się dane: Podmiot udostępniający, Wytwarzający, daty
|
|
6. Sprawdź konsolę (F12 → Console) pod kątem błędów JS
|
|
</how-to-verify>
|
|
<resume-signal>Wpisz "approved" jeśli metryczki działają, lub opisz problemy</resume-signal>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<boundaries>
|
|
|
|
## DO NOT CHANGE
|
|
- templates/instytut_dendrologii_/js/metryczka.js (JS działa poprawnie)
|
|
- templates/instytut_dendrologii_/js/dodajmetryczke.js (JS działa poprawnie)
|
|
- templates/instytut_dendrologii_/js/mod64.js
|
|
- templates/instytut_dendrologii_/css/*.css (style niezmienione)
|
|
|
|
## SCOPE LIMITS
|
|
- Tylko naprawa kompatybilności HTML z istniejącymi skryptami JS
|
|
- Nie dodajemy nowych funkcji do metryczek
|
|
- Nie przenosimy jeszcze do template overrides (to Phase 2)
|
|
- Nie modyfikujemy żadnych innych layoutów poza info_block
|
|
|
|
</boundaries>
|
|
|
|
<verification>
|
|
Before declaring plan complete:
|
|
- [ ] Pliki layout mają strukturę HTML kompatybilną z selektorami JS
|
|
- [ ] Metryczka BIP wyświetla się na stronie po kliknięciu
|
|
- [ ] Dane metryczki (podmiot, wytwarzający, daty) są poprawnie wypełnione
|
|
- [ ] Brak błędów JS w konsoli przeglądarki
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
- Metryczki artykułów BIP widoczne i funkcjonalne na stronie
|
|
- Klient potwierdza naprawę
|
|
- Pliki layout kompatybilne z istniejącym kodem JS
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md`
|
|
</output>
|