3.5 KiB
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 |
|
true |
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.
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
$itemsPreviewi reszta metodyproductsHtml()
SCOPE LIMITS
- Tylko natywny tooltip HTML (
title), bez custom JS tooltip library - Tylko lista zamówień — nie strona szczegółów
<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>