visual paginator – ajax hook

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

Ahoj,

rád bych přes JS prohodil text v tlačítku po AJAX stránkování (funguje korektně vč. historie) ale nevím, co dosadit do prvního parametru $.nette.ext(). Vyzkoušel jsem paginator (nazev snippetu), p-ShowPage a podobně.

function ajaxPaginator()
{
    var a = $(".ajax-paginator");
    a.click(function()
    {
        var _d = $(this).text();
        var _n = $(this).attr("data-text-loading");

        // change title
        $(this).text(_n);

        $.nette.ext('posts', {
            success: function ()
            {
                $(this).text(_d);
            }
        });
    });
}

Jak ho zjistím? Je obecné pravidlo? Díky.

CZechBoY
Člen | 3608
+
0
-

Pokud tvoříš extension tak je na tobě jaký název použiješ, jen musí být unikátní.

Landsman
Člen | 152
+
0
-

CZechBoY napsal(a):

Pokud tvoříš extension tak je na tobě jaký název použiješ, jen musí být unikátní.

Rozumím, bohužel nemohu dohledat jaký je použit tady.
Ještě se zeptám – dá se udělat ještě jeden script, nezávisle na rozšíření, který se vykoná po ajax callu té excension?

akadlec
Člen | 1326
+
0
-

Dá :D

Landsman
Člen | 152
+
0
-

@akadlec náhodou zrovna tento hook neznáš, viď?

Landsman
Člen | 152
+
0
-

Nevíte? @aDAm?

akadlec
Člen | 1326
+
0
-

Záleží kdy jej chceš vykonat. Obecně má ajax eventy a můžeš se pověsit na ně. Zkus blíže popsat jak má ta událost vypadat.

Landsman
Člen | 152
+
0
-

akadlec napsal(a):

Záleží kdy jej chceš vykonat. Obecně má ajax eventy a můžeš se pověsit na ně. Zkus blíže popsat jak má ta událost vypadat.

Mám custom šablonu, kde je „append paginator“. Tzn po kliku na button „Načíst dalších 20 příspěvků“ změním text v tlačítku na „Načítám …“ a po jeho úspěšném vykonání bych jej rád vrátil zpět na původní hodnotu. Triviální akce :)

Tak mě zajímá na jaký event ajax paginatoru se mám napojit.
Případně existuje nějaký obecný postup, jak tyto eventy / hooky zjistit?

akadlec
Člen | 1326
+
0
-

No ono můžeš si udělat extension pro paginator která ti toto bude řešit. Mohla by vypadat nějak takto (psáno z hlavy)

$.nette.ext('customPaginator', {
	before: function(xhr, settings) {
		if (!settings.nette) {
			return;
		}

		this.isPageButton = settings.nette.el.hasClass('paginator');

		if (this.isPageButton ) {
			this.buttonCaption = settings.nette.el.text();
			settings.nette.el.text('Nacitam');
		}
	},
    success: function (payload) {
		if (this.isPageButton ) {
			settings.nette.el.text(this.buttonCaption);
		}
    }
}, {
	isPageButton: false,
	buttonCaption: '',
});
Landsman
Člen | 152
+
0
-

akadlec napsal(a):

No ono můžeš si udělat extension pro paginator která ti toto bude řešit. Mohla by vypadat nějak takto (psáno z hlavy)

$.nette.ext('customPaginator', {
	before: function(xhr, settings) {
		if (!settings.nette) {
			return;
		}

		this.isPageButton = settings.nette.el.hasClass('paginator');

		if (this.isPageButton ) {
			this.buttonCaption = settings.nette.el.text();
			settings.nette.el.text('Nacitam');
		}
	},
    success: function (payload) {
		if (this.isPageButton ) {
			settings.nette.el.text(this.buttonCaption);
		}
    }
}, {
	isPageButton: false,
	buttonCaption: '',
});

Teď tomu asi nerozumím. On teda není žádný vyhrazený hook přímo pro ten ajax paginatoru? Jak ta nově vytvořená extension pozná, že doběhl ajax request paginatoru se success payloadem?

akadlec
Člen | 1326
+
0
-

Tak, že pokud to nezměníš tak aktuálně může běžet jen jeden request. Nicméně ten request by měl být na tom daném elementu, proto je tam ta kontrola a ověřování zda má s textem pracovat.

akadlec
Člen | 1326
+
0
-

Jinak tahle ext. se pověsí na všechny requesty co budeš posílat, ale v before se udělá kontrola zda se má zpracovávat.