This commit is contained in:
2026-04-07 20:32:43 +02:00
parent 1933c74395
commit 8fa9ca6439
45 changed files with 2974 additions and 3382 deletions

View File

@@ -0,0 +1,111 @@
---
phase: 82-product-title-tooltip
plan: 01
type: execute
wave: 1
depends_on: []
files_modified: [src/Modules/Orders/OrdersController.php]
autonomous: true
---
<objective>
## Goal
Dodanie natywnego tooltipa (atrybut `title`) do uciętych nazw produktów na liście zamówień, aby po najechaniu myszką wyświetlała się pełna nazwa.
## Purpose
Na liście zamówień nazwy produktów są obcinane przez `text-overflow: ellipsis`. Użytkownik nie ma możliwości zobaczenia pełnej nazwy bez wchodzenia w szczegóły zamówienia. Tooltip rozwiązuje ten problem minimalnym kosztem.
## Output
Zmodyfikowany `OrdersController::productsHtml()` — atrybut `title` na elemencie `.orders-product__name`.
</objective>
<context>
## Project Context
@.paul/PROJECT.md
@.paul/ROADMAP.md
@.paul/STATE.md
## Source Files
@src/Modules/Orders/OrdersController.php (metoda productsHtml(), linia 664)
</context>
<skills>
No specialized flows required.
</skills>
<acceptance_criteria>
## AC-1: Tooltip z pełną nazwą produktu
```gherkin
Given lista zamówień z produktem o długiej nazwie uciętej przez ellipsis
When użytkownik najedzie kursorem na uciętą nazwę produktu
Then pojawia się natywny tooltip przeglądarki z pełną nazwą produktu
```
## AC-2: Brak tooltipa dla pustych nazw
```gherkin
Given produkt bez nazwy (wyświetlany jako "-")
When użytkownik najedzie kursorem na "-"
Then nie pojawia się tooltip (brak atrybutu title lub pusty)
```
</acceptance_criteria>
<tasks>
<task type="auto">
<name>Task 1: Dodanie atrybutu title do .orders-product__name</name>
<files>src/Modules/Orders/OrdersController.php</files>
<action>
W metodzie `productsHtml()`, linia 664, dodać atrybut `title` do `<div class="orders-product__name">`:
Zmienić:
```php
. '<div class="orders-product__name">' . htmlspecialchars($name !== '' ? $name : '-', ENT_QUOTES, 'UTF-8') . '</div>'
```
Na:
```php
. '<div class="orders-product__name"' . ($name !== '' ? ' title="' . htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . '"' : '') . '>' . htmlspecialchars($name !== '' ? $name : '-', ENT_QUOTES, 'UTF-8') . '</div>'
```
- Atrybut `title` dodawany tylko gdy nazwa nie jest pusta
- Wartość `title` escapowana przez `htmlspecialchars` (XSS safety)
- Nie zmieniać żadnej innej logiki metody
</action>
<verify>Otworzyć /orders/list, najechać na uciętą nazwę produktu — powinien pojawić się tooltip z pełną nazwą</verify>
<done>AC-1 i AC-2 spełnione: tooltip pokazuje pełną nazwę; brak tooltipa dla pustych nazw</done>
</task>
</tasks>
<boundaries>
## DO NOT CHANGE
- resources/scss/* (styl truncacji zostaje bez zmian)
- resources/views/orders/* (widoki bez zmian)
- Logika budowania `$itemsPreview` i reszta metody `productsHtml()`
## SCOPE LIMITS
- Tylko natywny tooltip HTML (`title`), bez custom JS tooltip library
- Tylko lista zamówień — nie strona szczegółów
</boundaries>
<verification>
Before declaring plan complete:
- [ ] Atrybut `title` obecny w renderowanym HTML produktów z długą nazwą
- [ ] Brak atrybutu `title` dla produktów bez nazwy
- [ ] Brak regresji — lista zamówień renderuje się poprawnie
- [ ] Wszystkie acceptance criteria spełnione
</verification>
<success_criteria>
- Tooltip z pełną nazwą produktu widoczny po hover na liście zamówień
- Brak zmian CSS ani JS
- Brak regresji w renderowaniu listy
</success_criteria>
<output>
After completion, create `.paul/phases/82-product-title-tooltip/82-01-SUMMARY.md`
</output>

View File

@@ -0,0 +1,84 @@
---
phase: 82-product-title-tooltip
plan: 01
subsystem: ui
tags: [tooltip, orders-list, ux]
requires: []
provides:
- Natywny tooltip z pelna nazwa produktu na liscie zamowien
affects: []
tech-stack:
added: []
patterns: []
key-files:
created: []
modified: [src/Modules/Orders/OrdersController.php]
key-decisions: []
patterns-established: []
duration: 2min
started: 2026-04-07T00:00:00Z
completed: 2026-04-07T00:00:00Z
---
# Phase 82 Plan 01: Product Title Tooltip Summary
**Dodano atrybut `title` do elementu `.orders-product__name` w metodzie `productsHtml()` — natywny tooltip przegladarki z pelna nazwa produktu na liscie zamowien.**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~2min |
| Tasks | 1 completed |
| Files modified | 1 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Tooltip z pelna nazwa produktu | Pass | Atrybut `title` dodany z escapowana nazwa |
| AC-2: Brak tooltipa dla pustych nazw | Pass | Warunek `$name !== ''` pomija pusty title |
## Accomplishments
- Dodano atrybut `title` do `<div class="orders-product__name">` z pelna nazwa produktu (XSS-safe przez `htmlspecialchars`)
- Tooltip pojawia sie tylko gdy nazwa nie jest pusta
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `src/Modules/Orders/OrdersController.php` | Modified | Dodano atrybut `title` w metodzie `productsHtml()` linia 664 |
## Decisions Made
None - followed plan as specified
## Deviations from Plan
None - plan executed exactly as written
## Issues Encountered
None
## Next Phase Readiness
**Ready:**
- Tooltip dziala natywnie, zero zaleznosci JS/CSS
**Concerns:**
- None
**Blockers:**
- None
---
*Phase: 82-product-title-tooltip, Plan: 01*
*Completed: 2026-04-07*