Zend_ProgressBar_Adapter_JsPush Zend_ProgressBar_Adapter_JsPush to adapter pozwalający na aktualizację paska postępu w przeglądarce poprzez JavaScript Push. To oznacza, że nie jest potrzebne nowe połączenie na potrzeby przesyłu danych o postępie operacji. Proces pracujący po stronie serwera komunikuje się bezpośrednio z przeglądarką użytkownika. Opcje adaptera można ustawiać za pomocą metod set* albo przez podanie tablicy asocjacyjnej lub obiektu Zend_Config w pierwszym parametrze konstruktora. Dostępne opcje to: updateMethodName: Metoda JavaScript, która zostanie wywołana przy każdej aktualizacji paska postępu. Domyślnie jest to Zend_ProgressBar_Update. finishMethodName: Metoda JavaScript, która zostanie wywołana po zakończeniu prowadzonej operacji. Domyślna wartość to NULL, co oznacza brak reakcji. Użycie tego adaptera jest dość proste. Na początku należy utworzyć pasek postępu w przeglądarce za pomocą poleceń JavaScript lub HTML. Następnie należy zdefiniować metodę JavaScript wywoływaną przy aktualizacji oraz (opcjonalnie) po skończeniu działania. Obie powinny przyjmować pojedynczy argument - obiekt JSON. Aby otworzyć połączenie należy wywołać długo trwającą akcję w ukrytym obiekcie iframe lub object. Podczas wykonywania tego procesu przy każdej aktualizacji adapter będzie wywoływał odpowiednią metodę przekazując do niej obiekt JSON o następujących parametrach: current: Obecna wartość absolutna max: Maksymalna wartość absolutna percent: Obliczony procent postępu timeTaken: Czas trwania procesu (do obecnej chwili) timeRemaining: Oszacowanie czasu pozostałego do końca text: Opcjonalna wiadomość dotycząca stanu postępu Podstawowy przykład kodu po stronie klienta Ten przykład ilustruje prosty kod HTML, CSS oraz JavaScript do użytku z adapterem JsPush
]]>
Powyższy kod tworzy prosty pojemnik z czarną granicą oraz blok wskazujący zaawansowanie procesu. Należy pamiętać by nie ukrywać elementów iframe lub object poprzez display: none; ponieważ w takiej sytuacji niektóre przeglądarki jak Safari 2 w ogóle nie pobiorą tych elementów. Zamiast własnoręcznie tworzyć pasek postępu, można skorzystać z jednej z wielu dostępnych bibliotek JavaScript, takich jak Dojo czy jQuery. Np.: Dojo: jQuery: MooTools: Prototype:
Odstęp czasowy pomiędzy aktualizacjami Należy upewnić się, że nie jest tworzona zbyt duża ilość aktualizacji. Każda z nich powinna przesyłać dane o wielkości co najmniej 1kB. Dla przeglądarki Safari jest to niezbędny warunek do wykonania polecenia wywołania funkcji. Internet Explorer ma podobne ograniczenie - w jego przypadku jest to 256 Bajtów.