Modules
Modul notifikací
Historie za zvonkem notifikací — stejné řádky s tabulkou nad nimi, ve výchozím stavu omezené na toho, kdo se dívá.
Na této stránce
Panel zvonku ukazuje posledních pár. Tohle jsou stejné řádky s tabulkou nad nimi: k hledání, s filtrem podle přečtení, a čitelné i potom, co z panelu vyjely.
composer require nyoncode/wire-module-notificationsphp artisan wire-module-notifications:install
Jak to funguje
Omezené na toho, kdo se dívá. Notifikace je někomu adresovaná, takže výchozí
stav ukazuje vlastní notifikace přihlášeného. Odhlášenému to znamená žádné —
lákavá alternativa, tedy žádný filtr, je únik dat. scope => 'all' z toho udělá
administrativní pohled, což je jiná obrazovka a chce na stránce policy.
Otevření notifikaci označí za přečtenou, v record hooku stránky, protože to dělá každá schránka odjakživa a počet nepřečtených je pak správně, aniž by někdo na něco klikal.
Není to v postranním menu, a to je záměr. Notifikace nejsou entita, kterou
spravujete z menu — jsou to schránka, a cesta dovnitř je zvonek: nese počet
nepřečtených a jeho panel odkazuje rovnou sem. Trvalá položka pro obrazovku, na
kterou se chodí přes odznak, je ta položka, kterou nikdo nečte. Stránka zůstává
registrovaná i nasměrovaná, takže její URL dál funguje; nastavte
navigation.visible (nebo WIRE_NOTIFICATIONS_IN_NAVIGATION=true), pokud chcete
i tu položku.
Ukládá jen driver database. Pod výchozím session není co vypisovat
a instalátor to řekne.
Konfigurace
// config/wire-module-notifications.php'model' => NyonCode\WireCore\Notifications\DatabaseNotification::class, 'scope' => 'own', // 'own' vlastní řádky přihlášeného; 'all' řádky všech 'navigation' => [ 'visible' => false, // do schránky se chodí přes zvonek, ne přes řádek v menu 'group' => 'system', 'label' => null, // null použije vlastní nadpis skupiny modulu 'icon' => 'outline:bell', 'sort' => 96,],
model je třída, kterou obrazovka vypisuje, a patří wire-core: tenhle modul
vlastní obrazovku, ne tabulku. Vlastní model z ní musí dědit — řádky zapisuje
driver notifikací, který o tomhle modulu neví.
scope => 'all' udělá ze schránky administrativní pohled na poštu všech, což
chce oprávnění na stránce, ne jen klíč v konfiguraci. Odhlášenému own
neodpovídá nic, což je ta bezpečná půlka volby.
Texty jsou publikovatelný překladový soubor a markup publikovatelný pohled —
wire-module-notifications::translations a …::views; co to stojí, říká
Vzhled → Lokalizace a
Přepis pohledů.
Co dostanete
| Obrazovka | Poznámky |
|---|---|
| Notifikace | Notifikace i s větou, kvůli které vznikla, tónovaná podle typu, nejnovější první; relativní časy; hledání v payloadu; filtr přečtené/nepřečtené |
| Jedna notifikace | Typ, časy a obsah jako klíč/hodnota |
Čte se to jako schránka, ne jako tabulka sloupců, a ta rozhodnutí stojí za to vypsat, protože se dají omylem vrátit:
- Nepřečtené je váha, ne buňka. Řádek je tónovaný a středně tučný, stejně jako
to říká panel zvonečku — obě plochy se pak čtou jako jeden produkt a sloupec,
který zabíral chip
STAV, teď používá zpráva. - Hledání čte payload. Viditelný text žije v JSON sloupci
data, takže je hledání deklarované naddata->titleadata->message. Vyhledávací pole, které nic nenajde, je horší než žádné. - Není nakreslená jako tabulka.
layout('list')a s ním tři ovládání, která dávají smysl jen nad mřížkou sloupců: žádný checkbox na řádku, žádný panel sloupců, žádnéShow [10] records. Označení všeho přečteným je hlavičková akce nad celou filtrovanou množinou — silnější než výběr a tišší než on. - Slovesa řádku sedí za jedním tichým spouštěčem. Označit přečtené, označit nepřečtené, smazat. Stránku, jejímž jediným úkolem je být čtená, nemá ovládat plné modré a plné červené tlačítko na každém řádku.
- Řádek otevře vlastní stránku notifikace, což ji označí za přečtenou — záměrně
vlastní stránku, ne to, kam míří
->url(): seznam, jehož řádky vedou jednou na fakturu a jindy na notifikaci, je seznam, na který nejde klikat s jistotou. Odkaz z payloadu je na stránce, kterou otevře.
Výběr řádků nabídne tři slovesa schránky — označit přečtené, označit nepřečtené a smazat. Nic z toho se znovu neomezuje: výběr vychází ze stejného dotazu, který tabulka vypisuje, a ten už jsou vlastní řádky diváka — hromadná akce se tedy nedostane dál než obrazovka, ze které se spustila.
Související
- Notifikace — drivery, zvonek, živá půlka a toasty
- Moduly — jak balíček dodává takovou oblast