Odkaz vratit spat vo flash message

Tomas8698
Člen | 109
+
0
-

Zdravim, chcel by som sa spýtať či može byt vo flash message ulozeny odkaz? Ma to fungovat tak že ked user klikne na vratit spat vrati ho to na predchadzajucu stranku. Da sa to spravit takto?
Za pomoc dakujem :)

Cars Tomas
Člen | 43
+
+2
-

Ahoj. Ano může použij k tomu \Nette\Utils\Html

	$this->flashMessage(\Nette\Utils\Html::el()->setHtml('Text flash message <a href="{odkaz zpet}">zpět</a>.'), 'danger');
David Matějka
Moderator | 6445
+
+6
-

jen doplním, že je lepší to celé sestavit pomocí Html::el (kvůli escapování atd)

$this->flashMessage(
	Html::el()
		->addText('Text message ')
		->addHtml(Html::el('a')->href('odkaz')->setText('zpet'))
)
Tomas8698
Člen | 109
+
0
-

Wau super, velmi pekne dakujem 🙂🙂

Kamil Valenta
Člen | 822
+
+1
-

Souvisí jen okrajově, ale jen bych se zamyslel nad textací „Vrátit zpět“. Pokud po odeslání formu na mne jako uživatele vybafne flash „vrátit zpět“ s možností kliku, budu mít pocit, že tím udělám rollback toho submitu…

Tomas8698
Člen | 109
+
0
-

To ano to je pravda, to budem musiet este upravit aby to pre usera nebolo metuce 🙂 Dakujem @KamilValenta
Este som sa chcel spytat či sa da do href vlozit funkcia bez ajaxu? Ako pri signalov :)

dakur
Člen | 493
+
0
-

O tom, jestli je to asynchronní požadavek nebo ne (tj. ajax), jednoduše řečeno rozhoduje, jestli máš na tom odkazu class="ajax" (v případě běžného použití knihovny nette.ajax či Naja).

Tomas8698
Člen | 109
+
0
-

Nie nie to nemám, to je flasmessage bez classu ajax. A nepoužívam Naja. Tam ono ta funkcia by mala vrátiť zmeny ako bolo predtým než user klikol na button a do databázy uložiť predchádzajúcu verziu. Da sa to spraviť cez flash-message alebo vytvoriť skôr alert, v ktorom userovy dám tuto možnosť? A hodi sa na to skor ajax? alebo bez ajaxu to spravit?

Editoval Tomas8698 (29. 4. 2021 10:58)

dakur
Člen | 493
+
0
-

Nerozumím. Pokud chceš, aby měl uživatel možnost vrátit změny, tak je musíš mít někde uložené. Takže dáš uživateli nějakou možnost (tlačítko nebo něco), kterým tu akci spustí (tj. bude to odkazovat na nějaký presenter nebo signal).

Jestli to má být asynchronní nebo ne asi není úplně otázka best-practice, ale spíš tvé konkrétní aplikace, aby to v ní dávalo smysl.

Editoval dakur (29. 4. 2021 11:11)

Tomas8698
Člen | 109
+
0
-

Ono to je CMS, kde užívateľ upraví určitú podstránku a do databazy sa uloží každá úprava stránky ukladám si to podlá id_version, a históriu uprav si vypisujem na ďalšej podstránke ktorá spadá pod každú konkrétnu stránku, tam mam button vráti zmeny k tejto verzii a po kliknutí zmení na tu verziu, len ide o to že ked user nechtiac klikne chcem mu dát možnosť vrátiť zmeny a na to potrebujem naviazať funkciu ktorá mi vráti zmeny na predošle :) Môžem poslať aj foto pre lepšiu predstavu

Kamil Valenta
Člen | 822
+
0
-

Aha, takže to má dělat rollback toho submitu. Myslím, že jsme to tedy všichni v počátku pochopili „špatně“.
Já bych to ve flashmsg neřešil.
Pokud uživatel klikl na submit omylem, jak říkáš, nic se přece neděje. On by napřed musel omylem udělat nějaké úpravy a omylem je odeslat. Opravdu se to bude stávat tak často? A když už, tak píšeš, že má někde možnost revertovat v historii změn.
Druhý případ je, že udělá změny záměrně, záměrně je submitne, pak se podívá na frontend a změny se mu nebudou líbit. Pak už ale pravděpodobně stejně tu flashmsg neuvidí a opět bude revertovat v historii změn.

Tomas8698
Člen | 109
+
0
-

Posielam aj obrazky ako to vyzera : https://github.com/tommy8699/Nette

A ano presne ja na podstranke history volam funkciu revertVersion(), ktora mi spravi update v tabulke co sa zobrazuje a insert novej verzie do tabulky pages_history a potom ma presmeruje na podstranku edit kde uz sa hodnoty zmenie podla verzie :)
A ja by som potreboval aby ked klikne na link vratit spat tak ho presmeruje naspat na history a zavola funkciu ktora vyberie predchadzajucu verziu( funkciu uz mam)

@KamilValenta a že skor by si to cez alert?, ono teraz ako vidiet na fotke tak je tam nejaku chvilu flashmessage a potom zmizne. A tak často by to nemalo, len som to chcel nejak pokryt ak by nahodou :)

Editoval Tomas8698 (29. 4. 2021 12:09)

Tomas8698
Člen | 109
+
0
-

Nakoniec som to vyriešil takto :) s vyuzitim signalu

 $undolink =  $this->link('back!',$select->id_page);
    $this->flashMessage('Obsah stranky z '.$select->updated_at. ' ', 'danger')->undolink = $undolink;
    $this->redirect('edit', $select->id_page);