Files
orderPRO/.paul/phases/82-product-title-tooltip/82-01-PLAN.md
2026-04-07 20:32:43 +02:00

3.5 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous
phase plan type wave depends_on files_modified autonomous
82-product-title-tooltip 01 execute 1
src/Modules/Orders/OrdersController.php
true
## 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.

## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md

Source Files

@src/Modules/Orders/OrdersController.php (metoda productsHtml(), linia 664)

No specialized flows required.

<acceptance_criteria>

AC-1: Tooltip z pełną nazwą produktu

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

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>

Task 1: Dodanie atrybutu title do .orders-product__name src/Modules/Orders/OrdersController.php W metodzie `productsHtml()`, linia 664, dodać atrybut `title` do `
`:
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
Otworzyć /orders/list, najechać na uciętą nazwę produktu — powinien pojawić się tooltip z pełną nazwą AC-1 i AC-2 spełnione: tooltip pokazuje pełną nazwę; brak tooltipa dla pustych nazw

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
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

<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>
After completion, create `.paul/phases/82-product-title-tooltip/82-01-SUMMARY.md`