Interfejs komunikacyjny z platformą Click4Mobile 2.0
Spis treści 1 Wstęp... 2 2 Architektura rozwiązania.... 2 3 Sposoby komunikacji.... 3 4 Struktura dokumentu xml... 3 4.1 Publisher... 3 4.2 Settings... 4 4.3 Categories... 5 4.4 Articles... 5 4.5 Galleries... 7 4.6 Videos... 9 4.7 Contact... 11 1
1 Wstęp 1.1 Cel Celem dokumentu jest przedstawienie sposobu komunikacji z platformą Click4Mobile 2.0 w celu zasilenia jej danymi przez wydawcę. Specyfikacja ma celu wyjaśnienie metod integracji oraz omówienie struktury protokołu komunikacyjnego opartego na plikach xml. 1.2 Załączniki Publisher docs.zip dokumentacja protokołu komunikacyjnego xml w postaci interaktywnej przeglądarki struktury elementów drzewa. Publisher.xsd dokument XML Schema, służący do weryfikacji poprawności otrzymywanego od wydawcy pliku xml. Publisher.xml - przykładowy plik xml. 2 Architektura rozwiązania. Platforma C4M jest zaawansowanym systemem dostarczającym możliwość konwersji standardowego serwisu internetowego wydawcy do wersji mobilnej przyjaznej dla urządzeń typu smartphone czy tablet. W celu dostarczenia przez platformę C4M mobilnej wersji strony należy udostępnić plik xml zgodny ze załączoną schemą w celu pobrania go przez narzędzie importu do bazy danych serwera stron mobilnych. Tak przygotowana architektura zapewnia możliwość stworzenia mobilnej wersji serwisu przy minimalnym nakładzie prac ze strony wydawcy serwisu. Architekturę przedstawia poniższa ilustracja. Rysunek 1 Architektura C4M 2
3 Sposoby komunikacji. Platforma C4m zapewnia dwa sposoby komunikacji tj. przyrostowy import danych oraz pełny import danych. Wybrany sposób importu danych wskazuje się w konfiguracji panelu wydawcy. 3.1 Import przyrostowy Zadaniem importu przyrostowego jest dostarczanie danych różnicowych w stosunku do wcześniejszych importów. Dane z poprzedniego importu zostają zachowane w serwisie a kolejny import może je aktualizować pod warunkiem zachowania identycznych identyfikatorów systemowych (pola id w dokumencie xml). 3.2 Import pełny Import pełny polega na jednorazowej migracji treści na podstawie zawartości pliku xml do serwera stron mobilnych. Wszelkie dane z wcześniejszych importów są usuwane. Częstotliwość importu wynosi raz na dobę i odbywa się w godzinach nocnych, gdzie ruch w serwisie jest możliwie najmniejszy. 4 Struktura dokumentu xml. 4.1 Publisher Element publisher stanowi podstawową strukturę i korzeń drzewa dokumentu xml. Struktura publisher zawiera elementy: Rysunek 2 Diagram struktury publisher Settings ustawienia specyficzne dla danego serwisu Categories drzewo definiujące kategorie, służące do grupowania treści Articles struktura przechowująca listę artykułów Galleries struktura przechowująca listę galerii zdjęć Videos struktura przechowującą listę stron typu video Contact informacje kontaktowe wydawcy wraz z odnośnikami społecznościowymi Struktury settigns, categories i articles są obowiązkowe i muszą wystąpić w pliku xml. Przykład struktury xml: 3
<publisher xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="publisher.xsd"> <settings> </settings> <articles> </articles> <galleries> </galleries> <videos> </videos> <contact> </contact> </publisher> 4.2 Settings Struktura settings przechowuje informacje o ustawieniach danego serwisu wydawcy. Poszczególne pola odpowiadają kolejno: Rysunek 3 Diagram struktury settings Domain Domena standardowego serwisu wydawcy Stats_code kod do zbierania statystyk (aktualnie niewykorzystywane) Title tytuł serwisu Logo_url odnośnik do logo serwisu Full_version_url odnośnik do wersji pełnej Terms_of_use_url odnośnik do regularminu 4
Informacje tekstowe odnośnie polityki prywatności i praw autorskich serwisu Przykład struktury settings w formacie xml: <settings> <domain><![cdata[http://example.com/]]></domain> <stats_code><![cdata[]]></stats_code> <title><![cdata[example mobile site]]></title> <logo_url><![cdata[http://placehold.it/100x50]]></logo_url> <full_version_url><![cdata[http://example.com/]]></full_version_url> <terms_of_use_url><![cdata[http://example.com/terms-ofuse]]></terms_of_use_url> <copyright><![cdata[copyright notice]]></copyright> </settings> 4.3 Categories Struktura categories stanowi kontener dla drzewa elementów typu categorytype. W serwisie musi być zdefiniowana przynajmniej jedna kategoria. Element categorytype zawiera argumenty: Rysunek 4 Diagram struktury categories Id identyfikator systemowy kategorii Name nazwa kategorii Weight waga (pole pomocne przy sortowaniu innym niż alfabetyczne) Element może zawierać w sobie struktury zagnieżdżone w celu budowania drzewa zależności kategorii. Przykład struktury categories w formacie xml : <category id="1" name="example" /> <category id="2" name="awesome" /> <category id="3" name="cool" /> 4.4 Articles Struktura articles przechowuje informacje o liście dostępnych w serwisie artykułów. 5
Rysunek 5 Diagram struktury articles (kontenera artykułów) Na strukturę articles składa się lista elementów typu articletype, który pododnie jak galleriestype i videotype dziedziczą pola ze struktury nodetype. NodeType jest elementem bazowych dla wszystkich typów treści. Elementy struktury nodetype: Rysunek 6 Diagram struktury article Id = identyfikator systemowy (liczby naturalne) Published pole daty publikacji w postaci unix timestamp Slider wartość ligiczna informująca czy treść ma się znaleźć w sliderze na głównej stronie 6
Weight pole wagi w postaci liczb całkowitych służy określaniu kolejności elementów (domyślnie elementy sortowane są po dacie publikacji najnowsze elementy na górze listy) Title pole tytułu treści (maksymalna długość to 250znaków) Author pole informące o autorze artykułu (maksymalna długość to Lead pole podsumowania treści (tzw. zajawka) Content właściwa treść artykułu url adres do artykułu w standardowym serwisie images struktura przechowująca informacje o obrazkach categories struktura referencyjna kategorii treści (zawiera odniesienia do kategorii zdefiniowanych za pomocą struktury categories w głównym drzewie dokumentu xml) connactions struktura określająca powiązania między równymi typami treści (np. odniesienia do powiązanych galerii czy video). Przykładowa struktura xml dla element article: <articles> <article id="1" published="1381099100"> <title><![cdata[example article]]></title> <author><![cdata[author]]></author> <lead><![cdata[it is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout]]></lead> <content><![cdata[ <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus molestie leo vitae neque tincidunt, sed pharetra ante hendrerit. Sed ultrices dignissim enim ac congue. Phasellus congue urna sit amet urna facilisis posuere. Fusce porttitor porttitor erat id lacinia. Aliquam sed risus leo. Sed leo est, volutpat venenatis augue ut, molestie hendrerit metus. Vivamus eu tristique odio, luctus adipiscing ante. </p> ]]></content> <url><![cdata[http://example.com/articles/1]]></url> <images> <image published="1391092100"> <full><![cdata[http://placehold.it/640x480]]></full> <thumb><![cdata[http://placehold.it/100x100]]></thumb> <name><![cdata[plachold image]]></name> <description><![cdata[this is a sample image from placehold.it]]></description> <source><![cdata[example.com]]></source> </image> </images> <category id="1" /> </article> 4.5 Galleries Struktura galleries przechowuje informacje o galeriach zdjęć zdefiniowanych dla danego serwisu. Jej pola są analogiczne do struktury articles. 7
Rysunek 7 Diagram struktury galleries Rysunek 8 Diagram struktury gallery Przykładowa struktura xml: <galleries> <gallery id="1" published="1401099100"> <title><![cdata[example gallery]]></title> <author><![cdata[gallery author]]></author> <lead><![cdata[pellentesque viverra, ante et ullamcorper imperdiet, lacus est varius ante, vitae commodo libero magna non tortor.]]></lead> <content><![cdata[<p>lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque viverra, ante et ullamcorper imperdiet, lacus est varius ante, vitae 8
commodo libero magna non tortor. Quisque malesuada felis felis, et ultrices massa convallis vel. In scelerisque urna non quam luctus, a dictum sem rhoncus. Fusce luctus eget lacus id posuere. Aliquam dapibus sit amet odio at pretium.</p>]]></content> <url><![cdata[http://example.com/galleries/1]]></url> <images> <image published="1391092100"> <full><![cdata[http://placehold.it/640x480]]></full> <thumb><![cdata[http://placehold.it/100x100]]></thumb> <name><![cdata[plachold image #1]]></name> <description><![cdata[this is a sample image from placehold.it]]></description> <source><![cdata[example.com]]></source> </image> <image published="1391092200"> <full><![cdata[http://placehold.it/640x480]]></full> <thumb><![cdata[http://placehold.it/100x100]]></thumb> <name><![cdata[plachold image #2]]></name> <description><![cdata[this is a sample image from placehold.it]]></description> <source><![cdata[example.com]]></source> </image> <image published="1391092300"> <full><![cdata[http://placehold.it/640x480]]></full> <thumb><![cdata[http://placehold.it/100x100]]></thumb> <name><![cdata[plachold image #3]]></name> <description><![cdata[this is a sample image from placehold.it]]></description> <source><![cdata[example.com]]></source> </image> </images> <category id="1" /> <category id="2" /> <category id="3" /> </gallery> </galleries> 4.6 Videos Struktura videos przechowuje informacje o liście dostępnych w serwisie elementów video. Na elementy video składają się osadzone obiekty serwisu youtube, vimeo oraz pliki video wg standardu html5 obsługiwane przez znacznik <video/>. Informacje na temat wsarcia przeglądarek dla tagu video można uzyskać pod adresem: http://www.w3schools.com/html/html5_video.asp. Rysunek 9 Diagram struktury videos 9
Rysunek 10 Diagram struktury video Przykładowa struktura xml: <videos> <video id="1" published="1401099100"> <title><![cdata[example video #1]]></title> <author><![cdata[video Author 1]]></author> <lead><![cdata[it is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout]]></lead> <content><![cdata[ <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus molestie leo vitae neque tincidunt, sed pharetra ante hendrerit. Sed ultrices dignissim enim ac congue. Phasellus congue urna sit amet urna facilisis posuere. Fusce porttitor porttitor erat id lacinia. Aliquam sed risus leo. Sed leo est, volutpat venenatis augue ut, molestie hendrerit metus. Vivamus eu tristique odio, luctus adipiscing ante. </p> ]]></content> <url><![cdata[https://www.youtube.com/watch?v=jebj9itytje]]></url> <category id="3" /> <service id="jebj9itytje">youtube</service> </video> 10
<video id="2" published="1401099100"> <title><![cdata[example video #2]]></title> <author><![cdata[video Author 2]]></author> <lead><![cdata[it is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout]]></lead> <content><![cdata[ <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus molestie leo vitae neque tincidunt, sed pharetra ante hendrerit. Sed ultrices dignissim enim ac congue. Phasellus congue urna sit amet urna facilisis posuere. Fusce porttitor porttitor erat id lacinia. Aliquam sed risus leo. Sed leo est, volutpat venenatis augue ut, molestie hendrerit metus. Vivamus eu tristique odio, luctus adipiscing ante. </p> ]]></content> <url><![cdata[http://vimeo.com/10679287]]></url> <category id="2" /> <service id="10679287">vimeo</service> </video> <video id="3" published="1401099100"> <title><![cdata[example video #3]]></title> <author><![cdata[video Author 3]]></author> <lead><![cdata[it is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout]]></lead> <content><![cdata[ <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus molestie leo vitae neque tincidunt, sed pharetra ante hendrerit. Sed ultrices dignissim enim ac congue. Phasellus congue urna sit amet urna facilisis posuere. Fusce porttitor porttitor erat id lacinia. Aliquam sed risus leo. Sed leo est, volutpat venenatis augue ut, molestie hendrerit metus. Vivamus eu tristique odio, luctus adipiscing ante. </p> ]]></content> <url><![cdata[http://techslides.com/demos/sample-videos/small.mp4]]></url> <category id="1" /> <service>custom</service> </video> </videos> 4.7 Contact Struktura contact przechowuje informacje kontaktowe wydawcy, które będą umieszczone na stronie. Pozwalają one odwiedzającym na zdobycie informacji o możliwościach kontaktu z wydawcą oraz zapoznanie się odnośnikami do mediów społecznościowych wydawcy. 11
Rysunek 11 Diagram struktury contact Na strukturę contacttype składa się struktura addresstype i sociallinkstype. Przykładowa struktura xml: <contact> <address> <street>street</street> <city>city</city> <post_code>12-345</post_code> <phone>123 456 689</phone> <email>mobile@example.com</email> <website>http://www.example.com/</website> </address> <sociallinks> <link> <url>http://facebook.com</url> <type>facebook</type> </link> <link> <url>http://twitter.com</url> <type>twitter</type> </link> <link> <url>http://linkedin.com</url> <type>linkedin</type> </link> </sociallinks> <extrainfo>additional contact information</extrainfo> </contact> 12