MASARYKOVA UNIVERZITA
Fakulta informatiky
DIPLOMOVÁ PRÁCE
Platformy pro vývoj sociálního software
Autor práce: Bc. Jan Havelka
Vedoucí práce: RNDr. Tomáš Obšívač
Brno 2012
Prohlášení a poděkování
Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný
zdroj.
Zároveň bych na tomto místě rád poděkoval RNDr. Tomáši Obšívači za vedení
mé diplomové práce, jeho připomínky a možnost na dané téma práci zpracovávat.
V Brně dne 28. května 2012
....................................
Jan Havelka
Shrnutí
Tato diplomová práce se zabývá platformami pro vývoj sociálního software.
Skládá se ze dvou částí: praktické a teoretické. Náplní praktické části bylo rozšíření
stávající webové prezentace křesťanské studentské organizace INRI road o nástroje
podporující komunitu uživatelů a její budování. Web byl také propojen pomocí několika
pluginů se sociálními sítěmi Facebook a Google+.
V teoretické části byl představen pojem sociální software a byly popsány a porovnány dostupné nekomerční webové platformy pro jeho vývoj. Jedním z vhodných
řešení je i redakční systém Drupal, kterému byl věnován větší prostor, a byly popsány
jeho nejčastěji využívané sociálně zaměřené moduly. Představeny byly také použitelné
nástroje třetích stran, zejména sociální sítě Facebook.
Tato práce může pomoci především webovým administrátorům, kteří uvažují
o vytvoření sociálně zaměřeného webu nebo o jeho doplnění takovými nástroji.
Klíčová slova
Web 2.0, sociální software, budování komunity, redakční systémy, Drupal,
Facebook, Graph API, sociální pluginy
Obsah
1 Úvod............................................................................................................................. 1
2 Sociální software ........................................................................................................ 2
2.1 Pojem Web 2.0 ...................................................................................................... 2
2.2 Sociální software a jeho charakteristiky ............................................................... 4
3 Webové platformy pro tvorbu sociálního software ................................................ 8
3.1 Možnosti autentizace uživatelů ............................................................................. 8
3.1.1 OpenID ......................................................................................................... 10
3.1.2 MojeID ......................................................................................................... 11
3.2 Vhodné platformy ............................................................................................... 11
3.2.1 Redakční systémy ......................................................................................... 12
3.2.2 Nativní socialware ....................................................................................... 13
4 Redakční systém Drupal jako vhodná platforma ................................................. 17
4.1 O Drupalu obecně ............................................................................................... 17
4.2 Odůvodnění volby Drupalu ................................................................................. 17
4.3 Použité moduly ................................................................................................... 18
4.3.1 User Relationships ....................................................................................... 19
4.3.2 QTChat ......................................................................................................... 20
4.3.3 Node Gallery ................................................................................................ 21
4.3.4 Facebook-style Statuses ............................................................................... 23
4.3.5 Privatemsg ................................................................................................... 24
4.3.6 Facebook Connect ....................................................................................... 25
4.4 Další vhodné moduly .......................................................................................... 27
5 Nástroje sociálních sítí ............................................................................................. 30
5.1 Facebook ............................................................................................................. 30
5.1.1 Aplikační programovací rozhraní Graph API ............................................. 31
5.1.2 Autentizační rozhraní ................................................................................... 32
5.1.3 Analytický nástroj Insights ........................................................................... 32
5.1.4 Sociální pluginy ........................................................................................... 33
5.2 LinkedIn .............................................................................................................. 36
5.3 Twitter ................................................................................................................. 38
5.4 Google+............................................................................................................... 39
5.5 Integrace sociálních nástrojů třetích stran ........................................................... 39
5.5.1 Facebook social plugins integration............................................................ 40
5.5.2 LinkedIn Share Button ................................................................................. 40
5.5.3 Twitter Profile Widget.................................................................................. 41
5.5.4 Google +1 Plus One and Badge .................................................................. 41
6 Závěr.......................................................................................................................... 42
7 Literatura a zdroje ................................................................................................... 44
8 Přílohy ....................................................................................................................... 46
1 Úvod
Lidská společnost se nachází v době sociálního webu. Fenoménem Internetu
jsou sociální sítě jako Facebook, LinkedIn, Twitter či nejmladší Google+. Lidé mají
touhu komunikovat s přáteli a to je důvod vzniku velkého množství nástrojů a služeb,
které to umožňují (tzv. sociální software, který bude představen v následující kapitole).
Tato diplomová práce se zabývá platformami pro jeho vývoj. Zvolené téma jsem
si vybral, protože vznikla konkrétní poptávka doplnění sociálně orientovaných prvků do
stávající webové prezentace křesťanské studentské organizace INRI road 1, ve které již
mnoho let působím a spravuji její web. Na základě osobní konzultace s několika návštěvníky webu byly sestaveny požadavky na cílovou funkcionalitu. Jejich přehled je
uveden v podkapitole 4.3.
Cílem práce je prozkoumání problematiky sociálního software, porovnání různých webových platforem a nalezení vhodných konečných nástrojů. Výsledkem jsou
rozšířené webové stránky INRI road a tento text, který představuje pojem sociální software, popisuje a porovnává dostupné nekomerční webové platformy pro jeho vývoj,
popisuje možnosti autentizace uživatelů, redakční systém Drupal s jeho nejčastěji využívanými sociálně zaměřenými moduly a použitelné nástroje třetích stran, zejména sociální sítě Facebook. Součástí je také rozsáhlý poznámkový aparát. Ten obsahuje především odkazy na další zdroje a při běžném čtení není nutné mu věnovat pozornost.
1
http://www.inriroad.cz/index.php
1
2 Sociální software
2.1
Pojem Web 2.0
Web 2.0 neoznačuje novou technologii či službu, ale etapu vývoje webu, ve které se přešlo od statických stránek ke společné tvorbě obsahu. Náplň webových stránek
tak už netvoří pouze jejich autor, ale i sami návštěvníci, kteří zde mohou komunikovat
a sdílet s ostatními multimediální obsah. Pojem Web 2.0 představuje vývojový krok,
který rozšiřuje funkcionalitu i sociální hledisko webové služby a zavádí v plné míře
interakci [1].
Termín Web 2.0 se poprvé objevil ve článku Fragmented Future [2], kde v roce
1999 Darcy DiNucci napsala:
„Web, jak ho známe teď, který se jako statický text načte do okna prohlížeče, je
jen zárodek webu, který přijde. První záblesky Webu 2.0 se již začínají objevovat a my
sledujeme, jak se toto embryo začíná vyvíjet. Web bude chápán ne jako obrazovky plné
textu a grafiky, ale jako prostředí, jako éter, jehož prostřednictvím dochází k interaktivitě. Objeví se na obrazovce počítače, na televizním přijímači, na palubní desce, na mobilním telefonu, na herní konzoli, a možná, že i na vaší mikrovlnné troubě.“
Oficiální představení možností Webu 2.0 je spojováno s konferencí společnosti
O'Reilly Media (vydavatel technické literatury) v roce 2004. K jeho rozšíření přispěl
výrazně sám zakladatel společnosti Tim O'Reilly, který ve svém článku What Is
Web 2.0 [3] pojem Web 2.0 definoval a uvedl jeho základní principy.
V průběhu času vzniklo mnoho různých definic. V zásadě jde o posun od centralizovaného zpracování k decentralizovanému. Web dokumentů se mění na web dat, tedy
na platformu pro sdílení dat. Mezi další charakteristické rysy Webu 2.0 patří interaktivita v rámci části stránky, která je řešená většinou pomocí technologie AJAX 2, sdílené
meziwebové služby, kontextově přizpůsobivé aplikace a možnost ukládání prakticky
neomezeného množství dat. Webové stránky uplatňující Web 2.0 také lépe organizují
a třídí obsah a mají propracovanější hyperlinkovou strukturu.
Hlavní výhodou pro majitele webových stránek, kterou přináší Web 2.0, je možnost zvýšení návštěvnosti, neboť po zavedení příslušných prvků je možné očekávat vytvoření stálé komunity návštěvníků. Pokud bude web aktivní, bude vznikat nový a pro
návštěvníky zajímavý obsah, za kterým se sem budou pravidelně vracet. Základ webu
však musí být nejprve kvalitně vytvořený a z hlediska funkcionality pro uživatele atraktivní. To už se však dnes považuje za standard.
2
Technologie AJAX zajišťuje dynamické načítání části stránky bez nutnosti znovunačtení celé stránky.
2
Z výše uvedeného popisu tedy vyplývá, že se Web 2.0 od původního konceptu
(označovaném jako Web 1.0) značně liší. Základní srovnání v několika oblastech je
uvedeno v následující tabulce:
Funkcionalita
Web 1.0
Web 2.0
Informace jsou uspořádány
do hypertextových stránek.
Ovládání pomocí odkazů
způsobuje fragmentaci zobrazování informací a menší
přehlednost.
Kromě informací je poskytována aplikační funkcionalita.
Například: webmail, diskuse,
blog, nástěnka, fotogalerie,
videoshoty. Ovládání umožňuje zobrazit informace na
jednom místě bez fragmentace.
Obsah webu
Obsah webu je vytvářen jeho Na vytváření obsahu se podívlastníkem.
lejí také návštěvníci. Vlastník
kromě vytváření obsahu vystupuje v roli moderátora.
Dochází k decentralizaci autorit.
Interakce
Interakce je požadována po Interakce je vítána a mívá
vlastníkovi, objevuje se proto formu hodnocení, diskuse,
v omezené míře.
chatu nebo sociální sítě.
Obsah aktualizuje vlastník.
Aktualizace obsahu
Tvůrců obsahu může být velké množství, neboť ten je
kromě vlastníka tvořen i návštěvníky.
Sociální zařazení
návštěvníka
Návštěvník je pasivním čte- Návštěvník vytváří s ostatnínářem informací.
mi rozsáhlou komunitu a je
současně ten, o kom se píše.
Na stejném místě se setkávají
návštěvníci podobných zájmů
a mohou aktivně komunikovat.
Personalizace
Implicitní personalizace není Je možné vytvářet a využívat
umožněna.
sociální profily čtenářů.
Tabulka 2.1 – Web 1.0 vs. Web 2.0
(zdroje: http://www.lupa.cz/clanky/web-2-0-bublina-nebo-novy-smer-webu/,
http://www.indextrade.cz/clanky/web-20-jako-dulezity-milnik-v-evoluci-webu)
3
2.2
Sociální software a jeho charakteristiky
Sociální software (též socialware nebo socioware) je realizací Webu 2.0. Změnil
způsob, jakým lidé komunikují online, což vedlo k posunu od webu, který byl pouze
čten, k webu, který je čten i vytvářen. Uživatelé se stali konzumenty i producenty obsahu webu, jsou tedy vedeni k obousměrné konverzaci.
Meredith Farkas ve své knize Social Software in Libraries [4] definuje sociální
software jako nástroj, který musí splňovat alespoň dvě ze tří následujících podmínek:
1. Umožňuje lidem komunikovat, spolupracovat a budovat komunitu online.
2. Může být syndikován, sdílen, znovu používán, remixován nebo usnadňuje
syndikaci.
3. Dovoluje lidem snadno se učit a získávat informace prostřednictvím chování
nebo znalostí ostatních.
Mezi představitele socioware patří instant messengery, diskusní fóra, chatovací
nástroje, blogy, wiki nástroje, sociální sítě, RSS, systémy pro sdílení fotografií,
podcastů a videí, social bookmarking (sociální záložkování), tagování a další 3.
Jedna služba často zahrnuje více zmíněných sociálních nástrojů. Přesto určité
charakteristiky odlišují sociální software od jiných technologií.
Snadná tvorba a sdílení obsahu
Před lety tvořili obsah webů jednotlivci, kteří rozuměli HTML a webovým programovacím jazykům. V dnešní době může přidávat obsah každý a to včetně textu, fotografií, audia a videa. Blogovací nástroje umožňují snadno vytvořit webovou stránku
a díky vizuálním editorům není znalost HTML již nutná. Wiki nástroje usnadňují skupině lidí vkládat obsah na jedno místo a vytvořit tak web společně. Proces vytváření obsahu je navíc ovlivněn názory jednotlivých členů skupiny.
Systémy pro sdílení fotografií umožňují lidem nahrát jejich fotografie na web
a sdílet je se svoji rodinou, přáteli nebo celým světem. Stejné funkce jsou dostupné také
pro podcasty a videa. Není tedy nutné mít vlastní server, ale je možné využít jedné
z mnoha služeb pro bezplatné skladování multimediálního obsahu, které také zajišťují
jeho snadnější vyhledání pro ostatní. Socioware umožňuje každému prezentovat se na
Internetu a stát se jeho aktivním vývojářem.
Online spolupráce
Před existencí Wiki nástrojů spočívala společná tvorba webu v tom, že skupina
lidí oznámila svému webmasterovi, co chtějí na svých webových stránkách mít.
S použitím Wiki nástrojů může nyní každý ze skupiny asynchronně přidávat nebo upra3
Seznam představitelů socialware je dostupný např. na http://en.wikipedia.org/wiki/Social_software.
4
vovat obsah, a tak vytvořit web společně. Tyto nástroje také k užitku všem nabízí velký
prostor pro sbírání znalostí od rozmanité skupiny lidí.
Distribuovaná a online konverzace
Sociální software umožňuje konverzaci v mnoha různých formách. Blogy s povolenými komentáři umožňují konverzaci mezi autorem a jeho čtenáři. Rozsáhlejší
konverzace může nastat, když autor blogu používá svůj vlastní blog ke komentování
příspěvku jiného člověka na jiném blogu. Pomocí permalinku (trvalého odkazu) může
snadno své čtenáře na tento příspěvek odkázat a pomocí metody Trackback 4 upozornit
na svoji reakci samotného autora.
Instant messengery zajišťují online konverzaci. Dva a více jednotlivců si mohou
psát zprávy v reálném čase a mít tak mezi sebou synchronní konverzaci za použití textu.
Komunity vyvíjené „odspodu nahoru“
O online komunitách se obvykle uvažuje jako o skupinách, které jsou vytvářeny
„odshora“ a s vědomým vstupem členů. Tento typ má jasné hranice – člověk buď je
členem komunity, nebo není. Nicméně, mnoho sociálních nástrojů podporuje komunity
vyvíjené „odspodu nahoru“, kde jsou lidé propojeni svým vztahem k druhým a hranice
jsou nestálé.
Vhodným příkladem jsou autoři blogů. Ti si založili svůj vlastní blog a píší o určitých tématech. Při odkazování a komentování cizích blogů se začíná vytvářet komunita. Oni sami si začínají uvědomovat, že se stali součástí komunity, ke které se nepřidali
vědomě, ale propojení jednotlivých členů je založeno pouze na jejich odkazování a komentování. Podobným způsobem fungují také sociální sítě.
Sociální software pomáhá budovat různé typy komunit. Ty nevyžadují diskusní
fórum ani elektronické mailingové listy. Konverzace se může uskutečnit ve Wiki nástrojích, v sekci komentářů u blogů, prostřednictvím systémů pro sdílení fotografií, odkazováním nebo tagováním. Takové komunity nepožadují údržbu ani centrální autoritu.
Jejich existence je dána tím, že lidé používají stejné sociální nástroje nebo se účastní
stejných aktivit.
Využívání moudrosti davu
Kromě konverzace, spolupráce a budování komunity dovoluje socialware lidem
učit se a získávat informace prostřednictvím chování nebo znalostí ostatních. Čím je
komunita větší, tím je k dispozici více informací a daný zdroj se stává užitečnějším.
Wiki nástroje umožňují velkému množství lidí přidat svoje znalosti na jeden web
a vytvořit tak obrovskou znalostní bázi o daném tématu, která je okamžitě dostupná
4
Metoda Trackback zajišťuje zobrazení komentáře s danou reakcí pod příspěvkem na cizím blogu.
5
ostatním. Další uplatnění je možné vidět v systémech doporučování. Lidé vždy chtějí
vědět, zda kupují nejlepší produkt na trhu, objednávají nejlepší službu nebo uzavírají
nejvýhodnější dohodu. V dnešní době mohou profitovat ze znalostí a zkušeností tisíců
dalších zákazníků.
Pomocí tagování je možné dát informacím na webu význam. Lidé tagují své
blogové příspěvky, fotografie a jiný multimediální obsah, a tím usnadňují jejich třídění
a vyhledávání. Metoda social bookmarking umožňuje tagovat také záložky webových
stránek. Uživatel si nejprve záložku na užitečné místo v Internetu uloží, přidá jí tag
a následně nasdílí ostatním. Ti si na základě popisu mohou vyhledat všechny relevantní
záložky a dostat se tak snadno ke kvalitnímu zdroji informací nebo službě.
Transparentnost
Moudrost davu je příčinou transparentnosti. Pokud se na trhu objeví produkt
nízké kvality, organizace nebo politik udělá něco kontroverzního, je jisté, že to lidé odhalí. Reputace těchto subjektů může být zničena množstvím špatných hodnocení nebo
skupinou autorů blogů s jejich negativními komentáři. Dav může zajistit naprostý nezájem a despekt, nebo způsobit popularitu.
Tato transparentnost je tedy také jedinečnou příležitostí. Socioware umožňuje
organizacím přistupovat k zákazníkům osobnějším způsobem. Zaměstnanci mohou vystupovat pod svými vlastními jmény a komunikovat se svými zákazníky jako lidské
bytosti. To může být příčinou úspěchu.
Personalizace
Někteří lidé čtou každou stránku novin, jiní pouze články o tématech, které je
zajímají. Nicméně, stále musí projít celé noviny a tyto články vyhledat. RSS je sociální
software, který dodává tematický obsah z různých webových stránek na jedno místo
nebo do RSS čtečky. Obsah bude tedy přizpůsoben čtenáři a ten se tímto způsobem
rychle dostane k požadovaným informacím. Některé služby dokonce umožňují omezit
obsah na zadaná klíčová slova. Stejným způsobem funguje také syndikace podcastů.
Přenositelnost
Na rozdíl od desktopových aplikací nejsou webové aplikace vázané na konkrétní
počítač. Protože do této druhé kategorie patří většina socialware, nezáleží na tom, zda
se jeho uživatel nachází doma nebo kdekoliv jinde s přístupem k Internetu. Ve škole,
v práci nebo v internetové kavárně na místě, kde tráví dovolenou, se může připojit
k požadované aplikaci, napsat blogový příspěvek, komunikovat prostřednictvím instant
messengerů, sdílet fotografie a další.
V dnešní době je možné k webovým aplikacím přistupovat také prostřednictvím
mobilních zařízení, jako je PDA nebo chytrý telefon. Rostoucí množství webových
6
stránek a aplikací je navrženo k přístupu z desktopových a ručních zařízení a to uživatelům umožňuje provádět většinu operací na obou typech zařízení. Ať se nacházejí kdekoliv, mohou být neustále online.
Překonávání bariér vzdálenosti a času
Sociální software umožňuje lidem komunikovat a spolupracovat bez ohledu na
to, kde právě jsou, a tak překonává bariéry vzdálenosti a času. Prostřednictvím instant
messengerů mohou lidé vzájemně komunikovat online a pomocí Wiki nástrojů spolupracovat na projektech. Nemusí se však nacházet ve stejné místnosti nebo pracovat ve
stejném čase. Osobní setkání se tak stává mnohem méně nutné.
7
3 Webové platformy pro tvorbu
sociálního software
V předchozí kapitole byl představen socialware a jeho charakteristiky. Tato kapitola se zabývá webovými platformami pro jeho tvorbu.
Pro vytvoření sociálně zaměřeného webu není potřeba nová platforma. Do existujícího webu stačí přidat sociální nástroje třetích stran. Ty z obyčejných webových
stránek vytvoří sociální software. Toto řešení je výhodné také v případě, kdy se komunita uživatelů u služby, která daný sociální nástroj poskytuje, a u vytvářeného webu prolíná. Menší nevýhoda je však v tom, že nad sociálními nástroji třetích stran nemá administrátor webu úplnou kontrolu a rozhraní má své limity. Těmto nástrojům bude věnována 5. kapitola.
Kromě sociálních nástrojů třetích stran je k dispozici řada platforem, na kterých
je možné celou sociálně orientovanou webovou prezentaci postavit. Lze je tedy využít
při vytváření nového webu a sociální nástroje třetích stran případně doplnit dodatečně.
Díky kontrole nad zdrojovým kódem jednotlivých součástí si může administrátor web
také více přizpůsobit. Existují různé komerční i nekomerční webové platformy, které se
liší cenou, svými možnostmi a podporou funkcí. Jejich porovnání se věnuje velká část
této kapitoly.
Ještě před tím budou představeny možnosti autentizace uživatelů. Problematika
uživatelských identit a jejich poskytovatelů s tvorbou socialware úzce souvisí. Spousta
uživatelů již nějakou identitu vlastní. Integrace možnosti přihlašování pomocí nejrozšířenějších poskytovatelů identit je výhodná pro uživatele webu i jeho majitele. Uživatelé
nebudou muset k přihlašování používat další jednoúčelovou identitu a majitel webu
o nich může získat informace, které povedou k individuálnímu přizpůsobení obsahu
webu. Z uvedených důvodů je znalost této problematiky pro majitele webu nezbytná
a následující text se jí věnuje podrobněji.
3.1
Možnosti autentizace uživatelů
Jednou ze základních činností, se kterou se každý uživatel Internetu setká, je autentizace neboli proces ověření identity [5]. Webová stránka nebo služba, ke které se
přihlašuje, si potřebuje ověřit, že je tím, za koho se vydává. Běžný průběh autentizace je
následující:
1. Uživatel požádá o přístup k nějaké službě.
2. Služba vyzve uživatele, aby se identifikoval.
8
3. Uživatel zadá svůj jednoznačný identifikátor (uživatelské jméno) a smluvenou informaci 5, která je známá jen jemu a dané službě (heslo).
4. Služba si tyto údaje ověří a na základě toho buď uživatele přihlásí, nebo ne.
V praxi to pak vypadá tak, že si služba udržuje svoji vlastní databázi uživatelských účtů. Před prvním přihlášením se musí uživatel zaregistrovat, kde si zvolí (nebo
obdrží) uživatelské jméno a heslo. Toto řešení je výhodné především pro službu samotnou, protože správa uživatelských účtů jí může být konkrétně přizpůsobena a má nad
svými uživateli plnou kontrolu.
Plyne z toho ale samozřejmě několik nevýhod pro uživatele. Tou hlavní je, že si
uživatel musí pamatovat přihlašovací údaje ke všem službám, které používá. Člověk
však zapomíná, a tak se mu snadno stane, že v množství různých přihlašovacích jmen
a hesel ztratí přehled. Nabízí se varianta zaregistrovat se všude pod stejnými údaji, ale
to vždy není možné, neboť hesla mají různou povinnou délku a povinné znaky a i nároky na samotná přihlašovací jména jsou odlišná. Navíc toto řešení není bezpečné a hrozí
určité omezení soukromí. Druhou nevýhodou je, že je identita uživatele nepřenositelná
a zároveň nejednoznačná. Je unikátní pouze v rámci jedné služby nebo rodiny služeb
a z toho vyplývá, že v jiné službě může mít tentýž člověk jiné uživatelské jméno (což je
matoucí), a na druhou stranu jedno stejné uživatelské jméno může figurovat ve více
službách, ale pokaždé se pod ním skrývá někdo jiný.
Protože se postupem času staly tyto nevýhody vysoce nepříjemné, začala se hledat jiná možnost řešení problematiky autentizace. Ta byla nakonec nalezena v nezávislé
autentizační autoritě, která by byla správcem uživatelských identit. Cílem bylo, aby tyto
identity byly univerzální (neomezené jen na jednu službu nebo rodinu služeb), jednotné
(pro všechny služby stejné), unikátní (aby je nemohl použít nikdo jiný než vlastník)
a nezávislé (nepropojené se službou a zároveň bezplatné).
Výhody jsou zřejmé. Uživatel není nucen znát uživatelské jméno a heslo ke každé používané službě, ale stačí mu pouze znát přihlašovací údaje k účtu u autentizační
autority. Díky zde získané identitě se pak přihlásí na všechny ostatní služby. Z jejích
vlastností (univerzálnost, jednotnost, unikátnost a nezávislost) pak vyplývá, že i druhá
nevýhoda běžné autentizace (nepřenosnost a nejednoznačnost) je potlačena.
Je tu ovšem opět i několik nevýhod. Protože má uživatel de facto ke všem službám stejné přihlašovací údaje, tak v momentě, kdy dojde k prozrazení jeho hesla, bude
kompromitován na všech používaných službách zároveň. Na straně poskytovatele služby může být pak nevýhodou, že se o uživateli nedozví mnoho informací, resp. jen ty,
které mu sám uživatel povolí.
Zde se jedná o autentizaci s využitím znalosti tajné informace. Obecně lze k autentizaci využít také
tokeny a biometriky.
5
9
Během posledních několika let byly navrženy univerzální metody, které implementují výše uvedený přístup. Ty lze rozdělit podle toho, zda ověřují oprávnění a roli
v instituci (institution-centric) nebo identitu uživatele (user-centric). Do první skupiny
patří například Shibboleth nebo Česká akademická federace identit eduID.cz 6, která je
na metodě Shibboleth postavena. Pro účely sociálního software je zajímavá právě druhá
skupina, která je ve světě ve velké míře hodně používaná. Sem patří především speciální
metody jako OpenID, Live ID, OpenAuth, česká varianta mojeID a metody sociálních
sítí, například Facebook Connect. Tyto metody jsou založené na tom, že uživatel má
u nějaké důvěryhodné entity založený účet, s jehož pomocí se může přihlašovat i na
dalších službách. Nabízí se další dělení, tentokrát podle toho, kdo je danou důvěryhodnou entitou. U OpenID si ji uživatel může zvolit, případně tou entitou může být on sám,
resp. jeho server. U Live ID, OpenAuth, mojeID a Facebook Connect je důvěryhodná
entita pevně dána, neboť je jí konkrétní firma (Microsoft, AOL, CZ.NIC a Facebook)
[6]. Metodami OpenID a mojeID se podrobněji zabývají následující dvě podkapitoly,
autentizačnímu rozhraní Facebook Connect bude věnována podkapitola 5.1.2.
3.1.1
OpenID
Jak už bylo poznamenáno výše, tato technologie se od ostatních liší tím, že si
uživatel může sám zvolit důvěryhodnou entitu, u které si založí účet. V nabídce je například myOpenID, claimID, myID, Google nebo český Seznam. Přehled všech poskytovatelů je dostupný na webu The OpenID Directory 7.
Po založení účtu u některého poskytovatele získá uživatel OpenID identifikátor,
který má v tomto případě tvar URL adresy. Přihlašování na požadovanou webovou
stránku nebo službu pak funguje tak, že uživatel vyplní svůj identifikátor a je následně
přesměrován na příslušný OpenID server. Zde se autentizuje jako obvykle zadáním uživatelského jména a hesla a po ověření údajů dojde k úspěšnému přihlášení na původním
místě [7]. Někdy služba požaduje ještě doplňkové údaje o uživateli (např. e-mail), které
jsou po jeho odsouhlasení také serverem poskytnuty.
Kromě vlastního přihlašování je nutné se zabývat také registrací. Některé služby
registraci na své straně nevyžadují (vše se děje přes OpenID server), jiné ale umožňují
pouze přihlašování. To znamená, že u konkrétní služby se musí uživatel zaregistrovat
běžným způsobem a v příslušném nastavení spárovat svůj účet s OpenID (vyplněním
OpenID identifikátoru). Příště už se přihlásí pomocí OpenID, a tedy samotné přihlašovací údaje k dané službě může zapomenout.
Podpora technologie OpenID je v dnešní době již velká, a tak je výhodné umožnit přihlašování pomocí této metody i na vlastním webu.
Česká akademická federace identit eduID.cz poskytuje svým členům rámec pro vzájemné využívání
identit uživatelů a umožňuje jim přístup k síťovým službám při respektování ochrany osobních údajů.
7
http://openiddirectory.com/openid-providers-c-1.html
6
10
3.1.2
MojeID
U metody mojeID je na rozdíl od OpenID důvěryhodná entita pevně dána
a v tomto konkrétním případě je jí sdružení CZ.NIC (správce národní domény .cz). Tato
česká metoda je sice založena na technologii OpenID, je ale rozšířena o některé vlastnosti přínosné pro uživatele i poskytovatele služeb [8].
Její unikátnost spočívá zejména v tom, že nepracuje s anonymními, ale s ověřenými identitami. Každý uživatel, který se do služby mojeID zaregistruje, bude ověřený,
a to ve dvou úrovních. Hned při registraci musí uvést platnou emailovou adresu, telefonní číslo a adresu pro posílání dopisů. Pro plnou aktivaci účtu pak musí zadat
tři PIN kódy, které obdrží na zmíněné tři kontaktní údaje. Tím je uživatel identifikován
a je ověřena platnost kontaktů. Ve druhé úrovni ověření (validaci) je nutné, aby uživatel
fyzicky prokázal svoji totožnost v sídle sdružení CZ.NIC v Praze nebo aby zaslal žádost
o validaci, která bude opatřena úředně ověřeným podpisem nebo elektronickým podpisem. Tím bude zajištěno, že uživatel je skutečně tím, za koho se vydává [9].
Na webu mojeID 8 je možno nalézt seznam služeb, které přihlašování jeho prostřednictvím umožňují. V dnešní době už jich je velké množství. K tomu je nutné ještě
připočítat všechny služby, které podporují samotné OpenID. Ty totiž automaticky
umožňují přihlašování i přes mojeID 9.
3.2
Vhodné platformy
Po představení možností autentizace uživatelů se tato podkapitola navrací k webovým platformám pro tvorbu socioware. Na Internetu lze nalézt seznamy nejpoužívanějších platforem a jejich srovnávací tabulky. Při zpracování této diplomové práce byly
použity dva zdroje 10, které uváděly celkem třicet představitelů. Z nich byly následně
vybrány vhodné platformy, které splňovaly následující podmínky:
Platforma je nabízena bezplatně.
Platforma neobsahuje povinné reklamní prvky.
Nejnovější verze platformy byla vydána během let 2010–2012.
Platforma nabízí dostatečné množství sociálně orientovaných modulů (přímo
v jádru nebo ve formě doplňku) a šablon vzhledu.
 Na webu platformy je k dispozici přehledná dokumentace, kterou lze využít
při vlastních úpravách, a diskusní fórum pro řešení problémů.




Vhodných platforem bylo osm: BuddyPress, Joomla!, Pligg, Xoops, Drupal,
Elgg, Oxwall a Insoshi. K tomuto seznamu přibyla ještě služba Ning. Ačkoliv se jedná
8
http://www.mojeid.cz/page/803/kde-mojeid-pouzivat/
Speciální URL identifikátor má v tomto případě tvar uzivatelskejmeno.mojeid.cz.
10
http://dzineblog.com/2010/03/top-10-open-source-platforms-that-allow-you-to-build-your-own-socialnetwork.html, http://en.wikipedia.org/wiki/Comparison_of_social_networking_software
9
11
o placenou platformu, do diplomové práce byla zařazena, protože je označována za největší světovou platformu pro tvorbu sociálních webů a až do dubna 2010 byla nabízena
zdarma (nyní za poplatek od $3 měsíčně, včetně hostingu). Je tedy možné porovnat
vlastnosti této placené alternativy s ostatními neplacenými a rozhodnout se, zda se investice vyplatí.
Platformy lze rozdělit na redakční systémy a nativní socialware. Představitelé
obou skupin byli podrobeni analýze, jejímiž metrikami jsou klíčové vlastnosti webových platforem a podpora sociálních nástrojů uvedených v Tabulce 3.1. Výsledky jsou
prezentovány v následujícím textu. Závěrem podkapitoly je pak uvedena zmiňovaná
tabulka.
3.2.1
Redakční systémy
Velkou skupinou platforem, které jsou vhodné pro tvorbu socioware, jsou redakční systémy. Některé již v jádru obsahují sociálně zaměřené moduly a další je možné stáhnout a nainstalovat dodatečně. V konečném výběru zůstalo těchto pět redakčních
systémů: BuddyPress, Joomla!, Pligg, Xoops a Drupal. První čtyři jmenované systémy
jsou popsány v této podkapitole, redakčnímu systému Drupal bude věnována celá
4. kapitola.
BuddyPress
BuddyPress je sociální nadstavba redakčního systému WordPress. Nabízí všechny porovnávané sociální nástroje a její výhodou je také (neoficiální) česká lokalizace 11.
Při instalaci lze využít přehledný instalační tutoriál 12 a v případě migrace z jiné platformy 13 nástroj pro import obsahu 14. Tato nadstavba nemá z pohledu administrátora žádné
zásadní nevýhody.
Joomla!
Joomla! je jedním z nejpoužívanějších 15 redakčních systémů s otevřeným zdrojovým kódem. Stejně jako BuddyPress nabízí všechny porovnávané sociální nástroje
a českou lokalizaci. Seznamy vhodných sociálních rozšíření lze najít na Internetu 16. Pro
tuto platformu existují také komponenty, které zahrnují větší množství sociálních prvků
najednou. Patří mezi ně například Community Builder 17, která nabízí více jak 200 neK systému BuddyPress existuje pouze neoficiální česká lokalizace, která je dostupná na adrese
http://www.expres-web.cz/download/buddypress-%C4%8De%C5%A1tina-1-5-x/
12
http://wp.tutsplus.com/tutorials/getting-started-with-buddypress/
13
Mezi čtyřiceti pěti podporovanými platformami se nachází také Joomla, Drupal a Ning.
14
http://codex.wordpress.org/Importing_Content
15
Přehled nejpoužívanějších redakčních systémů s otevřeným zdrojovým kódem za rok 2011 je k dispozici v dokumentu 2011 Open Source CMS Market Share Report –
http://www.waterandstone.com/downloads/2011OSCMSMarketShareReport.pdf (strana 13)
16
např. http://net.tutsplus.com/tutorials/other/build-a-social-network-using-joomla/
17
http://www.joomlapolis.com/
11
12
placených i placených rozšíření, a JomSocial 18 s několika stovkami výhradně placených
rozšíření. Ani redakční systém Joomla! nemá z pohledu administrátora žádné zásadní
nevýhody.
Pligg
Pligg se od ostatních redakčních systémů liší v tom, že obsah webu nevytváří
pouze omezené množství autorů, ale všichni registrovaní uživatelé. Nový článek je po
zveřejnění nejprve označen jako čekající a jednotliví uživatelé mohou hlasovat, zda
a jak moc se jim líbí (buď pomocí 5 hvězdičkové metody, nebo tradičním přičítáním).
Teprve po obdržení dostatečného množství hlasů nebo dosažení požadovaného průměrného hodnocení je zobrazen na hlavní stránce.
Tato platforma nenabízí českou lokalizaci a především některé důležité sociální
nástroje (nebo pouze v komerční podobě). Z toho důvodu ji nelze použít pro vytvoření
libovolného sociálního software.
Xoops
Xoops je redakční systém, který v roce 2010 obdržel cenu 19 za nejlepší technologii s otevřeným zdrojovým kódem. Podobně jako Pligg nenabízí českou lokalizaci
a některé porovnávané sociální nástroje. Přesto je použitelný pro vytvoření většiny
socialware. Při instalaci je možné využít podrobný návod 20.
3.2.2
Nativní socialware
Kromě redakčních systémů jsou k dispozici platformy, které byly přímo navrženy pro tvorbu sociálního software. Některé z nich obsahují všechny sociální prvky již
v sobě a nenabízí možnost doplňků, jiné fungují podobně jako redakční systémy
a umožňují stažení dalších sociálně orientovaných modulů. V konečném výběru zůstaly
tyto čtyři nativní platformy: Elgg, Oxwall, Insoshi a Ning.
Elgg
Elgg je sociální platforma, která je často využívána také pro tvorbu
e-learningových systémů. V roce 2008 získala cenu 21 za nejlepší nástroj ve své kategorii. Nabízí všechny porovnávané sociální nástroje, nevýhodou je však absence české
lokalizace. Jiné zásadní nedostatky tato platforma nemá.
18
http://www.jomsocial.com/
Přehled všech ocenění je dostupný na adrese http://xoops.org/modules/wfchannel/index.php?cid=28
20
http://www.zirafoviny.cz/modules/news/article.php?storyid=127
21
Na adrese http://www.elgg.cz/art/38/elgg_awards_oceneni_ceny_open_source.htm je dostupný přehled
všech ocenění.
19
13
Oxwall
Oxwall je nejmladší porovnávaná sociální platforma. Její výhodou je, že již v jádru obsahuje téměř všechny důležité sociální nástroje. Ostatní porovnávané nástroje
však nenabízí ani ve formě doplňku. Další nevýhodou je absence české lokalizace. Přesto se jedná o vhodnou platformu, na které lze postavit většinu socioware. Příkladem je
hostovaná služba Wall.fm 22, která nabízí vytvoření vlastní sociální sítě.
Insoshi
Insoshi je sociální platforma s odlišnou architekturou. Jako jediný porovnávaný
systém stojí na moderním aplikačním rámci Ruby on Rails, který používá návrhový
vzor Model-View-Controller (oddělení datového modelu, uživatelského rozhraní a aplikační logiky). Z toho důvodu je nutné Insoshi hostovat na speciální službě 23 nebo nainstalovat na vlastní server. Postup instalace je k dispozici na Wiki webu 24.
U této platformy, dostupné pouze v anglickém jazyce, neexistuje systém doplňků, a tak je možné využívat pouze vestavěné sociální nástroje. Protože však nepokrývají
všechny porovnávané sociální funkce, nelze Insoshi použít pro vytvoření libovolného
socialware.
Ning
Ning patří mezi nejznámější představitele tzv. White-label socialware 25 [10]. Jak
už bylo uvedeno výše, jde v současné době o komerční 26 službu, která je považována za
největší světovou platformu pro tvorbu sociálních sítí. Je hostovaná a kromě hlasovacího systému a podpory autentizace prostřednictvím OpenID nabízí všechny porovnávané
sociální nástroje. Umožňuje export dat 27 a výhodou je také česká lokalizace. Jediným
nedostatkem je právě zpoplatnění služby.
Rozhodnutí, zda se vyplatí investovat a využívat tuto platformu, je individuální.
Nabídka sociálních nástrojů u některých nekomerčních platforem i u služby Ning je
stejná. Záleží tedy více na finančních možnostech, ochotě věnovat se správě systému
a požadovaném komfortu.
Služba Wall.fm je dostupná v neplacené i placené podobě – http://wall.fm/
Na adrese http://www.jakpsatweb.cz/katalog/hosting-ror.html je k dispozici přehled webhostingů
s podporou Ruby on Rails.
24
https://sites.google.com/a/insoshi.com/insoshi-guides/Installation
25
White-label socialware je služba (většinou hostovaná a komerční), která umožňuje uživatelům vytvořit
vlastní sociální síť a neobsahuje autorskou značku služby samotné.
26
Služba Ning nabízí 3 cenové plány (nejlevnější od $3 měsíčně) s 30denním bezplatným zkušebním
obdobím – http://www.ning.com/compareplans
27
http://www.ning.com/help/cgi-bin/ning.cfg/php/enduser/std_adp.php?p_faqid=3798
22
23
14
BuddyPress
Joomla!
Pligg
Xoops
Drupal
Elgg
Oxwall
Insoshi
–
28
Ning
Web
buddypress.org
joomla.org
pligg.com
xoops.org
drupal.org
elgg.org
oxwall.org
ning.com
Rok vzniku
2009
2005
2005
2001
2001
2004
2010
2008
2005
Nejnovější
vydání
1.5.2
2.5.3
1.2.0
2.5.4
7.12
1.8.3
1.3.2
–
–
Licence
GPL 2.0 29
GPL 2.0
AGPL 30
GPL 2.0
GPL 2.0
GPL 2.0
MIT 31
CPAL 32
MIT
–
Cena
zdarma
zdarma
zdarma
zdarma
zdarma
zdarma
zdarma
zdarma
od $3 měsíčně
Programovací
jazyk
PHP
PHP
PHP
PHP
PHP
PHP
PHP
Ruby
PHP
Java
MySQL
MySQL
MySQL
PostgreSQL
MySQL
Databáze
MySQL
MySQL
MySQL
MySQL
MySQL
PostgreSQL
SQLite
Počet modulů
403
9447 33
94
51133
1019433
1376
38
–
–
Počet šablon
21
527 34
70
872
972
141
38
–
–
Hostovaná
služba
ne
ne
ne
ne
ne
ne
ne
ne
ano
Tabulka 3.1a – Porovnání klíčových vlastností vybraných webových platforem
(zpracováno podle oficiálních webů jednotlivých platforem)
Platforma Insoshi nemá vlastní web, ale je dostupná prostřednictvím verzovacího systému Git – https://github.com/insoshi/insoshi
GNU General Public License 2.0 – http://www.gnu.org/licenses/gpl-2.0.html
30
Affero General Public License – http://www.affero.org/oagpl.html
31
The MIT License – http://www.opensource.org/licenses/MIT
32
Common Public Attribution License – http://www.opensource.org/licenses/CPAL-1.0
33
Hodnota představuje počet všech modulů, nejen sociálně orientovaných.
34
Hodnota představuje počet šablon dostupných na webu http://www.joomla24.com/
28
29
BuddyPress
Joomla!
Pligg
Xoops
Drupal
Elgg
Oxwall
Insoshi
Ning
Čeština
neoficiální
ano
ne
ne
ano
ne
ne
ne
ano
IM / Chat
doplněk
doplněk
placené
doplněk
doplněk
doplněk
ano
ne
ano
Psaní soukromých zpráv
ano
doplněk
ano
ano
doplněk
ano
ano
ano
ano
Diskusní fórum
ano
doplněk
ne
doplněk
ano
doplněk
ano
ano
ano
Blogování
ano
ano
ano
doplněk
ano
ano
ano
ano
ano
Wiki nástroje
doplněk
doplněk
ne
doplněk
ano
doplněk
ne
ne
ano
RSS
ano
ano
ano
ano
ano
ano
ne
ne
ano
Sdílení fotografií
doplněk
doplněk
ne
doplněk
doplněk
doplněk
ano
ano
ano
Social bookmarking
doplněk
doplněk
doplněk
doplněk
doplněk
ano
ano
ne
ano
Tagování
doplněk
doplněk
ano
doplněk
ano
ano
ano
ne
ano
Přehled aktivit
ano
doplněk
ne
ne
doplněk
ano
ne
ano
ano
Uživatelské statusy
ano
doplněk
doplněk
ne
doplněk
doplněk
ano
ano
ano
Uživatelské skupiny
ano
doplněk
ano
doplněk
doplněk
ano
ano
ne
ano
Systém upozorňování
doplněk
doplněk
doplněk
ano
doplněk
ano
ano
ano
ano
Hlasovací systém
doplněk
doplněk
ano
ne
doplněk
doplněk
ano
ne
ne
Facebook Connect
doplněk
doplněk
placené
ne
doplněk
doplněk
ano
ne
ano
OpenID
doplněk
doplněk
ne
doplněk
ano
doplněk
ne
ano
ne
Integrace sociálních
nástrojů třetích stran 35
F, G, T
F, G, T, L
F, T
(placené)
T
F, G, T, L
F, G, T, L
–
–
F, G, T
Tabulka 3.1b – Porovnání klíčových vlastností vybraných webových platforem
35
F – Facebook, G – Google+, T – Twitter, L – LinkedIn
4 Redakční systém Drupal jako
vhodná platforma
4.1
O Drupalu obecně
Drupal je jeden ze dvou nejstarších porovnávaných redakčních systémů, který
během jedenácti let své existence získal mnoho ocenění 36. V současné době se na jeho
vývoji podílí několik hlavních programátorů (vývoj jádra) a více než 630 000 uživatelů
a vývojářů (vývoj a správa doplňkových modulů). K dispozici jsou dvě nezávislé verze
s vlastními aktualizacemi: 6 a 7.
Tato platforma nabízí všechny porovnávané sociální nástroje a také českou lokalizaci. Nevýhodou je pouze malé množství modulů v jádru, které je však možné vyřešit
pomocí instalačních profilů 37, a na první pohled složitá a nepřehledná administrace38.
Žádné zásadní nedostatky tento systém z pohledu administrátora nemá.
4.2
Odůvodnění volby Drupalu
Webové stránky INRI road jsou postavené právě na redakčním systému Drupal.
Když vznikla poptávka na doplnění sociálních prvků do webu, nabízela se tři možná
řešení. Bylo možné se rozhodnout vytvořit nový web postavený na jiné platformě, ponechat stávající systém a doplnit do něj další sociálně zaměřené moduly, nebo využít
sociálních nástrojů třetích stran.
Splnění poptávky bylo podmíněno třemi požadavky. Zvolené řešení muselo být
bezplatné, nabízet českou lokalizaci a podporovat většinu porovnávaných sociálních
nástrojů. Tyto podmínky splnily pouze tři analyzované platformy: BuddyPress, Joomla!
a Drupal. Vzhledem k tomu, že redakční systémy BuddyPress i Joomla! nabízely pouze
podobnou funkcionalitu, rozhodl jsem se pro Drupal a tedy druhou uvedenou možnost
řešení. Webové stránky tak nebylo nutné budovat od začátku a stávající uživatelé si nebudou muset zvykat na nový systém. Sociální nástroje třetích stran byly doplněny také,
ale přímo prostřednictvím Drupalu, který to umožňuje.
Přehled všech ocenění je dostupný na adrese http://drupal.org/about/awards
Instalační profily jsou distribuce redakčního systému Drupal, které obsahují jádro, doplňkové moduly,
šablony vzhledu a předefinované nastavení pro použití na specifickém typu webu (např. sociální síť).
Nyní je k dispozici 209 distribucí – http://drupal.org/project/distributions
38
V šesté verzi Drupalu je spojený front-end a back-end. Tuto nepřehlednost je možné vyřešit pomocí
doplňkových modulů. Sedmá verze má již back-end oddělený.
36
37
17
4.3
Použité moduly
V době vzniku předchozí verze webu byl Drupal 7 ještě ve vývoji a dosud není
podporován všemi nebo alespoň většinou modulů. Z tohoto důvodu stojí webové stránky INRI road na Drupalu 6 a také všechny testované a doplněné moduly jsou kompatibilní s touto verzí (některé i s verzí 7). Použity byly převážně aktuální vývojové varianty modulů, případně nejnovější stabilní vydání. Všechny tyto doplňky jsou dostupné na
webu redakčního systému Drupal 39, kde je integrováno jejich vyhledávání.
Záměrem úprav webu bylo podpořit a budovat specifickou komunitu uživatelů,
zvýšit aktivitu na webu, usnadnit komentování článků a zvýšit jejich čtenost, motivovat
uživatele, aby na webu trávili více času a častěji se na něj vraceli, zvýšit počet registrovaných uživatelů, usnadnit autentizaci, rozšířit možnosti propagace, podpořit vzájemnou
informovanost o aktivitě členů komunity a navodit jednotlivcům pocit, že jsou její součástí. Proto bylo do webu doplněno těchto šest modulů 40: User Relationships, QTChat,
Node Gallery, Facebook Connect, Facebook social plugins integration a Google +1 Plus
One and Badge. Kromě nich byly důkladně otestovány moduly Facebook-style Statuses
a Privatemsg, které také poskytují základní sociální nástroje. Na webu INRI road by
však nebyly využívány a z tohoto důvodu přidány nebyly.
Pro každý sociální nástroj je k dispozici několik variant, které byly vyzkoušeny
a vzájemně porovnány. Nejvhodnější doplněk byl potom nakonfigurován, přizpůsoben
potřebám webu INRI road a případně opraven nebo jinak modifikován přímo ve zdrojovém kódu [11].
Šest z osmi výše uvedených modulů je popsáno v následujícím textu, který je
doplněný o přehledové tabulky se základními údaji a obrázkové ukázky. Moduly
Facebook social plugins integration a Google +1 Plus One and Badge budou zmíněny
v podkapitole 5.5.
39
http://drupal.org/project/modules
Moduly Forum a OpenID, které splňují některé ze záměrů úprav, jsou součástí jádra a byly aktivované
již v předchozí verzi webu.
40
18
4.3.1
User Relationships
Webová stránka modulu: http://drupal.org/project/user_relationships
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-1.x-dev
Datum vydání modulu: 6. 10. 2011
Vlastní doplňkové moduly: –
Související moduly: Activity, Author pane, Bowob, CCK Field Privacy, CCK
Private Fields, druTalk, Facebook-style Statuses, Heartbeat,
Invite, Privatemsg, Rules, Services, User Relationship Birthdays, User Relationship Limits, XMPP Framework,
Views
Tabulka 4.1 – Základní údaje o modulu User Relationships
Modul User Relationships umožňuje vytvářet vztahy mezi uživateli, a tak pomáhá budovat jejich komunitu. Mohou vznikat vztahy jednostranné (například podřízený
nebo fanoušek) nebo oboustranné (například kamarád nebo sourozenec) a je možné zvolit, zda musí žádaný uživatel žádost o vztah ručně potvrdit, nebo k tomu má dojít automaticky. K dispozici je mnoho submodulů s dalšími užitečnými funkcemi 41.
Tento doplněk je využíván spoustou dalších modulů (např. QTChat, Privatemsg
a Facebook-style Statuses). Jeho alternativou je modul FriendList. Ten však již není
udržován, není podporován zvoleným modulem pro chat (popsaným v následující podkapitole) a má několik dalších nedostatků (například neumožňuje vytvářet jednostranné
vztahy, které vyžadují potvrzení) 42. Z těchto důvodů byl použit modul User Relationships, který tyto nevýhody nemá.
Submodul User Relationships Defaults například umožňuje nastavit výchozí vztah nově zaregistrovaných uživatelů ke konkrétním stávajícím.
42
Na adrese http://groups.drupal.org/node/14625 je dostupné vzájemné porovnání modulů FriendList
a User Relationships.
41
19
4.3.2
QTChat
Webová stránka modulu: http://drupal.org/project/qtc
Podporovaná vydání Drupalu: 6.x
Testované vydání modulu: 6.x-1.x-dev
Datum vydání modulu: 25. 2. 2011
Vlastní doplňkové moduly: QTChat Views
Související moduly: Author Pane, Flag Friend, Realname, Single Login, User
Relationships
Tabulka 4.2 – Základní údaje o modulu QTChat
Modul QTChat zajišťuje online komunikaci mezi uživateli, a tak je motivuje,
aby trávili na webu více času, a podporuje jejich komunitu. Jedná se o konverzaci na
bázi instant messengerů, která může být dočasně archivována v podobě historie zpráv.
Alternativou tohoto doplňku je modul DrupalChat, který má však spoustu nevýhod. Především uživatelům neumožňuje nastavit stav neviditelnosti, případně chat úplně
zakázat. Dále nenabízí možnost ukládat historii zpráv, nezobrazuje profilovou fotografii
uživatele v chatovacím okně a jeho vzhled je příliš jednoduchý. Modul QTChat tyto
nedostatky nemá, a proto byl zvolen. Přesto ani on není ideální.
Tento modul obsahoval několik chyb, které bylo nutné pro jeho použitelnost
opravit. Mimo jiné byl optimalizován dotaz pro získání seznamu online přátel (zdrojový
kód je uveden v příloze A), který zpomaloval 43 jeho zobrazení. Dále byl modul QTChat
vylepšen o několik funkcí, které vedly ke zvýšení uživatelské přívětivosti. Byla doprogramována podporu emotikonů (zdrojový kód je uveden v příloze B) a rozpoznávání
odkazů (zdrojový kód je uveden v příloze C) a seznam online přátel byl doplněn o profilové fotografie.
K modulu QTChat je vhodné nainstalovat ještě modul Single Login. Tento doplněk zamezuje duplikátnímu přihlášení stejného uživatele, které by v chatu působilo problémy.
Specifická komunita uživatelů webu INRI road vyžaduje, aby měl každý vztah s každým. Splněním
tohoto požadavku již při současných 87 registrovaných uživatelích vzniklo v příslušné databázové tabulce
několik tisíc řádků dat a jejich neoptimální testování příliš prodlužovalo dobu provádění dotazu. V tomto
konkrétním případě bylo zřejmě druhou možností upravit dotaz tak, aby uživatelské vztahy netestoval
vůbec.
43
20
Obrázek 4.1 – Ukázka chatovacího okna a seznamu online přátel modulu QTChat
4.3.3
Node Gallery
Webová stránka modulu: http://drupal.org/project/node_gallery
Podporovaná vydání Drupalu: 6.x
Testované vydání modulu: 6.x-3.0
Datum vydání modulu: 3. 8. 2011
Vlastní doplňkové moduly: Node Gallery Access, Node Gallery Hierarchy, Node Gallery Bulk Operations, Node Gallery Default, Node Gallery
JCarousel, Node Gallery Slideshow, Node Gallery Taxonomy, Node Gallery User Profile
Související moduly: CCK imagefields, Filefield Paths, ImageCache, Imagefield
Import, jQuery UI, Lightbox2, Organic Groups, Plupload
integration, RealName, Token, Views, Views Bulk Operations, Views Galleriffic
Tabulka 4.3 – Základní údaje o modulu Node Gallery
Modul Node Gallery umožňuje vytvářet fotoalba a pomocí nich motivovat uživatele, aby se na web častěji vraceli, a navodit jim pocit, že jsou součástí komunity.
21
Tato vytvořená fotoalba mohou být zobrazována 44 na hlavní stránce nebo ve speciální
sekci webu 45.
Obrázek 4.2 – Ukázka fotoalba vytvořeného modulem Node Gallery
Mezi alternativní moduly patří Brilliant Gallery, Fast Gallery, Gallery Assist
a Views Gallery. Pouze první z nich může plně konkurovat zvolenému modulu Node
Gallery. Oba nabízejí podobné funkce a nelze tak mezi nimi jednoznačně zvolit lepší
variantu. Ostatní tři doplňky jsou vhodné spíše pro jednodušší použití.
Také modul Node Gallery byl mírně vylepšen. Tento doplněk nabízí dva bloky
pro zobrazení náhledu poslední vkládané a náhodné fotografie ze všech fotoalb. K nim
byl doprogramován vlastní blok, který zobrazuje náhledy tří náhodných fotografií z naposledy vytvořeného fotoalba (zdrojový kód je uveden v příloze D). Návštěvníci webu
si tak snadno všimnou tohoto nově přidaného fotoalba a zároveň se při každém načtení
stránky zobrazí jiné fotografie.
Náhled i plné zobrazení fotoalba mohou nezávisle na sobě obsahovat náhledy všech fotografií, náhledy
pouze prvních šesti fotografií (případně s přepínačem na další šestice fotografií) nebo titulní fotografii.
45
Modul Node Gallery umožňuje, aby měl každý uživatel vlastní fotogalerii. Na webových stránkách
INRI road má však jiný účel a jednotlivá fotoalba mohou vytvářet pouze privilegovaní uživatelé.
44
22
K modulu Node Gallery je nutné nainstalovat modul ImageCache, zajišťující vytvoření náhledů fotografií. Velmi užitečné jsou také moduly Plupload integration,
umožňující hromadné nahrávání fotografií na web, a Lightbox2, který lze využít pro
zobrazení fotografií v plné velikosti prostřednictvím stejně pojmenované technologie.
4.3.4
Facebook-style Statuses
Webová stránka modulu: http://drupal.org/project/facebook_status
Podporovaná vydání Drupalu: 6.x
Testované vydání modulu: 6.x-3.x-dev
Datum vydání modulu: 5. 12. 2011
Vlastní doplňkové moduly: Facebook-style Micropublisher, Facebook-style Statuses
Tag Suggestions, Facebook-style Statuses to Facebook,
Statuses (FBSS) to LinkedIn
Související moduly: Activity, Author Pane, Context, CTools, Devel, Domain
Access, Flag, Flag Friend, Heartbeat, Mentions, Modal
Frame API, Mollom, Notifications, Panels, Pathauto, Rules,
Services, Shorten URLs, SMS Framework, Timeago, Twitter, User Relationships, Userpoints, Views, Views Bulk
Operations
Tabulka 4.4 – Základní údaje o modulu Facebook-style Statuses
Modul Facebook-style Statuses vytváří z profilové stránky každého uživatele
tzv. zeď, což je místo pro zveřejňování zpráv, pocitů a multimediálního obsahu. Tyto
příspěvky, souhrnně označované jako statusy, jsou vkládané pomocí technologie AJAX
a mohou být soukromé nebo veřejné. K dispozici je mnoho submodulů s dalšími užitečnými funkcemi 46.
Tento modul je možné propojit s jinými doplňky. Modul Notifications zajišťuje
upozorňování na nové statusy nebo jejich komentáře, modul Facebook-style Statuses to
Facebook umožňuje posílat statusy přímo na sociální síť Facebook a modul
Facebook-style Micropublisher rozšiřuje možnosti publikování o připojování odkazů,
obrázků, videí a několika druhů dokumentů.
46
Submodul Facebook-style Statuses Tags například umožňuje ve statusech tagovat jiné uživatele.
23
Obrázek 4.3 – Ukázka uživatelovy zdi zprostředkované modulem
Facebook-style Statuses
4.3.5
Privatemsg
Webová stránka modulu: http://drupal.org/project/privatemsg
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-2.x-dev
Datum vydání modulu: 1. 12. 2011
Vlastní doplňkové moduly: –
Související moduly: Rules, User Relationships
Tabulka 4.5 – Základní údaje o modulu Privatemsg
Modul Privatemsg umožňuje psaní soukromých zpráv mezi uživateli. Jedná se
o interní systém zpráv podobný systému na sociální síti Facebook. Zprávy jsou zobra-
24
zeny ve vláknech a lze je tagovat. Další užitečné funkce jsou dostupné pomocí submodulů 47.
Obrázek 4.4 – Ukázka přehledu doručených zpráv modulu Privatemsg
4.3.6
Facebook Connect
Webová stránka modulu: http://drupal.org/project/fbconnect
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-2.0-beta1
Datum vydání modulu: 3. 11. 2010
Vlastní doplňkové moduly: Facebook Mobile Web, FBConnect Bridge
Související moduly: –
Tabulka 4.6 – Základní údaje o modulu Facebook Connect
Modul Facebook Connect integruje do webu autentizační rozhraní stejného jména, a tak usnadňuje autentizaci a pomáhá zvýšit počet registrovaných uživatelů. Po jeho
instalaci se bude v bloku Přihlášení zobrazovat přihlašovací tlačítko Facebooku. To
umožňuje nejen autentizaci, ale také spárování účtu na Facebooku s existujícím účtem
na webu a tzv. rychlou registraci 48. Dále tento modul nabízí možnost přejímat profilové
fotografie uživatelů a synchronizovat přihlašování a odhlašování mezi webem a sociální
sítí Facebook.
Submodul Privatemsg Forward například umožňuje přidat mezi příjemce zprávy jiného uživatele, a tak
mu celou komunikaci přeposlat.
48
Při rychlé registraci se na základě jména uživatele a emailové adresy z Facebooku vytvoří na webu
nový účet. Případná kolize uživatelských jmen je ošetřena pořadovými čísly.
47
25
Obrázek 4.5 – Ukázka bloku Přihlášení s přihlašovacím tlačítkem Facebooku
Alternativním modulem je Drupal for Facebook. Tento doplněk nabízí rozsáhlejší podporu pro prvky a aplikace Facebooku a nemá žádné zásadní nedostatky. Vzhledem k dostačující jednoduchosti byl však použit modul Facebook Connect.
Součástí tohoto modulu je submodul Facebook Friends Invite. Ten umožňuje
v bloku zobrazovat seznam přátel na sociální síti Facebook, kteří jsou zároveň registrovaní na webu a mají spárovaný účet. Protože blok původně zobrazoval pouze seznam
jmen, s využitím aplikačního programovacího rozhraní Graph API, kterému bude věnována podkapitola 5.1.1, byl upraven jeho zdrojový kód, aby místo toho zobrazoval náhledy profilových fotografií (fragmenty zdrojového kódu jsou uvedeny v příloze E).
Obrázek 4.6 – Ukázka bloku Přátelé na Facebooku
Dále submodul Facebook Friends Invite nabízí možnost pozvat na web další přátele z Facebooku. Příslušný odkaz přesměruje uživatele na plugin pro pozvání přátel.
26
Obrázek 4.7 – Ukázka pluginu pro pozvání přátel zprostředkovaného submodulem
Facebook Friends Invite
4.4
Další vhodné moduly
Kromě doplněných, některých souvisejících, alternativních a otestovaných modulů nabízí redakční systém Drupal velké množství dalších vhodných sociálně orientovaných modulů, které mohou na jiných webech najít uplatnění [12]. Seznamy těchto
doplňků jsou k dispozici na Internetu 49. V následující tabulce je uveden přehled dvaceti
modulů, které jsou nejčastěji využívány a zároveň jsou kompatibilní s Drupalem 6 i 7:
49
např. http://www.developmentguruji.com/social-networking-solutions/drupal-modules.html
27
Název a webová stránka
Funkcionalita
Activity
http://drupal.org/project/activity
Zaznamenává činnosti uživatelů na webu a poskytuje seznam těchto aktivit v bloku, specializované
tabulce a prostřednictvím RSS.
AddThis
http://drupal.org/project/addthis
Integruje do webu tlačítko AddThis, které umožňuje uživatelům sdílet obsah na více než 300 sociálních sítí a služeb.
Advanced Forum
http://drupal.org/project/advanced_forum
Rozšiřuje možnosti modulu Forum, který je již
součástí jádra.
Advanced Profile Kit 50
http://drupal.org/project/advanced_profile
Umožňuje tvorbu bloků pro vytváření rozšířených
uživatelských profilů.
Author Pane
http://drupal.org/project/author_pane
Shromažďuje údaje o uživateli a zobrazuje je
v informačním bloku.
Comment notify
http://drupal.org/project/comment_notify
Umožňuje posílat registrovaným i anonymním
uživatelům emailová upozornění na nové komentáře obsahu, který předtím okomentovali.
Community Tags
http://drupal.org/project/community_tags
Umožňuje členům komunity tagovat obsah a sledovat, kdo, co a kdy označil.
Contact Importer
http://drupal.org/project/contact_importer
Pro činnost jiných modulů umožňuje uživatelům
importovat emailové adresy z jejich adresářů na
mnoha webových službách.
Embedded Media Field
http://drupal.org/project/emfield
S pomocí submodulů a souvisejících modulů
umožňuje uživatelům integrovat multimédia různých poskytovatelů obsahu.
Fivestar
http://drupal.org/project/fivestar
Poskytuje jednoduchý hlasovací nástroj pro obsah
a komentáře.
Google Identity Toolkit
http://drupal.org/project/gconnect
Integruje do webu možnost přihlašování a registrace pomocí služeb Gmail, Hotmail, Yahoo! a AOL.
Guestbook
http://drupal.org/project/guestbook
Poskytuje knihu návštěv pro celý web i pro jednotlivé uživatele.
Invite
http://drupal.org/project/invite
Umožňuje uživatelům pozvat na web přátele a toto
pozvání sledovat.
LoginToboggan
http://drupal.org/project/logintoboggan
Rozšiřuje možnosti přihlašovacího systému v jádru,
včetně autentizace pomocí emailové adresy.
50
Modul Advanced Profile Kit je kompatibilní pouze s Drupalem 6.
28
Název a webová stránka
Funkcionalita
mojeID
http://drupal.org/project/mojeid
Integruje do webu možnost přihlašování pomocí
služby mojeID.
Organic groups
http://drupal.org/project/og
Umožňuje uživatelům vytvářet a řídit vlastní skupiny.
Signup
http://drupal.org/project/signup
Umožňuje uživatelům registrovat se na události
a obecně všechny typy obsahu.
Tagadelic
http://drupal.org/project/tagadelic
Generuje mrak klíčových slov z daných tagů.
Taskbar
http://drupal.org/project/taskbar
Poskytuje panel nástrojů pro zobrazení bloků
a upozornění ve spodní části obrazovky.
Tribune
http://drupal.org/project/tribune
Poskytuje chatovací místnost pro hromadnou online komunikaci.
Tabulka 4.7 – Přehled vhodných sociálně orientovaných modulů
29
5 Nástroje sociálních sítí
Při vytváření sociálního software lze také využít sociální nástroje třetích stran.
Základ webu je možné postavit na některé z vhodných webových platforem (např. na
Drupalu) a doplnit o tyto pluginy a nástroje, které jsou poskytovány sociálními sítěmi
a dalšími službami.
Sociální sítě jsou největším představitelem sociálního software a zároveň fenoménem dnešního Internetu. Jejich úspěch spočívá v integraci více druhů socialware
dohromady. V současné době existují desítky sociálních sítí, mezi nejznámější a nejpoužívanější však patří Facebook, LinkedIn, Twitter a Google+.
Podíl aktivních uživatelů mezi
nejpoužívanějšími sociálními sítěmi
(duben 2012)
8%
Facebook
11%
12%
LinkedIn
69%
Twitter
Google+
Graf 5.1 – Podíl aktivních uživatelů mezi nejpoužívanějšími sociálními sítěmi
(zpracováno podle oficiálních statistik jednotlivých sociálních sítí 51)
5.1
Facebook
Sociální síť Facebook se od svého založení v roce 2004 velice rozšířila. V současné době je s ní propojeno více než sedm milionů aplikací a webových stránek. Velká
51
http://newsroom.fb.com/content/default.aspx?NewsAreaId=22, http://press.linkedin.com/about,
https://business.twitter.com/en/basics/what-is-twitter/, http://google-plus.com/5746/google-crosses-100million-active-users-in-march-2012-according-to-larry-page/
30
část aktivní internetové populace ji zná a umí používat. Z těchto důvodů je výhodné její
sociální prvky integrovat i do vlastního webu.
Nástroje Facebooku lze rozdělit do čtyř kategorií: aplikační programovací rozhraní Graph API, autentizační rozhraní, analytický nástroj Insights a sociální pluginy
[13]. Všem skupinám nástrojů se podrobněji věnují následující podkapitoly.
5.1.1
Aplikační programovací rozhraní Graph API
Jádrem Facebooku je tzv. sociální graf, který tvoří jednotliví uživatelé a jejich
propojení se vším, co s nimi souvisí. Aplikační programovací rozhraní Graph API představuje jednoduchý a konzistentní pohled na tento graf, jednotně reprezentuje objekty
v grafu (např. uživatele, fotografie, události a stránky) a spojení mezi nimi (např. přátelské vztahy a sdílený obsah). Toto rozhraní tedy umožňuje přistupovat k datům jakéhokoliv objektu na Facebooku.
Každý objekt v sociálním grafu má unikátní ID. Data lze vyžádat prostřednictvím URL adresy https://graph.facebook.com/ID, eventuálně následované konkrétní
požadovanou vlastností. Jako odpověď je vrácen objekt ve formátu JSON 52 [14]. V následujícím rámečku je uveden příklad získaných osobních dat:
{
"id": "1346004115",
"name": "Honza Havelka",
"first_name": "Honza",
"last_name": "Havelka",
"link": "http://www.facebook.com/people/Honza-Havelka/1346004115",
"gender": "male",
"locale": "es_LA"
}
Pomocí aplikačního programovacího rozhraní Graph API mohou být data ze sociálního grafu nejen získávána, ale také do něj vkládána nebo z něj mazána. Příkladem
může být vložení zprávy na uživatelovu zeď nebo smazání komentáře. S využitím všech
zmíněných funkcí lze tedy obsah webových stránek přizpůsobit konkrétnímu uživateli,
který tento osobnější přístup může vnímat pozitivně.
Implicitně umožňuje Graph API přistupovat pouze k veřejným datům, neboť
ochrana soukromí je nejvyšší prioritou Facebooku. Pro přístup k dodatečným informacím je nutné získat explicitní uživatelův souhlas. Po jeho obdržení již lze provést autorizovaný požadavek na soukromá data. Tento princip zamezuje úniku informací bez vědomí uživatele.
JSON (JavaScript Object Notation) je odlehčený formát pro výměnu dat, která mohou být organizována v polích nebo agregována v objektech.
52
31
Kromě výše uvedených URL dotazů lze k získání požadovaných dat využít také
dotazovací jazyk Facebooku, tzv. FQL (Facebook Query Language). Tento jazyk s SQL
syntaxí poskytuje v porovnání s URL dotazy několik výhod, včetně možnosti zahrnutí
více požadavků do jednoho dotazu. Obě tyto metody vyžadují určité programovací znalosti.
5.1.2
Autentizační rozhraní
Autentizační rozhraní Facebooku, dříve známé pod názvem Facebook Connect,
umožňuje uživatelům autentizaci prostřednictvím jejich účtu na Facebooku. Přínos pro
majitele webu spočívá ve schopnosti znát identitu těchto uživatelů a číst a zapisovat
jejich data pomocí Graph API. Integrace autentizačního rozhraní je tedy zároveň podmínkou pro využívání tohoto aplikačního programovacího rozhraní.
V současné době používá Facebook pro autentizaci a autorizaci OAuth 2.0. Tento otevřený standard, využívající výhradně HTTPS požadavky, implementuje autorizační model, ve kterém uživatel autorizuje aplikaci pro přístup k jeho privilegovaným údajům jeho jménem. Při úspěšné autentizaci obdrží aplikace přístupový token uživatele
pro další požadavky na Graph API.
Postup integrace autentizačního rozhraní je dostupný na webu pro vývojáře
Facebooku 53. Jedná se o vložení daného HTML kódu a javascriptu, připojení knihovny
JavaScript SDK s předpřipravenými funkcemi a registraci webu jako aplikaci na
Facebooku. App ID, získané v posledním kroku, je povinnou součástí vkládaného kódu.
5.1.3
Analytický nástroj Insights
Analytický nástroj Insights poskytuje metriky sdílení obsahu a demografické
údaje uživatelů Facebooku, kteří ve zvoleném časovém období navštívili web s integrovanými sociálními pluginy Facebooku a případně tyto prvky použili. Dále je možné
Insights využít k analýze Facebook stránky a aplikace na Facebooku. Podobnou funkcionalitu nabízí Google prostřednictvím nástroje Webmaster Tools, jehož zdrojem dat
jsou tlačítka +1, a Analytics, který však nepracuje se skutečnými osobami, ale pouze
s IP adresami počítačů.
Mezi demografické údaje poskytované nástrojem Insights patří pohlaví, věk,
země, město a jazyk. Dále jsou ke každé individuální stránce na webu k dispozici informace o počtu tzv. „lajků“, sdílení na Facebooku a komentářů. Všechna tato data jsou
přístupná prostřednictvím Graph API nebo webového rozhraní Insights 54.
53
54
http://developers.facebook.com/docs/guides/web/#login
http://www.facebook.com/insights/
32
Obrázek 5.1 – Ukázka demografických údajů poskytovaných nástrojem Insights
5.1.4
Sociální pluginy
Sociální pluginy pomáhají zvýšit aktivitu na webu. Výhodou je, že pro jejich integraci nejsou potřeba žádné programovací znalosti. Stačí pouze zkopírovat krátký
HTML kód (iframe), podle potřeby jej upravit a vložit do webové stránky.
Facebook v současné době nabízí jedenáct sociálních pluginů: Registration,
Login Button, Facepile, Like Box, Subscribe Button, Like Button, Send Button,
Comments, Live Stream, Activity Feed a Recommendations. HTML kód a případné
další instrukce pro jejich vložení lze nalézt na webu pro vývojáře Facebooku 55.
Registration
Plugin Registration umožňuje uživatelům zaregistrovat se na webu pomocí svého účtu na Facebooku. Tato registrace je navázána na registrační systém webu, kde je
uložena i databáze uživatelů.
Login Button
Plugin Login Button zobrazuje vedle přihlašovacího tlačítka Facebooku náhledy
profilových fotografií uživatelových přátel, kteří jsou registrovaní na webu.
Facepile
Plugin Facepile zobrazuje náhledy profilových fotografií uživatelových přátel,
kterým se líbí webová stránka nebo jsou registrovaní na webu.
55
http://developers.facebook.com/docs/plugins/
33
Like Box
Plugin Like Box umožňuje na webu propagovat Facebook stránku a zobrazovat
několik jejích nejnovějších příspěvků. Zároveň uživatelům umožňuje přímo zde vyjádřit, že se jim tato stránka líbí.
Obrázek 5.2 – Ukázka pluginu Like Box
Subscribe Button
Plugin Subscribe Button umožňuje uživatelům přihlásit se ke sledování veřejných statusů jiných uživatelů na Facebooku.
Like Button
Plugin Like Button umožňuje uživatelům vyjádřit, že se jim webová stránka líbí,
a nasdílet ji na svém profilu na Facebooku. Touto funkcí pomáhá zvýšit aktivitu na webu a rozšiřuje možnosti propagace.
Obrázek 5.3 – Ukázka pluginu Like Button
34
Send Button
Plugin Send Button umožňuje uživatelům poslat odkaz na webovou stránku
svým vybraným přátelům na Facebooku, skupinám nebo ve formě emailu na jakoukoliv
emailovou adresu. K odkazu je také možné doplnit komentář. Tento plugin tedy rozšiřuje možnosti propagace.
Obrázek 5.4 – Ukázka pluginu Send Button
Comments
Plugin Comments umožňuje uživatelům okomentovat webovou stránku a přečíst
si názory ostatních. Touto funkcí pomáhá zvýšit aktivitu na webu.
Obrázek 5.5 – Ukázka pluginu Comments
35
Live Stream
Plugin Live Stream umožňuje uživatelům komentovat probíhající událost v reálném čase. Na rozdíl od pluginu Comments zde dochází k automatické aktualizaci obsahu při novém příspěvku.
Activity Feed
Plugin Activity Feed zobrazuje uživatelům nedávnou aktivitu (sdílení a komentování) jejich přátel na webu. Obsah se liší v závislosti na tom, zda je uživatel přihlášený na Facebooku nebo ne. Tento plugin tedy podporuje vzájemnou informovanost
o aktivitě členů komunity.
Obrázek 5.6 – Ukázka dvou zobrazení pluginu Activity Feed
Recommendations
Plugin Recommendations zobrazuje uživatelům doporučení na stránky webu,
které by je mohly zaujmout. Obsah se liší v závislosti na tom, zda je uživatel přihlášený
na Facebooku nebo ne.
5.2
LinkedIn
LinkedIn je profesně zaměřená sociální síť, která je využívána k výměně informací, nápadů a příležitostí. V současné době nabízí k integraci do webu devět pluginů:
Apply, Share, Member Profile, Company Insider, Company Profile, Full Member
Profile, Recommend, Jobs You May Be Interested In a Follow Company [15]. HTML
36
kód a případné další instrukce pro jejich vložení lze nalézt na webu pro vývojáře sítě
LinkedIn 56.
Apply
Plugin Apply umožňuje uživatelům ucházet se o zaměstnání pomocí svého profilu na síti LinkedIn.
Share
Plugin Share umožňuje uživatelům vyjádřit, že se jim webová stránka líbí,
a nasdílet ji odbornému publiku na síti LinkedIn. Touto funkcí pomáhá zvýšit aktivitu
na webu a rozšiřuje možnosti propagace.
Member Profile
Plugin Member Profile na webu zobrazuje osobní profil na síti LinkedIn v souhrnné podobě.
Company Insider
Plugin Company Insider na webu zobrazuje interní informace o firmě na síti
LinkedIn.
Company Profile
Plugin Company Profile na webu zobrazuje firemní profil na síti LinkedIn
v souhrnné podobě.
Full Member Profile
Plugin Full Member Profile na webu zobrazuje osobní profil na síti LinkedIn
v detailní podobě.
Recommend
Plugin Recommend umožňuje uživatelům doporučit produkt nebo službu odbornému publiku na síti LinkedIn.
Jobs You May Be Interested In
Plugin Jobs You May Be Interested In na webu zobrazuje volné pracovní pozice
firmy na síti LinkedIn.
56
http://developer.linkedin.com/plugins
37
Follow Company
Plugin Follow Company umožňuje uživatelům stát se příznivci firemní stránky
na síti LinkedIn a přihlásit se tak ke sledování jejích statusů.
5.3
Twitter
Twitter je mikroblogovací sociální síť, která je založena na posílání a čtení uživatelských textových příspěvků maximální délky 140 znaků. V současné době nabízí
k integraci do webu osm pluginů: Share A Link, Follow, Hashtag, Mention, Profile,
Search, Faves a List [16]. HTML kód a případné další instrukce pro jejich vložení lze
nalézt na webu zdrojů sítě Twitter 57.
Share A Link
Plugin Share A Link umožňuje uživatelům vyjádřit, že se jim webová stránka líbí, a nasdílet ji na svém profilu na síti Twitter. Touto funkcí pomáhá zvýšit aktivitu na
webu a rozšiřuje možnosti propagace.
Follow
Plugin Follow umožňuje uživatelům přihlásit se ke sledování příspěvků jiných
uživatelů na síti Twitter.
Hashtag
Plugin Hashtag umožňuje uživatelům zobrazit tematické příspěvky na síti
Twitter.
Mention
Plugin Mention umožňuje uživatelům poslat příspěvek na profil jiného uživatele
na síti Twitter.
Profile
Plugin Profile na webu zobrazuje nedávné příspěvky uživatele na síti Twitter.
Search
Plugin Search na webu zobrazuje příspěvky na síti Twitter, které odpovídají zadanému dotazu.
Faves
Plugin Faves na webu zobrazuje oblíbené příspěvky uživatele na síti Twitter.
57
https://twitter.com/about/resources
38
List
Plugin List na webu zobrazuje nedávné příspěvky uživatelů, kteří jsou uvedeni
v seznamu jiného uživatele na síti Twitter.
5.4
Google+
Google+ je nejmladší popisovaná sociální síť. Byla založena v červnu 2011 a od
té doby se počet registrovaných uživatelů rychle zvyšuje. Zároveň je tato síť rozšiřována o další funkce. V současné době nabízí k integraci tři pluginy: +1 Button, Badge
a Share [17]. HTML kód a případné další instrukce pro jejich vložení lze nalézt na webu
pro vývojáře sítě Google+ 58.
+1 Button
Plugin +1 Button umožňuje uživatelům vyjádřit, že se jim webová stránka líbí,
a poslat odkaz svým vybraným přátelům na síti Google+, kruhům nebo ve formě emailu
na jakoukoliv emailovou adresu. K odkazu je také možné doplnit komentář. Tento
plugin tedy pomáhá zvýšit aktivitu na webu a rozšiřuje možnosti propagace.
Obrázek 5.7 – Ukázka pluginu +1 Button
Badge
Plugin Badge umožňuje na webu propagovat Google+ stránku nebo osobní profil na této síti.
Share
Plugin Share umožňuje uživatelům poslat odkaz na webovou stránku svým vybraným přátelům na síti Google+, kruhům nebo ve formě emailu na jakoukoliv emailovou adresu. K odkazu je také možné doplnit komentář. Tento plugin tedy rozšiřuje
možnosti propagace.
5.5
Integrace sociálních nástrojů třetích stran
Sociální nástroje třetích stran lze do webu integrovat dvěma způsoby. Kromě
přímého vložení HTML kódu je možné využít příslušných doplňkových modulů, které
většina porovnávaných webových platforem nabízí a které vložení kódu zajistí. Výhoda
druhého řešení je zřejmá u sociálních nástrojů, které nachází uplatnění na velkém množ58
https://developers.google.com/+/
39
ství stránek webu (např. Facebook Like Button, Facebook Comments a Google +1
Button). Ty mohou být pomocí zmíněných modulů automaticky vloženy do všech vybraných typů obsahu (například do všech článků). Není tedy nutné manuálně vkládat
HTML kód na každou stránku.
V následujícím textu jsou popsány čtyři doplňky pro zvolenou platformu Drupal,
které integrují sociální nástroje všech čtyř nejpoužívanějších sociálních sítí: Facebook
social plugins integration, LinkedIn Share Button, Twitter Profile Widget a Google +1
Plus One and Badge.
5.5.1
Facebook social plugins integration
Webová stránka modulu: http://drupal.org/project/fb_social
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-1.0-beta9
Datum vydání modulu: 20. 9. 2011
Vlastní doplňkové moduly: –
Související moduly: –
Tabulka 5.1 – Základní údaje o modulu Facebook social plugins integration
Modul Facebook social plugins integration do webu integruje sociální pluginy
Facebooku. V současné době jsou implementovány všechny nabízené pluginy kromě
Registration a Login Button. Pro web INRI road bylo využito pět z nich: Like Button,
Send Button, Comments, Like Box a Activity Feed.
Alternativou tohoto doplňku je modul Drupal for Facebook, který byl již zmíněn
v podkapitole 4.3.6. Vzhledem k snadnému nastavení a zprovoznění byl však využit
modul Facebook social plugins integration.
5.5.2
LinkedIn Share Button
Webová stránka modulu: http://drupal.org/project/linkedinbutton
Podporovaná vydání Drupalu: 6.x
Testované vydání modulu: 6.x-1.0-beta1
Datum vydání modulu: 1. 12. 2010
Vlastní doplňkové moduly: –
Související moduly: –
Tabulka 5.2 – Základní údaje o modulu LinkedIn Share Button
40
Modul LinkedIn Share Button integruje do webu plugin Share sociální sítě
LinkedIn. Protože se však jedná o profesně zaměřenou síť, neměl by tento plugin na
webu INRI road využití, a tak modul přidán nebyl. Ostatní pluginy sítě LinkedIn nejsou
dosud žádnými doplňky implementovány.
5.5.3
Twitter Profile Widget
Webová stránka modulu: http://drupal.org/project/twitter_profile_widget
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-1.6
Datum vydání modulu: 6. 10. 2011
Vlastní doplňkové moduly: –
Související moduly: –
Tabulka 5.3 – Základní údaje o modulu Twitter Profile Widget
Modul Twitter Profile Widget integruje plugin Profile sociální sítě Twitter.
Vzhledem k tomu, že jde o mikroblogovací síť se specifickou komunitou uživatelů, ani
tento plugin by nebyl na webu INRI road využíván, a proto modul doplněn nebyl. Další
pluginy sítě Twitter jsou implementovány doplňky Tweet Button a Twitter search.
5.5.4
Google +1 Plus One and Badge
Webová stránka modulu: http://drupal.org/project/google_plusone
Podporovaná vydání Drupalu: 6.x, 7.x
Testované vydání modulu: 6.x-1.1
Datum vydání modulu: 18. 12. 2011
Vlastní doplňkové moduly: –
Související moduly: Google+, Service Links, Wibiya
Tabulka 5.4 – Základní údaje o modulu Google +1 Plus One and Badge
Modul Google +1 Plus One and Badge integruje pluginy +1 Button a Badge sociální sítě Google+. Pro web INRI road byl využit první z nich. Plugin Share není dosud
žádnými doplňky implementován.
41
6 Závěr
Tato diplomová práce se zabývala platformami pro vývoj sociálního software.
Cílem bylo prozkoumat jeho problematiku, porovnat různé webové platformy a nalézt
vhodné konečné nástroje. Získané poznatky byly využity k rozšíření stávající webové
prezentace křesťanské studentské organizace INRI road o nástroje podporující komunitu
uživatelů a její budování. Po úvodním představení pojmu sociální software a jeho charakteristik byly popsáno a porovnáno osm dostupných nekomerčních webových platforem pro jeho vývoj. Pro srovnání byla uvedena také jedna placená alternativa.
Webové stránky INRI road jsou postavené na redakčním systému Drupal.
K provedení praktické části práce se tedy nabízela tři možná řešení. Bylo možné se rozhodnout vytvořit nový web postavený na jiné platformě, ponechat stávající systém
a doplnit do něj další sociálně zaměřené moduly, nebo využít sociálních nástrojů třetích
stran. Zvolené řešení muselo splňovat tři požadavky. Muselo být bezplatné, nabízet českou lokalizaci a podporovat konkrétní sociální nástroje pro zajištění cílové funkcionality. Vzhledem k tomu, že stávající systém Drupal byl jednou ze tří platforem, které tyto
podmínky splnily, rozhodl jsem se pro druhou uvedenou možnost řešení.
Web byl také propojen pomocí několika pluginů se sociálními sítěmi Facebook
a Google+ (přímo prostřednictvím Drupalu, který jejich integraci umožňuje). Všechny
doplněné sociální prvky (moduly a pluginy) byly popsány v textu práce. Kromě nich
byly představeny další použitelné nástroje třetích stran (zejména sociální sítě Facebook)
a uveden přehled dalších dvaceti nejčastěji využívaných sociálně orientovaných modulů
pro Drupal. Spolu s doplněnými, souvisejícími, alternativními a otestovanými doplňky
bylo celkem představeno čtyřicet čtyři modulů a dalších přibližně padesát nevyhovujících prozkoumáno (jedná se o doplňky, které jsou komerční nebo nepodporují šestou
verzi Drupalu).
Během své práce jsem se nesetkal s žádnými většími komplikacemi, pouze bylo
potřeba některé doplněné moduly pro správnou funkcionalitu opravit a vyladit (např.
modul QTChat). Také jsem několik doplňků vylepšil o další funkce (např. podpora
emotikonů, rozpoznávání odkazů, blok zobrazující tři náhodné fotografie z naposledy
vytvořeného fotoalba a zobrazování profilových fotografií sociální sítě Facebook). Provedené úpravy jsem nabídl autorům modulů na příslušném diskusním fóru.
Mým největším osobním přínosem je prozkoumání redakčního systému Drupal
jako platformy pro vývoj sociálního software, dále také nalezení jiných vhodných konečných nástrojů. Weboví administrátoři, kteří uvažují o vytvoření sociálně zaměřeného
webu nebo o jeho doplnění takovými nástroji, se mohou touto prací inspirovat.
42
Web INRI road byl tedy rozšířen o nové funkce. Během šesti měsíců provozu již
lze pozorovat úspěšnost těchto úprav. Zvýšila se aktivita na webu, čtenost článků, měsíční počet registrovaných uživatelů a komentářů pod články, zlepšila se propagace
a také vzájemná informovanost o aktivitě členů komunity. Tento výsledek splňuje má
očekávání.
43
7 Literatura a zdroje
[1]
GOVERNOR, James, Dion HINCHCLIFFE a Duane NICKULL. Web 2.0
Architectures. Sebastopol: O’Reilly Media, 2009, 274 s. ISBN 978-0596514433.
[2]
DINUCCI, Darcy. Fragmented Future. Print. 1999, volume 53, issue 4, s. 32.
Dostupné také z WWW: <http://darcyd.com/fragmented_future.pdf>.
[3]
O'REILLY, Tim. What Is Web 2.0: Design Patterns and Business Models for the
Next Generation of Software [online]. 2005 [cit. 2012-03-13]. Dostupné z WWW:
<http://oreilly.com/web2/archive/what-is-web-20.html>.
[4]
FARKAS, Meredith G. Social Software in Libraries: Building Collaboration,
Communication, and Community Online. Medford: Information Today, 2007,
344 s. ISBN 978-1-57387-275-1.
[5]
MALÝ, Martin. Moderní internetové autentizační metody [online]. 2008
[cit. 2012-03-28]. Dostupné z WWW: <http://zdrojak.root.cz/clanky/moderniinternetove-autentizacni-metody/>.
[6]
MALÝ, Martin. Porovnání moderních autentizačních metod [online]. 2008
[cit. 2012-03-28]. Dostupné z WWW: <http://zdrojak.root.cz/clanky/porovnanimodernich-autentizacnich-metod/>.
[7]
LEBLANC, Jonathan. Programming Social Applications: Building Viral
Experiences with OpenSocial, OAuth, OpenID, and Distributed Web Frameworks.
Sebastopol: O’Reilly Media, 2011, 544 s. ISBN 978-1-449-39491-2.
[8]
VYLEŤAL, Martin. Uspěje OpenID v českém kabátu? [online]. 2010
[cit. 2012-03-28]. Dostupné z WWW: <http://www.lupa.cz/clanky/uspeje-openidv-ceskem-kabatu/>.
[9]
PETERKA, Jiří. Jak funguje MojeID? [online]. 2010 [cit. 2012-03-28]. Dostupné
z WWW: <http://www.lupa.cz/clanky/jak-funguje-mojeid/>.
[10] BELL, Gavin. Building Social Web Applications: Establishing Community at the
Heart of Your Site. Sebastopol: O’Reilly Media, 2009, 409 s.
ISBN 978-0-596-51875-2.
44
[11] Drupal Documentation [online]. 2012 [cit. 2012-04-24]. Dostupné z WWW:
<http://drupal.org/documentation>.
[12] PEACOCK, Michael. Drupal 6 Social Networking. Birmingham: Packt
Publishing, 2009, 312 s. ISBN 978-1-847196-10-1.
[13] Facebook for Websites [online]. 2012 [cit. 2012-05-08]. Dostupné z WWW:
<http://developers.facebook.com/docs/guides/web/>.
[14] STAY, Jesse. Facebook Application Development For Dummies. Indianapolis:
Wiley Publishing, 2011, 408 s. ISBN 978-0-470-76873-0.
[15] LinkedIn Plugins [online]. 2012 [cit. 2012-05-22]. Dostupné z WWW:
<http://developer.linkedin.com/plugins>.
[16] Twitter Resources [online]. 2012 [cit. 2012-05-22]. Dostupné z WWW:
<https://twitter.com/about/resources>.
[17] Google+ Platform [online]. 2012 [cit. 2012-05-22]. Dostupné z WWW:
<https://developers.google.com/+/>.
45
8 Přílohy
Příloha A
Zdrojový kód optimalizace dotazu pro získání seznamu online přátel
v modulu QTChat
Příloha B
Zdrojový kód pro podporu emotikonů v modulu QTChat
Příloha C
Zdrojový kód pro rozpoznávání odkazů v modulu QTChat
Příloha D
Zdrojový kód bloku pro zobrazení náhledů tří náhodných fotografií
z naposledy vytvořeného fotoalba v modulu Node Gallery
Příloha E
Fragmenty zdrojového kódu bloku pro zobrazení seznamu přátel na
sociální síti Facebook formou náhledů profilových fotografií
v submodulu Facebook Friends Invite
Všechny tyto přílohy jsou součástí elektronické přílohy, která obsahuje jádro
redakčního systému Drupal, včetně doplněných a upravených modulů. Seznam všech
upravených souborů je uveden v souboru upravy.txt. Jednotlivé úpravy jsou označeny
komentářem /* EDIT */.
46
Příloha A
Zdrojový kód optimalizace dotazu pro získání seznamu online přátel v modulu
QTChat
Původní dotaz
Upravený soubor: drupal\sites\all\modules\qtc\qtc.module
$sql = "SELECT
users.uid AS uid,
users.name AS name,".
$settings['sql_realname_select'] ."
CASE qtc_stats.status
WHEN 0 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 4
WHEN 1 THEN (". $settings['time_current'] .
" - users.access) < ". $settings['time_diff'] ."
ELSE (". $settings['time_current'] .
" - users.access) < ". $settings['time_diff'] ."
END AS online_status,
CASE qtc_stats.logout
WHEN 1 THEN 1
WHEN 0 THEN (". $settings['time_current'] .
" - users.access) > ". $settings['time_diff'] ."
ELSE (". $settings['time_current'] .
" - users.access) > ". $settings['time_diff'] ."
END AS qtc_stats_logout
FROM {users} users
LEFT JOIN {user_relationships} user_relationships ON
users.uid = user_relationships.requestee_id
LEFT JOIN {qtc_stats} qtc_stats ON qtc_stats.uid = users.uid "
. $settings['sql_realname_select_join'] ."
WHERE (
(users.uid <> 0)) AND
((users.uid IN (SELECT ur.requester_id FROM
{user_relationships} ur WHERE ur.requestee_id = %d AND
ur.approved = 1 AND ur.rtid IN (".
implode(',', $settings['flags_user_relationships']) .")))
OR
(users.uid IN (SELECT ur.requestee_id FROM
{user_relationships} ur WHERE ur.requester_id = %d AND
ur.approved = 1 AND ur.rtid IN (".
implode(',', $settings['flags_user_relationships']) .")))
)";
47
Optimalizovaný dotaz
$sql = "SELECT
users.uid AS uid,
users.name AS name,".
$settings['sql_realname_select'] ."
CASE qtc_stats.status
WHEN 0 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 4
WHEN 1 THEN (". $settings['time_current'] .
" - users.access) < ". $settings['time_diff'] ."
ELSE (". $settings['time_current'] .
" - users.access) < ". $settings['time_diff'] ."
END AS online_status,
CASE qtc_stats.logout
WHEN 1 THEN 1
WHEN 0 THEN (". $settings['time_current'] .
" - users.access) > ". $settings['time_diff'] ."
ELSE (". $settings['time_current'] .
" - users.access) > ". $settings['time_diff'] ."
END AS qtc_stats_logout
FROM {users} users
INNER JOIN (SELECT ur.requestee_id FROM {user_relationships}
ur WHERE ur.requester_id = %d AND ur.approved = 1 AND
ur.rtid IN (".
implode(',', $settings['flags_user_relationships']) .
")) user_relationships ON
users.uid = user_relationships.requestee_id
LEFT JOIN {qtc_stats} qtc_stats ON qtc_stats.uid = users.uid "
. $settings['sql_realname_select_join'] ."
WHERE (users.uid <> 0)";
Optimalizace dotazu spočívala v nahrazení levého vnějšího spojení za vnitřní
spojení a záměně jeho pravého parametru (upravená část je zvýrazněna červeně).
Původní dotaz nejprve připojil vztahy všech uživatelů a následně výsledek omezil na
přátele daného uživatele. Optimalizovaný dotaz nejprve vyselektuje přátele daného uživatele a teprve ty připojí. Tímto způsobem vznikne spojená relace s menším počtem
záznamů a celý dotaz tak bude proveden rychleji.
48
Příloha B
Zdrojový kód pro podporu emotikonů v modulu QTChat
Historie chatu (PHP)
Upravený soubor: drupal\sites\all\modules\qtc\qtc.module
function qtc_convertToSmileys($message) {
global $base_url;
$smileysDir = $base_url . '/' . drupal_get_path('module', 'qtc') .
'/img/smileys';
$smileys = array(
"O:)"
=> "angel.gif",
"O:-)"
=> "angel.gif",
"o.O"
=> "confused.gif",
"O.o"
=> "confused.gif",
":'("
=> "cry.jpg",
":'-("
=> "cry.jpg",
"3:)"
=> "devil.gif",
"3:-)"
=> "devil.gif",
"&gt;:(" => "grumpy.gif",
":("
=> "frown.gif",
"&gt;:-(" => "grumpy.gif",
":-("
=> "frown.gif",
":["
=> "frown.gif",
"=("
=> "frown.gif",
"&gt;:O" => "upset.gif",
":O"
=> "gasp.jpg",
"&gt;:-O" => "upset.gif",
":-O"
=> "gasp.jpg",
"&gt;:o" => "upset.gif",
":o"
=> "gasp.jpg",
"&gt;:-o" => "upset.gif",
":-o"
=> "gasp.jpg",
"8)"
=> "glasses.jpg",
"8-)"
=> "glasses.jpg",
"B)"
=> "glasses.jpg",
"B-)"
=> "glasses.jpg",
":D"
=> "grin.jpg",
":-D"
=> "grin.jpg",
"=D"
=> "grin.jpg",
"&lt;3"
=> "heart.gif",
"♥"
=> "heart.gif",
"^_^"
=> "kiki.gif",
":*"
=> "kiss.jpg",
":-*"
=> "kiss.jpg",
":v"
=> "pacman.jpg",
":)"
=> "smile.jpg",
":-)"
=> "smile.jpg",
":]"
=> "smile.jpg",
"=)"
=> "smile.jpg",
"-_-"
=> "squint.gif",
"8|"
=> "sunglasses.gif",
"8-|"
=> "sunglasses.gif",
49
"B|"
"B-|"
":P"
":-P"
":p"
":-p"
"=P"
" :/"
":-/"
":\\"
":-\\"
";)"
";-)"
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
"sunglasses.gif",
"sunglasses.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"unsure.jpg",
"unsure.jpg",
"unsure.jpg",
"unsure.jpg",
"wink.jpg",
"wink.jpg"
);
foreach ($smileys as $smiley => $filename) {
$message = str_replace($smiley,
"<img src=\"$smileysDir/$filename\" alt=\"\"
class=\"qtc-smile\" />", $message);
}
return $message;
}
Chatovací okno (JavaScript)
Upravený soubor: drupal\sites\all\modules\qtc\js\qtc.min.js
function replaceAll(substr, newstring, text) {
return text.split(substr).join(newstring);
}
function convertToSmileys(message) {
var smileysDir = Drupal.settings.qtc.baseUrl +
'/sites/all/modules/qtc/img/smileys';
var smileys
"O:)"
"O:-)"
"o.O"
"O.o"
":'("
":'-("
"3:)"
"3:-)"
"&gt;:("
":("
"&gt;:-("
":-("
":["
"=("
"&gt;:O"
":O"
=
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
{
"angel.gif",
"angel.gif",
"confused.gif",
"confused.gif",
"cry.jpg",
"cry.jpg",
"devil.gif",
"devil.gif",
"grumpy.gif",
"frown.gif",
"grumpy.gif",
"frown.gif",
"frown.gif",
"frown.gif",
"upset.gif",
"gasp.jpg",
50
"&gt;:-O"
":-O"
"&gt;:o"
":o"
"&gt;:-o"
":-o"
"8)"
"8-)"
"B)"
"B-)"
":D"
":-D"
"=D"
"&lt;3"
"♥"
"^_^"
":*"
":-*"
":v"
":)"
":-)"
":]"
"=)"
"-_-"
"8|"
"8-|"
"B|"
"B-|"
":P"
":-P"
":p"
":-p"
"=P"
" :/"
":-/"
":\\"
":-\\"
";)"
";-)"
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
"upset.gif",
"gasp.jpg",
"upset.gif",
"gasp.jpg",
"upset.gif",
"gasp.jpg",
"glasses.jpg",
"glasses.jpg",
"glasses.jpg",
"glasses.jpg",
"grin.jpg",
"grin.jpg",
"grin.jpg",
"heart.gif",
"heart.gif",
"kiki.gif",
"kiss.jpg",
"kiss.jpg",
"pacman.jpg",
"smile.jpg",
"smile.jpg",
"smile.jpg",
"smile.jpg",
"squint.gif",
"sunglasses.gif",
"sunglasses.gif",
"sunglasses.gif",
"sunglasses.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"tongue.gif",
"unsure.jpg",
"unsure.jpg",
"unsure.jpg",
"unsure.jpg",
"wink.jpg",
"wink.jpg"
}
for (var smiley in smileys) {
message = replaceAll(smiley, '<img src="' + smileysDir + '/' +
smileys[smiley] + '" alt="" class="qtc-smile" />', message);
}
return message;
}
51
Příloha C
Zdrojový kód pro rozpoznávání odkazů v modulu QTChat
Historie chatu (PHP)
Upravený soubor: drupal\sites\all\modules\qtc\qtc.module
function qtc_convertToHyperlinks($message) {
$pattern = "#(http://|ftp://|(www\.))([\w\-]*\.[\w\-\.]*
([/?][^\s]*)?)#ie";
$replacement = "'<a href=\"'.('\\1'=='www.'?'http://':'\\1').
'\\2\\3\" target=\"_blank\">'.
('\\1'=='www.'?'':'\\1').'\\2\\3</a>'";
return preg_replace($pattern, $replacement, $message);
}
Chatovací okno (JavaScript)
Upravený soubor: drupal\sites\all\modules\qtc\js\qtc.min.js
function convertToHyperlinks(message) {
var pattern = /(http:\/\/|(www\.))([\w\-]*\.[\w\-\.]*
([\/?][^\s]*)?)/gi;
return message.replace(pattern, "<a href=\"http://$2$3\"
target=\"_blank\">http://$2$3</a>");
}
52
Příloha D
Zdrojový kód bloku pro zobrazení náhledů tří náhodných fotografií z naposledy
vytvořeného fotoalba v modulu Node Gallery
Upravený soubor: drupal\sites\all\modules\node_gallery\node_gallery_block.tpl.php
$gid = db_result(db_query("SELECT nid FROM {node}
type='node_gallery_gallery' AND status='1' ORDER
1"));
$gallery_title = db_result(db_query("SELECT title
type='node_gallery_gallery' AND status='1' ORDER
1"));
WHERE
BY nid DESC LIMIT
FROM {node} WHERE
BY nid DESC LIMIT
if ($gid!='') {
$result = db_query("SELECT nid FROM {node_gallery_images} WHERE
gid=$gid");
$photos = array();
while ($row=db_fetch_array($result)) {
$photos[] = $row['nid'];
}
$photos_count = count($photos);
if ($photos_count>2) {
$photo1_id=rand(0,$photos_count-1);
do {
$photo2_id=rand(0,$photos_count-1);
} while ($photo2_id==$photo1_id);
do {
$photo3_id=rand(0,$photos_count-1);
} while ($photo3_id==$photo2_id || $photo3_id==$photo1_id);
$photo1_nid = $photos[$photo1_id];
$photo2_nid = $photos[$photo2_id];
$photo3_nid = $photos[$photo3_id];
$photo1_fid=db_result(db_query("SELECT
field_node_gallery_image_fid FROM
{content_type_node_gallery_image} WHERE nid=$photo1_nid"));
$photo2_fid=db_result(db_query("SELECT
field_node_gallery_image_fid FROM
{content_type_node_gallery_image} WHERE nid=$photo2_nid"));
$photo3_fid=db_result(db_query("SELECT
field_node_gallery_image_fid FROM
{content_type_node_gallery_image} WHERE nid=$photo3_nid"));
$photo1_file_name=db_result(db_query("SELECT filename FROM
{files} WHERE fid=$photo1_fid"));
$photo2_file_name=db_result(db_query("SELECT filename FROM
{files} WHERE fid=$photo2_fid"));
53
$photo3_file_name=db_result(db_query("SELECT
{files} WHERE fid=$photo3_fid"));
$photo1_file_path=db_result(db_query("SELECT
{files} WHERE fid=$photo1_fid"));
$photo2_file_path=db_result(db_query("SELECT
{files} WHERE fid=$photo2_fid"));
$photo3_file_path=db_result(db_query("SELECT
{files} WHERE fid=$photo3_fid"));
filename FROM
filepath FROM
filepath FROM
filepath FROM
$photo1_block_thumbnail = "http://www.inriroad.cz/sites/
default/files/imagecache/
node-gallery-block-thumbnail/
gallery/$photo1_file_name";
$photo2_block_thumbnail = "http://www.inriroad.cz/sites/
default/files/imagecache/
node-gallery-block-thumbnail/
gallery/$photo2_file_name";
$photo3_block_thumbnail = "http://www.inriroad.cz/sites/
default/files/imagecache/
node-gallery-block-thumbnail/
gallery/$photo3_file_name";
$photo1_full_display = "http://www.inriroad.cz/sites/default/
files/imagecache/
node-gallery-full-display/gallery/
$photo1_file_name";
$photo2_full_display = "http://www.inriroad.cz/sites/default/
files/imagecache/
node-gallery-full-display/gallery/
$photo2_file_name";
$photo3_full_display = "http://www.inriroad.cz/sites/default/
files/imagecache/
node-gallery-full-display/gallery/
$photo3_file_name";
if (!file_exists($photo1_block_thumbnail)) {
imagecache_generate_image('node-gallery-block-thumbnail',
$photo1_file_path);
}
if (!file_exists($photo2_block_thumbnail)) {
imagecache_generate_image('node-gallery-block-thumbnail',
$photo2_file_path);
}
if (!file_exists($photo3_block_thumbnail)) {
imagecache_generate_image('node-gallery-block-thumbnail',
$photo3_file_path);
}
if (!file_exists($photo1_full_display)) {
imagecache_generate_image('node-gallery-full-display',
$photo1_file_path);
54
if (!file_exists($photo2_full_display)) {
imagecache_generate_image('node-gallery-full-display',
$photo2_file_path);
}
if (!file_exists($photo3_full_display)) {
imagecache_generate_image('node-gallery-full-display',
$photo3_file_path);
}
$gallery_url = 'http://www.inriroad.cz/'.
db_result(db_query("SELECT dst FROM {url_alias} WHERE
src='node/$gid'"));
echo "<div style=\"text-align: center;\">";
echo "<a href=\"$photo1_full_display\"
rel=\"lightbox[nahledy]\"><img
src=\"$photo1_block_thumbnail\" alt=\"\" /></a>";
echo "<a href=\"$photo2_full_display\"
rel=\"lightbox[nahledy]\"><img
src=\"$photo2_block_thumbnail\" alt=\"\"
style=\"margin-left: 4px; margin-right: 4px;\" /></a>";
echo "<a href=\"$photo3_full_display\"
rel=\"lightbox[nahledy]\"><img
src=\"$photo3_block_thumbnail\" alt=\"\" /></a>";
echo "</div>";
echo "<div style=\"text-align: center; padding-top: 5px;\">";
echo "<a href=\"$gallery_url\">$gallery_title</a>";
echo "</div>";
}
}
55
Příloha E
Fragmenty zdrojového kódu bloku pro zobrazení seznamu přátel na sociální síti
Facebook formou náhledů profilových fotografií v submodulu Facebook Friends
Invite
Upravený soubor: drupal\sites\all\modules\fbconnect\fbconnect_invite\fbconnect_invite.module
function getFBProfilePicture($fb_uid) {
$facebook = facebook_client();
$fb_user = $facebook->api("/$fb_uid");
$fb_user_name = $fb_user['name'];
$fb_user_link = $fb_user['link'];
return "<a href=\"$fb_user_link\" target=\"_blank\">
<img src=\"http://graph.facebook.com/$fb_uid/picture?type=square\"
alt=\"$fb_user_name\" title=\"$fb_user_name\" /></a>";
}
…
$friends = fbconnect_get_connected_friends($fbuid);
if ($friends) {
$content = '<div id="fb-friends">';
for ($i = 0; $i < count($friends) && $i < 9 ; $i++) {
$content .= getFBProfilePicture($friends[$i]);
}
$content .= '</div>';
$content .= '<div style="clear: both;"></div>';
if (count($friends) > 9) {
$content .= '<p id="fb-friends-show-all"
onclick="showAllFriends()">Zobrazit všechny přátele</p>';
$content .= '<div id="fb-next-friends"
style="display: none;">';
for ($i = 9; $i < count($friends); $i++) {
$content .= getFBProfilePicture($friends[$i]);
}
$content .= '</div>';
$content .= '<div style="clear: both;"></div>';
}
}
…
56
Download

Platformy pro vývoj sociálního software