Często spotykam się z problemem integracji Oracle APEX lub części funkcjonalności (np. wykresów) z istniejącymi stronami WWW stworzonymi w bardzo różnych technologiach (PHP, ASP, CGI). Wstawienie na stronę WWW (np. forum, bloga, cms itp.) np. wykresu czy regionu stworzonego w APEX’e jest możliwe i bardzo efektywne. Przykładowe rezultaty jakie można uzyskać widzicie poniżej. Blog korzysta z silnika WordPress napisanego w PHP, ale poniższy wykres powstał z zapytania SQL do bazy danych w Oracle APEX
Podobnie jak poniższy raport interaktywny
Implementacja wymaga poświęcenia nieco uwagi, ale możliwości są ogromne, a efekty długo cieszą – więc warto.
Całość zrealizowana jest poprzez pływającą ramkę (iframe), wyświetlającą stronę APEX z regionem, który chcemy osadzić na stronie zewnętrznej. Strona APEX jest tak przerobiona, aby nie wymagała logowania, nie miała marginesów, a wymiar ramki powinien być zgodny z wymiarem regionu. Dodatkowo usuwamy obramowanie ramki, aby region nie był wizualnie oddzielony od reszty treści.
Aby ten efekt zrealizować tworzymy stronę APEX zawierającą interesujący nas region (wykres lub raport), oraz ustawiamy jego wymiar na np. 400px x 300px. Następnie w ustawieniach regionu wyłączamy jego szablon
Zostały jeszcze trzy kroki w przygotowaniu strony. Pierwszy to pozbycie się wszelkich elementów strony poza regionem. Najłatwiej uzyskać to poprzez zmianę szablonu strony na “Popup:
Drugim krokiem jest pozbycie się marginesów strony. Można to zrobić przez dodanie poniższego kodu do nagłówków strony:
<style> body { margin: 0px !important; padding: 0px !important; } </style>
Zostało jedynie wstawienie IFRAME na stronę:
<iframe style="overflow: hidden; width: 500px; height: 400px;" src="http://apex.oracle.com/pls/apex/f?p=15241:2:0:::::" frameborder="0" scrolling="no" width="500" height="400"></iframe>
i… różnie bywa. Wszystko zależy od wykorzystywanej wersji APEX’a. Jeżeli jest to APEX 4.0, wszystko powinno działać poprawnie. APEX 4.1 domyślnie zabezpiecza aplikacje przed możliwością ich osadzenia w ramce. Aby wyłączyć to zabezpieczenie musimy wklikać się w ustawienia aplikacji (Edit Application settings -> Security) i ustawić pole “Embed in Frames” na “Allow” Niestety wersja 4.1 posiada bug i nieprawidłowo współpracuje z IE – jest tu problem z ciasteczkami w ramkach IFRAME, który powoduje, że APEX i strona w której osadzamy region muszą być w tych samych domenach. Istnieje możliwość przeskoczenia tego problemu, np. poprzez ingerencję w konfiguracje serwera WWW, ale bug ten nie wpływa na strony w tych samych domenach i prawdopodobnie zostanie wkrótce poprawiony.
Po tych wszystkich krokach wreszcie możemy cieszyć się efektem, który aż zapiera dech w piersiach :).