Tree - drzewko
Tree służy do zarządzania strukturą drzewiastą. Z założenie klasa miała operować na dowolnych danych: baza, pliki xml, system plików, itd. By to osiągnąć wprowadziłem interfejs, który każdy kto chce używać klasy musi zaimplementować. Klasa wówczas nie interesuje się skąd pochodzą dane. Ją interesuje tylko by dostać to co chce. W umieszczonym przykładzie załączyłem implementacje operujące na bazie oraz na zserializowanej tablicy zapisanej w pliku. Całość oparta jest na AJAX. Znaczy to, iż klasa nie generuje kodu html drzewka. Zadaniem klasy jest zwracanie xml'a, który reprezentuje potrzebne dane. Drzewo budowane jest po stronie klienta po odebraniu niezbędnych danych. Drzewo nie jest budowane w całości, ale dobudowywane jest na żądanie, czyli np: rozwijamy gałaź X, wówczas leci żądanie do serwera (przy pomocy ajaxa oczywiście), które prosi o dzieci dla gałęzi X. Gdy te dzieci dostaniemy to są dobudowywane. Drzewo dostarcza standardowe akcje: usuwanie, edycja, dodawanie, checkbox, akcja po kliknięciu na gałąź. Każdy może sobie sam zdefiniować, jakich akcji chce używać. Można definiować akcje globalnie dla całego drzewa, ale można też dla każdej gałęzi definiować oddzielne akcje. Czyli np: mowimy, że dla całego drzewa będzie akcja usuwania, ale dla gałęzi X nie pozwalamy na tę akcję. Akcja checkbox może być przydatna np. do określania praw dla danych gałęzi. Jest możliwość zapamiętywania stanu drzewa w sesji, dzięki czemu po odświerzeniu strony, otrzymamy drzewo rozwinięte tak jak było przed odswierzeniem. Dodatkowo wprowadziłem oddzielny interfejs do zarządzania prawami dostępu do danych akcji, co znacznie ułatwia zarządzanie drzewem.
Narazie napiszę tylko tyle. Więcej na temat klasy możecie dowiedzieć się na forum php.pl. Klasa jest do pobrania tutaj.
Klasa nie jest i nie będzie już rozwijana. Gdy zaczynałem ją pisać, na rynku nie było zbyt wielu tego typu produktów. Teraz jest tego masa i nie ma sensu tworzyć kolejnego. Wszakże inne mają jedną wadą - nie mają pamietania stanu drzewka i po odświerzeniu strony drzewko nie jest tak rozwinięte jak było. U mnie jest.
Jeśli znajdziecie gdzieś w necie drzewko co pamięta stan rozwinięcia - dajcie mi znać.


