Confirm dialog pro Bootstrap a jQuery

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Rampus
Člen | 39
+
0
-

Určitě znáte připady, kdy na je potřeba napsat potvrzovací dialog. Znamená to vytvořit nějaký div, nadefinovat tlačítka, texty. zajistit javascriptem spuštění a obsluhu atd… Takže v šabloně vzniká spousta balastu, který je na 90% stejný.

No a když už jsem na jedné stránce měl asi 5 dialogů typu „Smazat položku?“ „Smazat všechny položky?“ „Uložit data?“ „Odejít bez uložení?“… Tak jsem se naštval a vyplodil tuto malou utilitku, která vytváří dialogy sama na základě data- atributů.

Je to jen taková malá blbina, ale mě to ušetří spoustu času a hledání chyb, tak snad vám přijde taky vhod.

Pracuje s Bootstrapem a jQuery (jQueryUI není potřeba)

Základním syntaxe:

<?php
 <a n:href="delete! $id"
	data-confirm="true"
	data-confirm-text="Opravdu chceš smazat záznam {$id}?"
	class="ajax"
	> Smazat</a>
?>

Po kliknutí na link se zobrazí dialog a když se klikne ano, provede se akce v href. Pokud je navíc class ajax, provede se ajaxově.

Je možno dialog přestylovat, definovat classy a texty hlavičky a tlačítek.

Demo je k vidění zde:http://confirmdialog.redsoft.cz, stažení a návod tamtéž. (s dovolením jsem jen lehce upravil sandbox :) )

Tak snad vám to aspoň trošku ulehčí práci :)

David Ďurika
Člen | 328
+
0
-

link ‚Stahnout můžete zde‘ ti nefunguje…

stekycz
Člen | 152
+
0
-

Vypadá to celkem dobře. Jen se mi nedaří stáhnout kódy a háže mi to kód 500 :-(

Plus mě napadá, zda by nestálo za to vytvořit to jako komponentu. Pokud budu mít v šablone 5 různých dialogů, měl bych tam hodně data- atributů a možná by se to stalo nepřehledným. Komponenty jsou možná i moc velký kanón, ale bylo by možné zjednodušit definici dialogu? Jde mi především o možnost vypustit styly a nějakým způsobem je extrahovat jinam. Předpokládám, že v jedné aplikaci budou dialogy vypadat stejně.

Další návrh – použil by někdo dialog se třemi a více tlačítky? Podle aktuálního dema tipuju, že umožňuje jen OK a Cancel. Bylo by případně možné přidat i ukázku jiného než modal dialogu?

Rampus
Člen | 39
+
0
-

achtan napsal(a):

link ‚Stahnout můžete zde‘ ti nefunguje…

už funguje. Pral jsem to přes ftp a zapoměl smazat cache a nějak to blblo :)

Rampus
Člen | 39
+
0
-

Gruw napsal(a):

Vypadá to celkem dobře. Jen se mi nedaří stáhnout kódy a háže mi to kód 500 :-(

Plus mě napadá, zda by nestálo za to vytvořit to jako komponentu. Pokud budu mít v šablone 5 různých dialogů, měl bych tam hodně data- atributů a možná by se to stalo nepřehledným. Komponenty jsou možná i moc velký kanón, ale bylo by možné zjednodušit definici dialogu? Jde mi především o možnost vypustit styly a nějakým způsobem je extrahovat jinam. Předpokládám, že v jedné aplikaci budou dialogy vypadat stejně.

Další návrh – použil by někdo dialog se třemi a více tlačítky? Podle aktuálního dema tipuju, že umožňuje jen OK a Cancel. Bylo by případně možné přidat i ukázku jiného než modal dialogu?

Koncept vychází z modál dialogu který dělá Bootstrap (velmi rychle jsem se tuhle knihovnu naučil používat :) ) A pokud se to ještě prožene přes LESS, tak si nadefinuješ barvy stylů a v celý app to pak vypadá stejně a už jen přižazuješ btn-* styly (success, warning, danger…).
Pro tři tlačítka jsem to neřešil, protože to používám jen jako confirm Ano/Ne.

A co se tyče zjednodušení… Já to mám tak, že si natvrdo přidám styly ve zdrojáku a pak vím, že defaultně budu mít všechny hlavičky třeba žlutý a Ano tlačítko bude zelené. A pak stačí použít jen data- pro nadpis, a otázku. A když budu chtít jiný styl, tak nastavím ostatní data atributy.
Chtěl jsem to udělat jako jQuery extension, ale to bych pak do každý šablony musel vkládat něco jako:

<?php
	$('[data-confirm]').confirm({
		buttonOkText: Ano,
		.....
	});
?>

a tomu jsem se chtěl vyhnout :)

Editoval Rampus (20. 3. 2012 16:01)

miler
Člen | 75
+
0
-

Mohl by mi prosím někdo poradit návod pro blbce jak to rozjet?

Připojil jsem v layoutu:

  • bootstrap.js
  • nette.ajax.js
  • jquery

V presenteru>

  • jsem přidal handleDelete($param), funkce je prázdná

V šabloně:

  • jsem přidal:
<a id="myLink" n:href="delete! 'Základ'"
   data-confirm="modal"
   data-confirm-title="Potvrdit"
   data-confirm-text="Smazat ?"
   class="ajax"
   >
    Zakladní dialog
</a>

Po kliknutí na odkaz se nic nestane. pokud smažu data-adtributy u odkazu, tak se zavolá ?do=delete.

Děkuji za nakopnutí.

Michal Vyšinský
Člen | 608
+
0
-
  1. V jakém pořadí jsi je přilinkoval? jQuery musí být jako první – bootstrap je na něm závislý.
  2. Máš správné cesty k souborům? Zkus si v prohlížeči otevřít zdrojový kód a kliknout na cesty u těch js souborů, jestli se neotevřou tak máš špatné cesty.
miler
Člen | 75
+
0
-

CherryBoss:

  1. jquery (1.7.2), nette.ajax.js, bootstrap, confirmdialog
  2. všechny jsou korektně připojené

Zapomněl jsem na

$.nette.init();

Niméně těď se sice handle metoda volá, ale dialog nikde.

Editoval miler (4. 1. 2013 18:28)

duskohu
Člen | 778
+
0
-

Linka na: Stahnout můžete zde. Nefunguje.

libja
Člen | 8
+
0
-

Funguje. Stáhne se ti soubor, ale chybí mu přípona js. Buď jí můžeš dopsat, nebo si to otevři v poznámkovém bloku a obsah překopíruj. (Alespoň já to tak rozběhal :-) )

duskohu
Člen | 778
+
0
-

Caute, skusali ste niekto pouzit tento confirm-dialog pre ajaxove volanie odkazu pri pouziti nette.ajax.js, robi mi to ze modal okno mi vybehne, ale odkaz sa na pozadi aj tak vykona skor nez dam potvrdit, alebo zamietnut.

gondro
Člen | 7
+
0
-

Pozeram ze je to uz dlhsie mrtve. Podarilo sa to niekomu rozbehat s nette.ajax.js?

duskohu
Člen | 778
+
0
-

skus toto, Gist

gondro
Člen | 7
+
0
-

duskohu napsal(a):

skus toto, „Gist“:

Joo diki moc funguje