This commit is contained in:
2026-04-10 21:31:44 +02:00
parent a9221e3f5d
commit 17efcfbae5
14 changed files with 591 additions and 8 deletions

16
.paul/PROJECT.md Normal file
View File

@@ -0,0 +1,16 @@
# PROJECT: idpan.poznan.pl
## Description
Strona internetowa Instytutu Dendrologii PAN w Kórniku. Oparta na Joomla CMS z własnym szablonem `instytut_dendrologii_`.
## Tech Stack
- Joomla CMS (PHP)
- Custom template: `instytut_dendrologii_`
- JavaScript (vanilla + jQuery)
- CSS
- FTP deployment (ftp-kr VS Code extension)
## Key Constraints
- Pliki core Joomla są nadpisywane przy aktualizacjach — customizacje muszą iść przez template overrides
- Przed edycją plików — pobierz aktualną wersję z serwera (FTP sync)
- Strona BIP wymaga metryczek artykułów (wymóg prawny)

13
.paul/ROADMAP.md Normal file
View File

@@ -0,0 +1,13 @@
# ROADMAP — idpan.poznan.pl
## Milestone: v1.0 — Naprawa metryczek po aktualizacji Joomla ✓ (2026-04-10)
### Phase 1: Fix article-info metryczki (hotfix)
- **Goal:** Przywrócić prawidłowe wyświetlanie metryczek artykułów (klasa `article-info text-muted`)
- **Status:** Complete
- **Priority:** Critical — zgłoszenie klienta
- **Completed:** 2026-04-10
### Phase 2: Template overrides (hardening) — optional
- **Goal:** Przenieść customizacje z plików core do template overrides, aby przetrwały przyszłe aktualizacje
- **Status:** Not started

25
.paul/STATE.md Normal file
View File

@@ -0,0 +1,25 @@
## Current Position
Milestone: v1.0 Naprawa metryczek po aktualizacji Joomla
Phase: 1 of 2 (Fix article-info metryczki) — Complete
Plan: 01-01 complete
Status: Milestone v1.0 complete
Last activity: 2026-04-10 — Milestone closed
Progress:
- Milestone: [██████████] 100% ✓
## Loop Position
Current loop state:
```
PLAN ──▶ APPLY ──▶ UNIFY
✓ ✓ ✓ [Loop complete - Phase 1 done]
```
## Session Continuity
Last session: 2026-04-10
Stopped at: Phase 1 complete
Next action: Milestone complete. Phase 2 (template overrides) odłożona.
Resume file: .paul/phases/01-fix-article-info-metryczki/01-01-SUMMARY.md

View File

@@ -0,0 +1,14 @@
# 2026-04-10
## Co zrobiono
- [Phase 1, Plan 01] Naprawa metryczek artykułów BIP po aktualizacji Joomla
- Przywrócono atrybuty itemprop (dateCreated, datePublished, dateModified) w sublayoutach info_block
- Przywrócono atrybuty schema.org (author, name, url) w author.php
## Zmienione pliki
- `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`

View File

@@ -0,0 +1,23 @@
{"ts":"2026-04-10T19:10:32Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/idpan.poznan.pl/.paul/phases/01-fix-article-info-metryczki\"\",\"description\":\"Create PAUL phase directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:10:42Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:10:46Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:10:53Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:11:52Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\phases\\\\01-fix-article-info-metryczki\\\\01-01-PLAN.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:13:54Z","tool":"Bash","cmd":"mkdir -p \"/c/Users/jacek/.claude/projects/C--visual-studio-code-projekty-idpan-poznan-pl/memory\"\",\"description\":\"Ensure memory directory exists\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:14:07Z","tool":"Write","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\projects\\\\C--visual-studio-code-projekty-idpan-poznan-pl\\\\memory\\\\project_metryczki_issue.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:14:09Z","tool":"Write","file":"C:\\\\Users\\\\jacek\\\\.claude\\\\projects\\\\C--visual-studio-code-projekty-idpan-poznan-pl\\\\memory\\\\MEMORY.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:33Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\create_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:34Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\publish_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:36Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\modify_date.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:37Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:41Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:44Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:18:45Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\layouts\\\\joomla\\\\content\\\\info_block\\\\author.php","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:20:59Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\phases\\\\01-fix-article-info-metryczki\\\\01-01-SUMMARY.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:21:16Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:21:17Z","tool":"Bash","cmd":"mkdir -p \"/c/visual studio code/projekty/idpan.poznan.pl/.paul/changelog\"\",\"description\":\"Create changelog directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:21:25Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\changelog\\\\2026-04-10.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:21:30Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:23:00Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:23:03Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}
{"ts":"2026-04-10T19:23:05Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\idpan.poznan.pl\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/idpan.poznan.pl"}

View File

@@ -0,0 +1,193 @@
---
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>

View File

@@ -0,0 +1,115 @@
---
phase: 01-fix-article-info-metryczki
plan: 01
subsystem: layouts
tags: [joomla, info_block, itemprop, metryczki, bip]
requires:
- phase: none
provides: n/a
provides:
- Przywrócone atrybuty itemprop w sublayoutach info_block
- Działające metryczki BIP na stronie
affects: []
tech-stack:
added: []
patterns: []
key-files:
created: []
modified:
- 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
key-decisions:
- "Naprawa w plikach core zamiast template overrides (hotfix, Phase 2 na hardening)"
patterns-established:
- "Aktualizacja Joomla usuwa atrybuty itemprop z sublayoutów info_block"
duration: ~15min
started: 2026-04-10
completed: 2026-04-10
---
# Phase 1 Plan 01: Fix article-info metryczki Summary
**Przywrócono atrybuty itemprop w sublayoutach info_block po aktualizacji Joomla — metryczki BIP znów działają.**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~15min |
| Started | 2026-04-10 |
| Completed | 2026-04-10 |
| Tasks | 4 completed (1 checkpoint:human-action, 2 auto, 1 checkpoint:human-verify) |
| Files modified | 4 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Metryczka BIP widoczna na stronie | Pass | Przycisk METRYCZKA renderuje się, dane wyświetlają po kliknięciu |
| AC-2: Dane metryczki poprawnie wypełnione | Pass | Podmiot, Wytwarzający, daty wypełnione przez metryczka.js |
| AC-3: Selektory JS pasują do HTML | Pass | itemprop przywrócone, selektory .create [itemprop=dateCreated] etc. działają |
## Accomplishments
- Zdiagnozowano przyczynę: aktualizacja Joomla usunęła atrybuty `itemprop` z elementów `<time>` i `<dd>` w sublayoutach info_block
- Przywrócono 4 pliki: `itemprop="dateCreated"`, `itemprop="datePublished"`, `itemprop="dateModified"` oraz atrybuty schema.org w author.php
- Metryczki BIP ponownie funkcjonalne
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `layouts/joomla/content/info_block/create_date.php` | Modified | Dodano `itemprop="dateCreated"` do `<time>` |
| `layouts/joomla/content/info_block/publish_date.php` | Modified | Dodano `itemprop="datePublished"` do `<time>` |
| `layouts/joomla/content/info_block/modify_date.php` | Modified | Dodano `itemprop="dateModified"` do `<time>` |
| `layouts/joomla/content/info_block/author.php` | Modified | Przywrócono `itemprop="author"`, `itemscope`, `itemprop="name"`, `itemprop="url"` |
## Decisions Made
| Decision | Rationale | Impact |
|----------|-----------|--------|
| Naprawa w core zamiast template overrides | Hotfix — klient czeka, szybka naprawa priorytetem | Problem powtórzy się przy następnej aktualizacji Joomla. Phase 2 (template overrides) rozwiąże to trwale |
## Deviations from Plan
### Summary
| Type | Count | Impact |
|------|-------|--------|
| Auto-fixed | 0 | n/a |
| Scope additions | 0 | n/a |
| Deferred | 1 | Phase 2 |
### Deferred Items
- Phase 2: Przenieść customizacje do template overrides (`templates/instytut_dendrologii_/html/layouts/joomla/content/info_block/`) aby przetrwały przyszłe aktualizacje Joomla
## Issues Encountered
| Issue | Resolution |
|-------|------------|
| SCP nie obsługuje hasła interaktywnie | Użytkownik pobrał pliki ręcznie przez ftp-kr |
## Next Phase Readiness
**Ready:**
- Metryczki działają, klient obsłużony
**Concerns:**
- Problem powtórzy się przy następnej aktualizacji Joomla (pliki core nadpisywane)
- Rozwiązanie trwałe wymaga Phase 2: template overrides
**Blockers:**
- None
---
*Phase: 01-fix-article-info-metryczki, Plan: 01*
*Completed: 2026-04-10*