Uruchamianie galerii
- Funkcja VG_start
- Parametr parent
- Parametr config
- Parametr lang
- Parametr sld_num
- Parametr cfg_back
- Parametr vg_data_name
- Parametr is_root
- Parametr directory
- Funkcja VG_start() ^
W przykładach na stronie
Ładowanie galerii widzimy, że do funkcji
VG_start() są przekazywane dwa parametry. Te dwa (pierwsze) parametry są obowiązkowe, ale możemy przekazać ich więcej. Formalnie funkcja uruchamiająca galerię ma następującą składnię:
(1)^var VG=new VG_start(parent, config, lang=0, sld_num=0, cfg_back=null, vg_data_name="vg_data", is_root=1, directory="");
VG jest zmienną (o dowolnej nazwie), która reprezentuje obiekt typu
VG_start zwracany przez funkcję uruchamiającą galerię. Obiekt
VG_start ma następujące składowe:
|
error | – | kod błędu. Pole error, może przyjmować następujące wartości:
0 – | inicjalizacja rozpoczęta, | 1 – | nie znaleziono pliku vg_fs.js. Plik ten jest odpowiedzialny za obsługę wyświetlania galerii w trybie pełnego ekranu i jest standardowo ładowany z katalogu vg_data. Jeśli chcemy zmienić nazwę tego katalogu, to musimy nową nazwę podać w parametrze vg_data_name, | 2 – | parent ma już przypisaną galerię i próbowano temu samemu parentowi przypisać ponownie inną galerię, | 3 – | nie znaleziono pliku config, | 4 – | nie znaleziono pliku z listą wyświetlanych slajdów, | 5 – | nie znaleziono pliku z odnośnikami, | 6 – | nie znaleziono pliku z opisami slajdów, | 7 – | nie znaleziono pliku vg.css, | 8 – | obiekt parent nie istnieje, | 9 – | nie znaleziono pliku z podpowiedziami, | 10 – | uruchomiono galerię bez błędów. | Uwaga, jeśli w plikach wymienionych wyżej, które generują błędy: 3, 4, 5, 6 i 9 wystąpi błąd składni, to taki plik nie zostanie załadowany i galeria wygeneruje błąd braku pliku. W takiej sytuacji należy sprawdzić składnię w pliku (brakujące lub nadmiarowe przecinki, cudzysłowy, itp.). |
|
|
error_file | – | nazwa pliku, który wywołał błąd. Informacje o błędach są również wysyłane do konsoli JavaScript. |
|
num_back | – | funkcja zwrotna zwracająca informacje numeryczne. Funkcja przyjmuje dwa parametry. Parametr pierwszy jest kontekstem wywołania. Możliwe konteksty to:
0 – | parametr drugi zawiera informację o błędach, | 1 – | parametr drugi zawiera numer wyświetlanego slajdu. Jeśli ta wartość jest równa -1, to znaczy, że rozpoczęła się zmiana slajdu i numer slajdu jest nieokreślony, | 2 – | parametr drugi zawiera kod akcji wykonanej przez użytkownika. Możliwe akcje:
0 – | wykonano funkcję stop, | 1 – | wykonano funkcję start, | 2 – | wybrano poprzedni slajd, | 3 – | wybrano następny slajd, | 4 – | wybrano pierwszy slajd za pomocą klawisza Home, | 5 – | wybrano ostatni slajd za pomocą klawisza End, | 6 – | użytkownik wszedł do trybu pełnego ekranu, | 7 – | użytkownik wyszedł z trybu pełnego ekranu, | 8 – | użytkownik włączył odtwarzanie dźwięku, | 9 – | użytkownik wyłączył odtwarzanie dźwięku, | 10 – | użytkownik otworzył panel z miniaturami, | 11 – | użytkownik zamknął panel z miniaturami, | 12 – | użytkownik kliknął slajd (w centralnym polu galerii). Jeśli funkcja num_back zwróci true, to domyślna akcja nie zostanie wykonana, | 13 – | użytkownik włączył odtwarzanie filmu, | 14 – | użytkownik zatrzymał odtwarzanie filmu, | 15 – | film dobiegł końca. |
|
|
|
txt_back | – | funkcja zwrotna zwracająca informacje tekstowe po wystąpieniu błędu. Funkcja przyjmuje jeden parametr. |
|
VG | – | wewnętrzny obiekt galerii tworzony przez konstruktor VG_start(). Ten obiekt udostępnia następujące funkcje składowe:
_del() – | usuwa galerię przypisaną danemu parentowi, | _first() – | wyświetla pierwszy slajd, | _fs(btn=0*) – | włącza lub wyłącza tryb pełnego ekranu, | _getN() – | zwraca liczbę slajdów, | _getSelected() – | zwraca numer wyświetlanego slajdu, | _last() – | wyświetla ostatni slajd, | _next() – | wyświetla następny slajd i zwraca numer slajdu, który będzie wyświetlany, | _play(btn=0*) – | uruchamia automatyczne odtwarzanie slajdów, | _playVideo() – | uruchamia odtwarzanie video, które jest aktualnym slajdem, | _prev() – | wyświetla poprzedni slajd i zwraca numer slajdu, który będzie wyświetlany, | _stop(btn=0*) – | zatrzymuje automatyczne odtwarzanie slajdów, | _stopAll() – | zatrzymuje wszystkie zegary galerii oraz wstrzymuje odtwarzanie dźwięków i odtwarzanie video. Zaleca się wykonanie tej funkcji przed usunięciem węzła zawierającego galerię, aby zapobiec ewentualnemu odtwarzaniu dźwięków mimo braku otwartej galerii, | _select(n) – | wybiera slajd o numerze n, | _setBtnFS(o) – | przypisuje obiekt do funkcji włącz/wyłącz pełny ekran, | _setBtnPlay(o) – | przypisuje obiekt do funkcji włącz/wyłącz automatyczną zmianę slajdów, | _setBtnSnd(o) – | przypisuje obiekt do funkcji włącz/wyłącz odtwarzanie dźwięku, | _snd(btn=0*) – | włącza lub wyłącza odtwarzanie dźwięku, | _sndOff(btn=0*) – | wyłącza odtwarzanie dźwięku, | _sndOn(btn=0*) – | włącza odtwarzanie dźwięku, | _sndVideo() – | włącza lub wyłącza odtwarzanie dźwięku w odtwarzanym video, | _showAll() – | wyświetla panel z miniaturami, | _stopVideo() – | zatrzymuje odtwarzanie video, które jest aktualnym slajdem, | _waitForSlide(n, callback_fnc) – | czeka na inicjalizację slajdu o numerze n. Jeśli slajd jest gotowy (np. video zostało załadowane), to wywoływana jest funkcja callback_fnc, która przyjmuje jeden parametr będący obiektem typu VG. | * – parametr btn jest opcjonalny. Jeżeli przekażemy ten parametr, to galeria zmieni ikonę przypisaną obiektowi przekazanemu tym parametrem (patrz Ikony w galerii). |
|
W związku z tym, że funkcja
VG_start() zwraca obiekt, który zawiera składową
error mogłoby się wydawać, że można byłoby wykonać taki kod:
(2)^
var VG=new VG_start(parent, config);
alert(VG.error);
by dowiedzieć się, czy galeria została prawidłowo uruchomiona. To rozwiązanie jednak nie zadziała, dlatego że funkcja uruchamiająca galerię uaktywni pewne procesy, po czym natychmiast powróci z kodem 0 (inicjalizacja rozpoczęta). Natomiast zainicjowany proces (jak np. załadowanie pliku konfiguracyjnego) może zakończyć się niepowodzeniem. Wtedy zostanie wywołana funkcja
num_back lub
txt_back i dopiero wtedy dowiemy się, jaka jest przyczyna ewentualnego niepowodzenia.
Zobaczmy jak to działa na przykładach. Poniżej widzimy prostokąt (prostokąt ten po uruchomieniu przykładu będzie automatycznie przesuwany w obszar widoczny na ekranie):
Prostokąt ten został zdefiniowany następującym kodem html:
(3)^<div id="gal_0" style="background-color:#AAAAAA; width:100%; height:300px"></div>
Do tego prostokąta będziemy podpinać kolejne przykłady. Nasz kod uruchamiający galerię i wykorzystujący funkcję
num_back (z
kontekstem 0) może wyglądać np. tak:
(4)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==0){
alert('Kontekst: '+c+', wartość: '+v)
}
};
Plik
atlas_0.js jest tym samym plikiem co
atlas.js (przygotowanym wg poradnika
Jak zacząć), ale ma wyłączoną czołówkę.
Kliknij kod
(4), aby go wykonać (jeśli na stronie są prezentowane kody, które można uruchomić, to uruchomisz je klikając w numer kodu w nawiasie po prawej stronie).
Jeśli wszystko zadziała – zostanie wyświetlony komunikat
Kontekst: 0, wartość: 10. To oznacza, że w podsystemie błędów (kontekst 0) odnotowano poprawne załadowanie wszystkich plików i galeria za chwilę rozpocznie pracę (kod 10).
Kliknij ponownie kod
(4). Powinieneś zobaczyć komunikat
Kontekst: 0, wartość: 2, który oznacza, że podsystem monitorowania błędów (kontekst 0) wywołał błąd numer 2, który oznacza, że dany
parent (w tym wypadku
div z id=
"gal_0") ma już przypiętą galerię.
Czy możemy to jakoś wykorzystać. Zobaczmy na ten kod:
(5)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==0 && v==2){
this.VG._del();
}
};
Kliknij kod
(5), aby wykonać powyższy kod. Jeśli galeria jest uruchomiona, to pierwsze kliknięcie spowoduje wywołanie komunikatu
Kontekst: 0, wartość: 2, a następnie nastąpi przypisanie nowej funkcji
num_back=function(c, v){if(c==0 && v==2) this.VG._del()}. Ta funkcja sprawdza, czy w kontekście 0, jest błąd 2 (który oznacza, że galeria jest załadowana) i jeśli tak, to wykonuje funkcję
_del(), która usuwa załadowaną galerię. Od tej chwili możesz klikać odnośnik do kodu 5 i on będzie naprzemiennie ładował galerię i ją usuwał.
Ponadto obiekt
parent po prawidłowym zainicjalizowaniu galerii przechowuje wskaźnik na obiekt VG. Można więc wykonać taki kod:
(6)^
function del(){
if(document.getElementById('gal_0').VG){
document.getElementById('gal_0').VG._del();
}
};
aby odpiąć galerię od obiektu
parent. Ta funkcjonalność przyda się nam do dalszych testów i przed każdym kolejnym wykonaniem kodu uruchamiającego galerię, funkcja
_del() będzie wykonywana.
Zobaczmy teraz jak wykorzystać
kontekst 1. Spójrzmy na ten kod:
(7)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==1){
alert(v);
}
};
Kliknij
(7), aby wykonać powyższy kod. Po uruchomieniu galerii widzimy pojawiające się komunikaty z numerem kolejnych slajdów. Możemy więc kontekst nr 1 wykorzystać do zmiany zawartości strony w zależności od tego, który slajd jest wybrany. Dodajmy kolejnego
div-a:
zdefiniowanego takim kodem:
(8)^<div style="border:1px solid #AAAAAA; width:100%; height:50px">
<div id="txt_0" style="width:100%; height:100%; transition:opacity 0.5s"></div>
</div>
i przygotujmy taki kod:
(9)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==1){
document.getElementById('txt_0').innerHTML='Opis slajdu nr: '+v;
}
};
Kliknij
(9), aby wykonać powyższy kod. Podsumowując –
kontekst nr 1 zwraca poprzez funkcję
num_back numer aktualnie wyświetlanego slajdu. Wartość
-1 pojawiająca się między kolejnymi slajdami oznacza, że rozpoczęła się zmiana slajdów. Wartość tę można wykorzystać do obsługi płynnej zmiany opisów, jak to pokazano w poniższym przykładzie:
(10)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==1){
if(v==-1){
document.getElementById('txt_0').style.opacity=0;
}else{
document.getElementById('txt_0').style.opacity=1;
document.getElementById('txt_0').innerHTML='Opis slajdu nr: '+v;
}
}
};
Kontekst nr 2 informuje nas o akcjach użytkownika zgodnie z tym
zestawieniem. Sprawdźmy to na poniższym przykładzie:
(11)^
(new VG_start(document.getElementById('gal_0'), 'atlas_0.js')).num_back=
function(c, v){
if(c==2){
if(v==0){
alert('Użytkownik kliknął Stop.');
}else if(v==1){
alert('Użytkownik kliknął Start.');
}else if(v==12){
return confirm('Użytkownik kliknął slajd nr: '+this.VG._getSelected()+'. Odpowiedź Tak (Ok) oznacza, że obsłużyłeś tę funkcję samodzielnie i akcja domyślna nie zostanie wykonana.');
}else{
alert('Użytkownik wykonał akcję nr: '+v);
}
}
};
Kliknij
(11), aby wykonać powyższy kod, a następnie zatrzymaj pokaz slajdów. Odpowiedni komunikat poinformuje Cię o akcji, którą wykonałeś. Kliknij w slajd w galerii. Zwracany kod ma wartość 12. Funkcja
_getSelect() zwraca numer aktualnie wybranego slajdu. Jeśli w odpowiedzi na ten kod zwrócisz
true (czyli w naszym przykładzie wybierzesz odpowiedź Ok), to galeria uzna, że obsłużyłeś to zdarzenie samodzielnie i domyślna akcja nie zostanie wykonana. W ten sposób możesz w zupełnie dowolny sposób obsłużyć kliknięcie w slajd.
Podsumowując –
kontekst nr 2 poprzez funkcję
num_back zwraca
kod wykonanej akcji. Niektóre akcje mogą zwracać kilka kodów. Jeśli np. wybrana jest opcja
zatrzymania pokazu slajdów po wybraniu innego slajdu i klikniesz strzałkę w prawo, to otrzymasz kody:
wybrano funkcję stop i
wybrano następny slajd. Niektóre akcje mogą sprawdzać wartość zwracaną przez funkcję
num_back i w zależności od tej wartości wykonywać (lub nie) akcję domyślną.
Wykorzystując funkcję
num_back możemy w pełni zintegrować galerię ze swoją stroną i jedynie od Twojej inwencji zależy jak wykorzystasz te możliwości. Ze strony
Do pobrania możesz pobrać dwa przykłady galerii (
Owoce i
Obiekty) wykorzystujących omówione wyżej rozwiązania. Funkcja
_waitForSlide
została wykorzystana
w tym przykładzie. Otwórz go i zobacz kod źródłowy tej strony.
- Parametr parent ^
Jak już wspomnieliśmy, pierwszym parametrem funkcji
VG_start() jest obiekt
parent, do którego jest przypinana galeria. W najprostszym rozwiązaniu, obiektem tym jest zwykły
div. Jeśli wykonasz kod
(4), ale przez pomyłkę na stronie nie będzie obiektu o identyfikatorze
gal_0, to funkcja
num_back zwróci
kod 8 w kontekście 0 i oczywiście galeria nie zostanie uruchomiona (
przykład).
Ponieważ galeria jest w pełni responsywna i przyjmuje zawsze wymiary obiektu wskazanego jako
parent, częstą potrzebą jest takie jego zdefiniowanie, aby przy zmianie wymiarów zachowywał się jak zdjęcie, tzn. żeby zmieniając szerokość – wysokość zmieniała się automatycznie zachowując proporcje.
Możemy to zrobić w następujący sposób:
(12)^<div style="position:relative; line-height:0">
<img alt="" style="width:100%"
src="data:image/jpeg;
base64,/9j/4AAQSkZJRgABA
QEASABIAAD//gATQ3JlYXRl
ZCB3aXRoIEdJTVD/2wBDAP
/////////////////////////////////
/////////////////////////////////
/////////////////////2wBDAf//
/////////////////////////////////
/////////////////////////////////
/////////////////wAARCAAjA
GQDASIAAhEBAxEB/8QAF
QABAQAAAAAAAAAAAAAA
AAAAAAP/xAAUEAEAAAAA
AAAAAAAAAAAAAAAA/8QA
FAEBAAAAAAAAAAAAAAAA
AAAAAP/EABQRAQAAAAAA
AAAAAAAAAAAAAAD/2gAM
AwEAAhEDEQA/AJgAAAAA
AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA/9k=">
<div id="gal_img" style="position:absolute; top:0; width:100%; height:100%"></div>
</div>
W tym przykładzie galerię dopniemy do
div-a o id równym
gal_img. Ten
div jest z kolei dopięty do
div-a nadrzędnego, który ma również przypięte zdjęcie o proporcjach 100:35. Całość działa tak, że przy zmianach wymiarów okna przeglądarki zdjęcie się przeskalowuje proporcjonalnie trzymając współczynnik proporcji 100:35, div nadrzędny otacza zdjęcie, a div z id="gal_img" dopasowuje się do
div-a otaczającego zdjęcie. W konsekwencji galeria trzyma proporcje 100:35 przy zmianach wymiarów okna przeglądarki. Oczywiście zmieniając wymiary podpiętego zdjęcia możemy ustalić dowolne proporcje
div-a trzymającego galerię.
(13)^
new VG_start(document.getElementById('gal_img'), 'atlas_0.js');
Kliknij kod
(13), aby uruchomić ten przykład, a następnie zmieniaj wymiary okna i zaobserwuj zachowanie galerii.
- Parametr config ^
Parametr
config jest plikiem konfigurującym galerię. Szczegółowy opis budowy i parametrów zawartych w tym pliku znajduje się na stronie
Plik konfiguracyjny.
- Parametr lang ^
Parametr
lang ustala język interfejsu galerii. W tej chwili dostępne są dwa języki:
0 – | język polski, |
1 – | język angielski. |
(14)^
new VG_start(document.getElementById('gal_0'), 'atlas_0.js', 1);
Kliknij kod
(14), aby uruchomić galerię z angielskim językiem interfejsu.
- Parametr sld_num ^
Parametr
sld_num ustala, od którego slajdu rozpocznie się prezentacja. Jeśli parametr nie zostanie wyszczególniony, to prezentacja rozpocznie się od slajdu pierwszego (czyli o numerze 0), jeśli
sld_num będzie liczbą większą od zera, to prezentacja rozpocznie się od slajdu o tym numerze, jeśli natomiast
sld_num będzie równe -1, to prezentacja rozpocznie się od losowo wybranego slajdu.
(15)^
new VG_start(document.getElementById('gal_0'), 'atlas_0.js', 0, -1);
Klikaj w kod
(15) i zwróć uwagę, że za każdym razem prezentacja rozpoczyna się od losowo wybranego slajdu.
- Parametr cfg_back ^
Parametr
cfg_back jest funkcją wywoływaną zwrotnie bezpośrednio po załadowaniu pliku
config. Funkcja
cfg_back przyjmuje jeden parametr i jest nim funkcja zapisana w pliku konfiguracyjnym. Dzięki tej funkcji możemy zmieniać dynamicznie wszystkie parametry konfiguracyjne. Spójrzmy na kod (16):
(16)^
function cfg_back1(config){
config.my_trans_type=1;
config.my_show_animate=0;
config.my_show_time=1000;
}
function cfg_back2(config){
config.my_trans_type=2;
config.my_show_animate=0;
config.my_show_time=1000;
}
Widzimy w nim dwie funkcje
cfg_back.
W jednej z nich mamy ustawiony sposób zmiany slajdów na
Przesuwanie, a w drugiej na
Najazd/Odjazd. W obu wyłączyliśmy też animację i skróciliśmy czas wyświetlania pojedynczego slajdu do 1 sekundy. W ten sposób z jednego pliku konfiguracyjnego możemy uruchamiać różne galerie różniące się niektórymi parametrami.
(17)^
new VG_start(document.getElementById('gal_0'), 'atlas_0.js', 0, -1, cfg_back1);
(18)^
new VG_start(document.getElementById('gal_0'), 'atlas_0.js', 0, -1, cfg_back2);
Kliknij kod
(17), a potem
(18) i zwróć uwagę na różnice.
- Parametr vg_data_name ^
Wszystkie pliki potrzebne do pracy galerii (np. plik
vg_fs.js, odpowiedzialny za obsługę pracy galerii na pełnym ekranie, plik
vg.css zawierający style css obsługujące galerię, itd.) są przechowywane domyślnie w katalogu o nazwie
vg_data.
Gdyby jednak użytkownik z jakichś powodów chciał umieścić wspomniane wcześniej pliki w innym katalogu (np. chciałby uruchamiać na jednym serwerze kilka galerii z zupełnie innymi stylami), to może uruchamiając galerię w tym parametrze podać nazwę katalogu, z którego galeria załaduje te pliki.
Ponieważ jest to nazwa katalogu, więc teoretycznie można tu podać kompletną ścieżkę (tzn. nazwę zawierającą znaki
/). Jednak nie jest to zalecany sposób pracy. Aby zmienić cały katalog, z którego galeria pobiera wszystkie dane można wyszczególnić go w parametrze
directory.
- Parametr is_root ^
Parametr
is_root jest domyślnie ustawiony na 1 i takie ustawienie powoduje, że każda ścieżka używana przez galerię jest poprzedzana znakiem
/ w konsekwencji czego, ścieżki są wyszukiwane względem katalogu domowego serwisu.
Przygotujmy taki kod:
(19)^
(new VG_start(document.getElementById('gal_0'), 'atas_0.js',
0, 0, null, null, 1)).txt_back=function(e){
alert(e)
});
W tym przykładzie kolejne parametry oznaczają:
- document.getElementById('gal_0') – rodzica galerii,
- atas_0.js – plik konfiguracyjny galerii, który został celowo wpisany z błędem (atas.js zamiast atlas.js),
- 0 – polski język interfejsu,
- 0 – pierwszym slajdem ma być slajd nr 0,
- null – brak funkcji wywoływanej zwrotnie,
- null – domyślna nazwa katalogu z danymi (vg_data),
- 1 – parametr is_root ustawiony na 1.
Uruchom kod
(19). Ponieważ w galerii jest błąd, funkcja
txt_back wyświetli komunikat, w którym zobaczymy, że plik
https://vg.3n.com.pl/atas_0.js nie został odnaleziony. Plik ten był szukany w katalogu głównym serwisu.
Teraz uruchom poniższy kod
(20).
(20)^
(new VG_start(document.getElementById('gal_0'), 'atas_0.js',
0, 0, null, null, 0)).txt_back=function(e){
alert(e)
});
W tym kodzie parametr
is_root jest ustawiony na 0. W tym wypadku galeria również nie znajdzie pliku
atas.js, ale w komunikacie zobaczymy informację o braku pliku
https://vg.3n.com.pl/topic/vg/starting-the-gallery/atas_0.js, co oznacza, że plik był szukany względem tej ścieżki, która jest w adresie url. Ma to szczególne znaczenia, gdy nasz serwis obsługuje tzw. „przyjazne linki”. Wtedy rzeczywista ścieżka, w której wykonuje się skrypt jest zazwyczaj inna niż ta, która jest podana w adresie. I w tej sytuacji parametr
root=1 rozwiązuje ten problem.
- Parametr directory ^
Parametr
directory pozwala przesunąć wszystkie pliki związane z galerią do innego katalogu bez konieczności dokonywania zmian wewnątrz tych plików.
(21)^
new VG_start(document.getElementById('gal_0'), 'atlas.js', 0, 0, null, null, 1, 'vg/atlas/');
Kod
(21) uruchamia naszą standardową galerię
atlas.js, ale nie z katalogu głównego, a z katalogu 'vg/atlas'.