jQuery .on() zamiast .live() i .delegate()

Dodany: 11 stycznia, 2013 | Kategoria: JavaScript

Musiałem poprawić pewien skrypt, a ponieważ część elementów była tworzona dynamicznie i wtedy musiałem do nich podpiąć event, najprościej było użyć .live() z jQuery – niestety od wersji 1.7+ .live() ma status deprecated. Tak samo jak .delegate(), które działało podobnie. Zaleca się używanie .on(), które działa podobnie do .bind().
Niestety i tutaj miałem problemy… użycie .on() na konkretnych elementach przypinało event tylko jeśli istniały one w momencie wykonania, a już nie dodawało i nie obserwowało powstawania nowych takich elementów. Po chwili googlania po sieci, znalazłem rozwiązanie – element dla którego trzeba wykonać .on(), to document, natomiast jako drugi parametr podaje się którego elementu .on() ma dotyczyć:

//wersja z live - deprecated
$('.class a').live(function(){ /* xxx */ });

//poprawnie
$(document).on('click', '.class a', function(){ /* xxx */ });

I teraz dodane dynamicznie elementy będą event click wykonywać.

Tagi: , , , , , 1 Komentarz »

Gdzie jest aplikowana paginacja na kolekcji widoku kategorii w Magento?

Dodany: 9 października, 2012 | Kategoria: Magento, PHP

Potrzebowałem znaleźć, gdzie jest ograniczana kolekcja produktów w widoku kategorii, przez co zamiast X produktów wyświetla się np. 9.

1
2
class Mage_Catalog_Block_Product_List {
...
162
163
// set collection to toolbar and apply sort
$toolbar->setCollection($collection);
Tagi: , , , , , , Brak komentarzy »

AddHandler vs AddType w .htaccess

Dodany: 26 września, 2012 | Kategoria: Apache

Trochę sie nad tym męczyłem, bo nie działało mi

AddType text/x-component .htc

w .htaccess

Tymczasem okazało się, że w Apache 2.x używa się

AddHandler text/x-component .htc

A wszędzie proponują to pierwsze…

Tagi: , , , Brak komentarzy »

Miniaturka obrazków youtube

Dodany: 5 listopada, 2011 | Kategoria: PHP

Miniaturka obrazków do youtube:

http://img.youtube.com/vi/VIDEO_ID/1.jpg
Tagi: , , Brak komentarzy »

Grub rescue – unknown filesystem

Dodany: 14 sierpnia, 2011 | Kategoria: Ubuntu

Wczoraj przywitał mnie niemiły komunikat na ekranie laptopa:

GRUB error: unknown filesystem
grub> rescue

Trochę się zdenerwowałem, bo pal licho już Ubuntu, mogę zainstalować nowe, ale Windowsa wcale nie chciało mi się stawiać na nowo.  Wyjściem z sytuacji byłoby zapuszczenie płyty z Windowsem i uruchomienie fixmbr, ale postanowiłem poszukać, czy samego gruba nie da się jakoś inaczej przywrócić do działania tak aby nie tracić żadnego z systemów. Po godzinie szukania znalazłem w końcu na polskim forum Ubuntu odnośnik do pewnego blogu, a tam pełne rozwiązanie wymagające płyty Ubuntu Live oraz 2 minut na przepisanie tekstu do terminala. Przekopiuję rozwiązanie tutaj, bo może jeszcze będę go kiedyś potrzebował. OFC ext4 i sda9 należy podmienić na własne wartości (partycję z ubuntu (sdaX) i jej typ (ext3/4) znajdziemy za pomocą sudo fdisk -l)

sudo mkdir /mnt/temp
sudo mount -t ext4 /dev/sda9 /mnt/temp
sudo mount -o bind /dev /mnt/temp/dev
sudo mount proc /mnt/temp/proc -t proc
sudo mount sysfs /mnt/temp/sys -t sysfs
sudo chroot /mnt/temp
sudo grub-install /dev/sda
sudo update-grub2

Źródło: http://tweetless.wordpress.com/2009/12/05/przywracanie-gruba-2-na-ubuntu-9-10/

Tagi: , , , , , , , 1 Komentarz »

Includowanie bloku Magento bezpośrednio w templatce

Dodany: 27 lipca, 2011 | Kategoria: Magento, PHP

Gdy wstawimy blok do pliku layoutu, będzie on wczytany przy generowaniu strony (nawet jeśli go nie wyświetlamy w templatce) i sprawdza cache. Dzisiaj miałem taki problem, ze aby nie nadpisywać całego magento i wyswietlania kategorii, najprościej było po prostu ustawić pewien parametr w templatce a potem ten drugi blok miał go odczytywać aby utworzyć klucz dla cache. Tu pojawił się problem, bowiem aby skorzystac z getChildHtml() musiałem ustawić blok w layoucie, co powodowało, ze generował się klucz do cache z parametru, którego jeszcze nie było i sypało błędem.

Poszukałem rozwiazania w googlach i było prawie dobre – niestety okazało się, że metoda setData wcale nie ustawi zmiennej $this->_template, a $this->_data[’template’] dla bloku, przez co output HTMLowy się nie wykonywał ($this->getTemplate() zwracało NULL).

Zatem prawidłowe rozwiązanie to:

echo $this->getLayout()
->createBlock('Name_Module_Block_Type', 'name')
->setTemplate('name/module/type.phtml')
->toHtml();
Tagi: , , , , , , , Brak komentarzy »

isset – nieistniejąca tablica w stringu

Dodany: 16 lipca, 2011 | Kategoria: PHP

Ostatnio przy okazji szukania pewnego błędu w kodzie byłego pracownika w pracy natknęliśmy się na ciekawą rzecz. Mianowicie w pewnej pętli foreach definiowana była zmienna tekstowa, a kawałek dalej sprawdzane było czy jest zdefiniowany w tej zmiennej pewien klucz tablicy – jeśli nie, przeskakujemy do kolejnej iteracji. W pierwszej chwili oczywistym wydało się, że skoro zmienna jest stringiem, a sprawdzamy czy istnieje klucz tablicy, to isset zwróci false i tak naprawdę pętla zawsze skacze do kolejnej iteracji.
Otóż nie. Ponieważ string jest tablicą zawierającą kolejne znaki tekstu, okazało się, że użycie klucza nieliczbowego rzutowane jest na 0, zatem funkcja isset nie sprawdza, czy istnieje klucz, ale czy istnieje pierwszy znak w owym stringu. Zatem:

1
2
3
4
5
6
7
8
$var = 'foobar';

var_dump( $var );
var_dump( isset($var) );
var_dump( $var['test'] );
var_dump( isset($var['test']) );
var_dump( isset($var[0]['test']) );
var_dump( empty($var['test']) );

drukuje

1
2
3
4
5
6
string(6) "foobar"
bool(true)
string(1) "f"
bool(true)
bool(false)
bool(false)

Ach to typowanie dynamiczne w PHP :)

Tagi: , , 1 Komentarz »

Nigdy nie scalaj, ukrywaj etykiety

Dodany: 13 czerwca, 2011 | Kategoria: Inne

Otwieramy rejestr i dochodzimy do klucza

1
HKEY_CURRENT_USER\ControlPanel\Desktop\WindowMetrics

Następnie dodajemy nową wartość ciągu MinWidth o wartości 54 dla dużego paska, 40 dla małego.

Tagi: , , , , , , , , , , , Brak komentarzy »

JavaScript: dowolny znak włącznie ze znakiem nowej linii

Dodany: 12 maja, 2011 | Kategoria: JavaScript

Szukałem tego dość długo, bo potrzebowałem zmieniać BBCode tabelek nawet, gdy tag otwierający i zamykający są w różnych liniach. W końcu trafiłem na rozwiązanie, jak dobrać taki ciąg…

1
[^]+

Równie krótkie co (.*?), a łapie znacznie więcej ;) Teraz mogę bez problemu zaczynać [/table] kilkanaście linijek niżej, niż otworzyłem. Uf.

via http://siphon9.net/loune/2011/02/match-any-character-including-new-line-in-javascript-regexp/

Tagi: , , , Brak komentarzy »

Bug GM – liczba klatek w sprite_add dla GIFów

Dodany: 5 marca, 2011 | Kategoria: Game Maker

Dzisiaj znalazłem buga w GM 8.0.

http://bugs.yoyogames.com/view.php?id=596

Chodzi o to, iż drugi parametr funkcji sprite_add, to liczba klatek w obrazku. Pozwala to na wczytywanie tzw. stripów – kolejno ułożonych obok siebie poziomo grafik w postaci jednego obrazka, jako kolejnych klatek sprite’a w GM. Wszystko działa dobrze do czasu, gdy wczytujemy GIFa. Jak czytamy w helpie, dla animowanych gifów, GM bierze jako parametr imgnum liczbę klatek GIFa. Okazuje się jednak, że nie tylko dla animowanych, ale ogólnie dla gifów – zatem GIF nieanimowany ma zawsze jedną klatkę, nie ważne ile byśmy podali w funkcji sprite_add.

Wniosek  – gifów nie można używać jako stripów w trakcie działania gry. JPG, PNG, lub animowany gif.

Tagi: , , , , , , Brak komentarzy »