Autor wpisu: piotrooo89, dodany: 30.01.2010 22:15, tagi: javascript, sql, jquery
W pierwszej części poradnika http://piotrooo.com/2010/01/kalendarz-google-w-jquery-cz-1/ pokazałem jak generować kalendarz, jak dodawać nowe zdarzenia i wyświetlać je w kalendarzu czas na pozostałą obsługę zdarzeń mianowicie zmiana rozmiaru zdarzenia (czyli zmiana czasu), edycja i usuwanie. Zapraszam do lektury.
1. Zmiana godzin zlecenia – czyli rozszerzamy i przenosimy zdarzenia
To zmian rozmiarów (czasów, aczkolwiek dla uproszczenia będę używał słów zmian rozmiarów) zdarzenia odpowiedzialna jest metoda eventResize. A do zmiany całych dni za pomocą Drag ‘n Drop odpowiedzialna jest funkcja eventDrop. Oczywiście do zmiany będą nam potrzebne dane które przechwycimy w pliku kalnedarz_do.php. Obsłużenie tych metod po strobie jQuery wygląda następująco:
- eventDrop : function(calEvent, $event) {
- $.ajax({
- type : "GET",
- url: "kalendarz_do.php?co=resize&id="+calEvent.id+"",
- data: ({start: new Date(calEvent.start)/1000, end: new Date(calEvent.end)/1000})
- });
- },
- eventResize : function(calEvent, $event) {
- $.ajax({
- type : "GET",
- url: "kalendarz_do.php?co=resize&id="+calEvent.id+"",
- data: ({start: new Date(calEvent.start)/1000, end: new Date(calEvent.end)/1000})
- });
I teraz obsługa tych zdarzeń po stronie serwera aby w naszej bazie coś się zmieniło. Jak pewnie zauważyliście przekazuje również ID tego zdarzenia aby można było jednoznacznie określić co ma być edytowane, plik kalendarz_do.php:
- if ($_GET['co']=='resize')
- {
- $baza->quick_sel("UPDATE kalendarz SET start=('1970-01-01 00:00'::timestamp + interval '{$_GET['start']}')::timestamp at time zone 'GMT',
- koniec=('1970-01-01 00:00'::timestamp + interval '{$_GET['end']}')::timestamp at time zone 'GMT'
- WHERE id={$_GET['id']}");
- }
I teraz po zmianie rozmiaru (czasu), przeciągnięciu i upuszczeniu na inny dzień możemy zaobserwować zmiany.
2. Edytowanie i usuwanie zdarzeń
Umiemy już dodać, wyświetlić, zmienić dane to teraz czas na edycję i usuwanie. Można powiedzieć że jest to najbardziej skomplikowana część naszego kalendarza. Aby zrealizować tą funkcjonalność należy obsłużyć metodę eventClick. Obsługa tej metody wygląda następująco:
Kanał ATOM
