Jak změnit chování flash message

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

Dobrý den,

PHP 5.3.24
Microsoft-IIS 8.0
Nette Framework 2.1-dev

chtěl bych se zeptat jak změnit chování flashMessage, chci aby se mi po objevení třídy flash flashzpravička sjela pomocí slideDown, ale nevím jakou akci to navázat a jak zachitit třídu flash.

mám na mysli neco takového:

$(".flash").ready(function(){
	$(this).slideDown(500);
});

ready, samozřejmě funguje jen na body nebo img, takže nevím jak zachitit akci „objevení flashMessage“ aby sjela dolu. Nechci to dávat na akci submit, protože bych mohl flashMessage potřebovat i při přesměrování, takže na submit to dat nemužu. Ted se mi vždy hned objeví a nezmizí.

Předem Vám děkuji za odpověď Petr.

Editoval Petrik.a.dost (14. 11. 2013 20:19)

romiix.org
Člen | 343
+
0
-

S nette to moc nesúvisí.

Iba tak od brucha, bez skúšky a testovania..

var flashes = function() {
	$(".flash").slideDown(500);
};

$(document).ready(flashes); // zavesí na flashMessages po načítaní stránky

$(document).ajaxComplete(flashes); // zavesí na flashMessages načítané ajaxom
Petrik.a.dost
Člen | 72
+
0
-

ono se to nezavěsí… zkusel jsem
var flashes = function() {
$(„.flash“).slideDown(300);
console.log(„jo“);
};

$(document).ready(flashes); // zavesí na flashMessages po načítaní stránky

$(document).ajaxComplete(flashes); // zavesí na flashMessages načítané ajaxom

a log do konzole proběhne hned i když se nemá zobrazit flashMessage

romiix.org
Člen | 343
+
0
-

A vadí to? V prípade ak flash neexistuje, tak sa to nemá na zo zavesiť. Ak existuje, tak to splní funkciu. Nie je to extra čisté riešenie ale funkčné by malo byť.

Petrik.a.dost
Člen | 72
+
0
-

on ten slideDown nefunguje vubec prostě se tam flashMessage zobrazí rovnou… možná by to šlo takto ale je to takové nešikovné:

$(document).ready(function(){
    if($(".flash").hasClass("ok") || $(".flash").hasClass("error") || $(".flash").hasClass("info")){
        alert("jo");
    }

});
romiix.org
Člen | 343
+
0
-

A máš tie správy najprv skryté? Napr. cez CSS display: none;.

Petrik.a.dost
Člen | 72
+
0
-

takto to funguje, ale ja jsem myslel nějak to udělat aby to začínalo už tím slidemDown a ne aby se to zobrazilo ja to javascriptem schoval, sjel dolu počkal a vyjel nahoru…

$(document).ready(function(){
    if($(".flash").hasClass("ok") || $(".flash").hasClass("error") || $(".flash").hasClass("info")){
        $(".flash").css("display", "none").slideDown(300).delay(5000).slideUp(300);
    }

});

tak to to funguje ale není to nejlepší řešení, protože co když se rozhodnu přidat zalší typ zprávičky tak budu muset zase rozšiřovat podmínku a to se mi moc nelibí z hlediska udržby kódu…

romiix.org
Člen | 343
+
0
-

Načo špecifikuješ príslušnosť k tiedam cez .hasClass("ok")?

Robí to nejaký problém bez toho?

$(document).ready(function(){
	$(".flash").slideDown(300).delay(5000).slideUp(300);
});

Skry to rovno cez CSS a nie až javascriptom.

.flash {display:none}

Prípadne zmeň šablónu a vlož tam display:none ako inline-style.

Petrik.a.dost
Člen | 72
+
0
-

display:none nejede, po vyvolání flashMessage je hned videt a neproběhne slideDown… ale už jsem blízko…

Petrik.a.dost
Člen | 72
+
0
-

tak už to jede jak jsem chtěl… jsem to vepsal přímo do : <div n:foreach=„$flashes as $flash“ class=„flash {$flash->type}“ style=„display:none;“>{$flash->message}</div> a jede… tak děkuji za spoluprácí a pomoc i když se to přímo na nette nevztahovalo ještě jednou Díky