O projektu
Dokumentace k projektu fotogalerie vypracovaného jako semestrální práce k
předmětu TW1 na FEL ČVUT.
Systém je založen na PHP Frameworku
CodeIgniter. Jeho dokumentace je
zde. Dokumentace zdrojového kódu, který byl vystaven nad CodeIgniter
standardní třídy je
zde. Některé základní třídy jsem ještě zvlášt poupravil aby vyhovovali
potřebám galerie, konkrétně uživatelským právům a omezením.
Projekt není nahrán na server webdav protože jeho vlastnosti
neumožňovali funkčnost projektu. Jednalo se o potřebu vytvářet libovolné
adresáře a poté mít možnost je smazat. Což lze se zapnutým PHP Safe Mode
pouze při vytvoření adresáře pomocí vrstvy FTP, kterou galerie také
podporuje, ale na webdavu nejsou bohužel dostupné ftp účty. Proto jsem
zprovoznil instanci na externím serveru.
Domovská stránka projektu
Webové stránky obsahují jak uživatelské (frontend) tak administrační (backend)
rozhraní. Uživatelská jména jsou shodná pro obě rozhraní. Přístup do
administrace pro uživatele lze nastavovat z backendu.
Backend
Přístup do administračního rozhraní
Navigace v galerii je dostupná z horního menu. Menu obsahuje také položku
Zpět, která vrací o jednu pozici nazpět a položku Historie, která zobrazuje
odkazy na posledních 10 provedených akcí. Tyto funkce jsou dostupné i bez
aktivovaného javascriptu.
Po klinutí na položku Odhlásit je uživatel odhlášen z backendu i
frontendu. Historie po odhlášení zaniká.
Uživatelé jsou mají nastavena rozdílná práva. Nastavení práv je prováděno
pomocí uživatelských skupin a uživatelských rolí.
Administrace obsahuje šest editovatelných entit. Všechny jsou dostupné z
horního menu. Vyjímku tvoří správa fotografií, ke které je přístup z
galerie. Práce s každou entitou je rozdělena na čtyři základní operace. Jsou
jimi listování položkami, vkládání, zobrazení, editace a mazání. V dalších
odstavcích tyto operace spolu s několika dalšími, které jsou specifické jen
pro určité entity, popíši.
Operace
Listování
K listování je přístup přímo z horního menu kliknutím na požadovanou entitu.
Jsou zde v tabulkovém režimu vypsány všechny dostupné položky. Položky jsou
jednoznačně identifikovány několika sloupci popisujícími jejich vlastnosti.
Vždy v prvním sloupci jsou položky očíslovány pro lepší orientaci. Poslední
sloupec označený Akce obsahuje operace, které jsou u položky dostupné.
Entity jsou vzájemně provázané a je možné se z operace listování dostat na
zobrazení jiné entity pokud je uvedena ve vypsaných sloupcích. Listování je
omezeno na zobrazení deseti položek na stránku. V levém dolním rohu, pokud
je položek více než deset, je možnost posunovat se na další stránky. Po
odchodu na jinou entitu nebo zvolení nějaké operace a následovném vrácení se
do listování si aplikace pamatuje posledně zobrazenou stránku. Vyjímkou je
listování v entitě fotografií, které není rozděleno na stránky, ale je
rozděleno pomocí galerií, tzn. že všechny obrázky od jedné galerie jsou
vypsány v jednom seznamu.
Vkládání
Operaci vkládání lze vyvolat z operace listování příslušné entity. Vkládání
obsahuje formulář s položkam, které popisují entitu. Povinné položky jsou
označeny znakem '*'. Pro lepší práci je vhodné mít zapnutý javascript, který
dovoluje okamžitou kontrolu zapsaných informaci u položek, které mají nějaká
integritní omezení. S vypnutým javascriptem se validace provádí až při
znovunačtení stránky, což trvá nějakou dobu. Tlačítkem Zpět se vrátíte na
operaci listování. Tlačítkem Uložit položku zapíšete do databáze a budete
přesměrování na operaci jejího zobrazení.
Zobrazení
Na zobrazení položky se dostaneme z operace listování kliknutím na některý z
prvních sloupců položky (většinou je označen jako název). Zobrazí se nám
všechny informace popisující položku. Nad tabulkou jsou, pokud jsou
dostupná, tlačítka dovolující další operace s položkou. Jejich popis je
nanejvýš výstižný a není třeba je popisovat.
Editace
Editace je přístupná buďto z listování ve sloupci Akce nebo ze zobrazení
položky. Editace je takřtka totožná s vkládáním, rozdíl je pouze v tom, že
položky jsou již předvyplněny a některé, které nelze po vložení vytvoření
položky měnit, nejsou editovalné nebo nejsou vůbec zobrazeny. Kliknutím na
tlačítko Zpět se dostanete na operaci zobrazení nebo listování, podle toho
odkud jste k editaci přistoupily. Po kliknutí na tlačítko Uložit se položka
změní v databázi. Dostanete se poté opět na operaci ze které jste editaci
vyvolali.
Mazání
Mazání je dostupné ze stejného umístění jako editace. Po jejím vyvolání
následuje vždy ještě potvrzovací dialog, ve kterém můžete mazání tlačítkem
Ne stornovat. Po jeho kliknutí se vrátíte zpět na operaci odkud jste mazání
vyvolali. Po kliknutí na tlačítko Ano vymažete položku z databáze a budete
přesměrování na operaci listování. U galerií a fotografií je navíc možnost
zvolit vymazání dat pouze z databáze, při zachování souborů a složek
galerie. Tuto možnost mají dostupnou pouze superadministrátoři.
Vícenásobné přiřazení jiné entity
Tato operace je dostupná pouze u entit, které jsou provázány s jinou entitou
vícenásobným vztahem. Konkrétně se jedná o provázání s entitami
uživatelských rolí a uživatelských skupin. Pokud je operace dostupná, lze ji
vyvolat ze stejného umístění jako editaci a mazání. Po jejím vyvolání se
zobrazí formulář se dvěma poli. Pole vlevo obsahuje položky provázané
entity, které nejsou ke spravované položce přiřazeny, kdežto pole vpravo
obsahuje ty, které jsou přiřazeny. Přesun položek mezi poli je možný
vybráním položky. Lze vybrat více položek v jednom i druhém poli. K
uskutečnění přesunu je potřebné potvrdit operaci tlačítkem Uložit. Po jeho
kliknutí se dostanete zpět na operaci ze které jste přišli, stejně tak i po
kliknutí na tlačítko Zpět.
Nahrání fotografií
Zcela specifickou operací je nahrávání fotografií do galerie. Akce je
dostupná z listování entity fotografií kliknutím na tlačítko Nahrát nové
fotografie. U této akce je velice vhodné mít povolený javascript a
nainstalovaný Flash plugin verze 9 a novější. Pokud vaše konfigurace splňuje
tyto požadavky objeví se dialog s možností hromadného vybrání fotografií z
Vámi zvoleného úložiště. Pokud nemáte povolený javascript tento dialog se
nezobrazí a místo něj bude k dispozici standardní html pole pro výběr jediné
Vámi zvolené fotografie. Pokud bude javascript zapnut, ale nebudete mít
nainstalován Flash plugin, nebo bude starší verze než uvedené, dialog se
zobrazí, ale ovládací prvky nebudou funkční. Fotografie vyberete po kliknutí
na Vybrat fotografie. Objeví se standardní dialog Vašeho operačního systému
s výběrem souborů. Výběr je omezen pouze na soubory typu '.jpg'. Nahrát lze
obrázky nepřesahující velikost 1024kB a rozměry 1024×1024 px. Kontrola
rozměrů a velikosti souboru je prováděna samozřejmě až po nahrání souboru na
server, což trvá delší dobu. Proto je lepší s tímto počítat a obrázky si
dopředu předpřipravit na požadované rozměry. Pokud je soubor úspěšně
zvalidován, vypíše se informace o jeho nahrání a případně, pokud musel být
přejmenován aby nepřepsal soubor se stejným názvem se toto také zobrazí.
Fotografie jsou defaultně upraveny po nahrání na velikost maximálně 640×640
px s kvalitou 90% a je vytvořen náhled o velikosti 120×120 px s kvalitou
60%. Zmenšení fotografie samozřejmě zachovává její proporce. V průběhu
nahrávání je zobrazen aktuální průběh celého uploadování. V průběhu
nahrávání lze přidávat další fotografie. Pokud jste vše potřebné nahráli
tlačítkem Upravit fotografie se vrátíte zpět na jejich správu. Fotografie
jsou automaticky zařazeny do databáze a není nutné s nimi již provádět další
operace, pokud nechcete změnit jejich název nebo jim vyplnit popis.
Popis entit
Uživatelské skupiny
Uživatelské skupiny jsou spolu s uživatelskými rolemi prvkem dovolujícím
nastavení různých oprávnění pro různé uživatele. Základními skupinami jsou
Superadministrátoři a Administrátoři. Rozdíl v těchto dvou skupinách je, že
superadministrátorům nelze nastavit jakákoli oprávnění. Adminstrátory lze
omezit zakázáním jejich skupiny pro určitou akci. Obě tyto skupiny nelze
omezit uživatelskými rolemi a nelze je ze systému smazat. Ostatní skupiny
lze libovolně vytvářet a mazat pokud neobsahují žádného uživatele. Smazání
skupiny je podmíněné tím, že nesmí obsahovat žádné členy. Skupiny slouží
jako omezující prvek pro určitou akci globálně, což znamená, že pokud je
uplatníme například na akce poskytující prohlížení galerií ve frontendu,
budou takto omezeny všechny galerie bez rozlišení. Vlastnosti skupiny jsou:
Uživatelské role
Je nástroj, kterým lze omezit specifické uživatele ve skupinách a také
omezit přístup jen k některým položkám entitity - zatím se jedná pouze o
galerie a jejich obsah. Znamená to, že pokud aktivujeme u galerie omezení
uživatelskými rolemi, tak pouze role přiřazené této galerii budou moci
operovat s danou galerií a jejím obsahem. Uživatel, u kterého chceme aby měl
galerii dostupnou musí mít alespoň přiřazenu alespoň jednu uživatelské roli
shodnou s rolemi galerie. Pro funkčnost takto nastavených oprávnění je nutné
aby v entitě akce bylo u položky, která zprostředkovává zobrazení, editaci
atd. nastaveno použití omezení pomocí uživatelských rolí. Vlastnosti skupiny
jsou:
Uživatelé
Mohou být vytvářeny manuálně v administraci nebo je lze vytvořit provedením
registrace ve frontendu. Každý uživatel musí mít přiřazenu pouze jednu
uživatelskou skupinu a může mít libovolný počet uživatelských rolí. Uživatel
je jednoznačně definován uživatelským jménem a heslem. Uživatele lze
libovolně vytvářet a mazat. Výjmkou je uživatel s admin, kterého nelze
smazat a nelze mu změnit skupinu, kterou je Superadmnistrátor. Vlastnosti
uživatele jsou:
-
Uživatelské jméno - povinné, nelze měnit
-
Heslo - povinné
-
Jméno - povinné
-
Email - povinné
-
Skupina - povinné
-
Datum narození - povinné
-
Zobrazit jméno - povinné, Ano-Ne
-
Zobrazit email - povinné, Ano-Ne
-
Ověřen - povinné, Ano-Ne
-
Zablokován - povinné, Ano-Ne
-
Frontend vzhled - povinné, výběr
Akce
Akce zabezpečují celý systém. Každá stránka v systému má svoji unikátní url
adresu v rámci systému. Některé operace jako Listování nemají další
volitelné parametry a jiné, například Zobrazení nebo editace položky
potřebuje ke své definici také jeden nebo více parametrů. Akce jsou lokální
url adresy bez těchto parametrů. Pokud omezíme akci pomocí uživatelské
skupiny, je omezena pro všechny parametry poslané s touto url. Pokud ji
omezíme pomocí uživatelské role musíme vybrat jaká php funkce bude
obsluhovat kontrolu rolí pro danou akci. Poté systém hledá při přístupu na
tuto akci zvolenou funkci a pokud je nalezena pošle jí parametry, které jsou
přidané k url a na funkci je aby posoudila jestli je dané položka entity pro
uživatele zobrazitelná. Podobně s výběrem php funkce jako u nastavení rolí
se pracuje při generování dynamického nadpisu pokud je povolen. Tyto
vlastnosti však při běžném provozu nebude možné měnit, jsou zde pouze nyní
pro ukázku jednoduchosti nastavování práv. Akce nelze vytvářet a vkládat. U
akce lze standardně nastavit tyto vlastnosti:
-
Url - povinné, lokální část url zprostředkovávající určitou operaci
bez dalších parametrů
-
Nadpis - povinné
-
Omezená skupinami - povinné, Ano-Ne, skupiny je nutné dále
specifikovat
-
Zobrazit nadpis - povinné, Ano-Ne, určuje jestli se Nadpis zobrazí
-
Dynamický nadpis - povinné, Ano-Ne, určuje jestli se Dynamický
nadpis zobrazí - je generován automaticky
-
Omezená rolemi - povinné, Ano-Ne, přiřazení rolí závisí na nastavení
rolí daných položek entity na kterou akce směřuje
-
Zobrazovat v historii - povinné, Ano-Ne, určuje jestli se akce
zobrazí ve funkci historie administrace
-
Nadřazená akce - povinné, Ano-Ne, umožňuje vytvářet podsekce, podle
nich se zobrazují breadcrumbs
Galerie
Hlavní viditelný obsah webu. Galerie lze libovolně vytvářet a mazat. Pozor,
při mazání se smažou i její fotografie. Lze je třídit do podsložek. Galerie
se jednoduše ve stromu přesouvají pomocí nastavení jiné nadřazené akce.
Pokud není u galerie vybrána nadřazená akce, je zobrazena v hlavní složce
galerií. Mazání galerie je podmíněné tím, aby neobsahovala žádnou podgalerii.
Nahrávání a operace s galeriemi a jejich fotografiemi již byly popsány v
předchozích odstavcích. Vlastnosti galerie jsou:
-
Název - povinný
-
Alias - povinný, nelze měnit, je generován automaticky po změně
Názvu
-
Počet fotografiií - nelze měnit
-
Počet galerií - nelze měnit
-
Vytvořeno - nelze měnit
-
Vytvořil - nelze měnit
-
Změněno - nelze měnit
-
Změnil - nelze měnit
-
Omezená rolemi - povinné, Ano-Ne, je potřeba dále specifikovat o
jaké role se jedná
-
Viditelná - povinné, Ano-Ne, určuje jestli je ve frontendu viditelná
-
Ikona složky s obázkem - povinné, Ano-Ne, jestli má být ve frontendu
složka zobrazena s miniaturou některé z fotogarfií z galerie
-
Nadřezená galerie
Fotografie
Jsou dostupné odkazem z Listování galeriemi nebo u jejich zobrazení volbou
Upravit fotografie. Nahrávání fotografií a mazání již bylo popsáno.
Vlastnosti fotografie jsou:
Frontend
Ve frontendu je možnost prohlížet galerie. Jsou omezeny na základě práv
nastavených v backendu.
Uživatel zde může editovat svůj profil, změnit si heslo nebo pokud není
registrovaný se registrovat.
Při registraci je potřeba potvrdit registraci pomocí url, které uživatel
obdrží na email zadaný při registraci.