Moduly
Textové stránky
Administračná časť
Administračná časť modulu (page.AdminContent.php) spravuje textové stránky. Tie je možné pridávať, editovať a mazať. Novovytvorená stránka sa uloží len do aktuálne zvoleného jazyka. Editácia prebieha stále v aktuálnom jazyku, ak chce užívateľ editovať stránku v inej jazykovej mutácií, musí sa do nej najprv prepnúť.
Ku každej stránke je možné priradiť album z fotogalérie, fotky z ktorého sa potom zobrazia pod textom stránky podobne ako fotky vo fotogalérií.
Každá stránka môže byť zaradená do menu (položka v tabuľke menu). V menu je reprezentovaná svojím nadpisom a odkazom. Odkazy využívajú id, nie aliasy, odkaz sa prevedie na alias až pri generovaní menu v metóde loadMenu() objektu Page.
Do menu je možné pridať aj odkaz, ide vlastne o záznam bez viazanosti na konkrétnu textovú stránku, ktorý môže odkazovať na ľubovoľnú URL.
Klientská časť
Klientská časť modulu (page.Content.php) sa stará o samotné zobrazovanie textového obsahu. Konkrétna textová stránka (záznam v tabuľke content) je vyhľadaná podľa aliasu alebo id, s ohľadom na jazykovú verziu webu.
V prípade, že daná textová stránka neexistuje a nie je nastavená ani žiadna predvolená, je zobrazené chybové hlásenie.
Nakoniec je ešte vygenerovaná navigácia (pozícia textovej stránky v hierarchií menu) a obsah je spracovaný parsovacou funkciu na ošetrenie odkazov v rámci ModularCMS.
Obrázky do textu
Do ľubovoľnej textovej stránky, bloku alebo novinky je pomocou wysiwyg editora možné vkladať obrázky. Tieto obrázky je však nutné najprv nahrať na server pomocou špeciálneho modulu (page.AdminInsetImages.php).
Pri nahrávaní obrázkov na servera platia rovnaké obmedzenia ako pri nahrávaní fotiek vo fotogalérií (veľkosť buffera, maximálna doba behu skriptu). Z každého obrázka je po jeho nahraní vygenerovaný náhľad (veľkosť určuje parameter inset_images_thumb_size) a plná verzia (parameter inset_images_size).
Všetky obrázky sú ukladané do adresára data/content/inset_images/page, do databázy sa žiadne údaje neukladajú. Ukladanie všetkých obrázkov (vrátane fotiek v module fotogaléria) na disk namiesto do databázy som zvolil hlavne preto, aby databáza nenarastala do gigantických rozmerov (v prípade veľkých fotiek by to nebolo nič neočakávané) a ostal k nej zachovaný rýchly prístup. Nevýhodou je nutnosť na tieto fotky pamätať, teda pri mazaní súvisiacich záznamov z databázy nezabudnúť zmazať súbory z disku.
Pri zmazaní obrázku sú zmazané oba jeho súbory a prestane byť prístupný vo wysiwyg editore.
Na stránkovanie je použitý rovnaká metóda ako pri fotogalérií, podporované sú taktiež len obrázky vo formáte JPEG.
Bloky
Tento modul vlastne obsahuje len administračnú časť (modul page.AdminBlocks.php), samostatná klientská časť neexistuje.
Pretože textové bloky sa nachádzajú na každej stránke, je ich vygenerovanie zabezpečované priamo v triede Page v metóde loadBlocks() volanej v metóde show(), ktorú povinne volajú všetky ostatné moduly (potomkovia Page).
Administračná časť je jednoduchá, stará sa o pridávanie, editovanie a mazanie textových blokov (záznamy v tabuľke blocks). Poradie blokov sa riadi atribútom weight, zmena poradia prebieha podobne ako pri fotogalérií výmenou susedných záznamov v požadovanom smere.
Nový blok sa vloží len do aktuálne zvoleného jazyka.
Novinky
Administračná časť
Administrácia (page.AdminNews.php) noviniek umožňuje pridávanie, mazanie a editovanie. Všetky novinky sú uložené ako záznamy v tabuľke news. Všetky novinky sú zoraďované zostupne podľa ich dátumu.
Nová novinka sa vloží len do aktuálne zvoleného jazyka.
Klientska časť
Klientská časť modulu (page.News.php) sa stará o zobrazovanie výpisu noviniek a ich stránkovanie podľa parametra news_pp. Stránkovanie je realizované podobne ako pri fotogalérií.
Keďže určitý počet najnovších noviniek (určený parametrom news_main) sa môže zobrazovať na každej stránke, sa o ich vygenerovanie sa stará metóda loadNews() triedy Page volaná v metóde show().
Fotogaléria
Administračná časť
Administračná časť (page.AdminGallery.php) slúži na pridávanie, mazanie a spravovanie albumov. Albumy sú uložene v tabuľke gallery_albums. Každá fotka musí patriť do nejakého albumu (väzba cez cudzí kľúč), preto je vždy potrebné vytvoriť najprv album (vytvorí sa záznam v databáze) a až následne pridávať fotky.
Pridávať je možné viacero fotiek naraz cez formulár, zo strany servera však vyplývajú určité obmedzenia. Ide najme o veľkosť buffera (štandardne asi 2 MB), ktorú nesmie prekročiť súčet fotiek, nahrávaných v 1 kroku a taktiež obmedzenie pre dĺžku behu skriptu (štandardne 30 sekúnd). Odporúčam teda fotky pred nahrávaním upraviť, aby neboli príliš veľké.
Pri nahrávaní fotiek je z každej fotky vygenerovaná na strane servera miniatúra a plná veľkosť podľa parametrov gallery_images_thumb_size a gallery_images_size. Všetky fotky sa ukladajú do adresára data/photos, miniatúra sa priradí suffix -thumb. Fotke sa priradí váha o 1 väčšia ako maximálna váha fotiek v danom albume, fotka sa teda zaradí na koniec albumu.
Podporovaný je len formát JPEG.
Pôvodný nápad bol ukladať fotky do adresára data/photos/cislo_albumu, kvôli PHP safe_mode nastaveniu by však bolo nutné pri vytvorení nového albumu vytvoriť aj príslušný adresár, nie však pomocou klasickej PHP funkcie, ale pomocou FTP pripojenia iniciovaného prostredníctvom FTP. Toto riešenie je zložitejšie ale prehľadnejšie, problémom však je nutno nastavovať prístupové údaje k FTP v ModularCMS, nedostupnosť FTP prístupu, obmedzenia na počty simultánnych FTP prístupov a podobne.
Poradie fotiek v rámci albumu určuje atribút weight, pri zmene poradia je stále nájdená najbližšia fotka v danom smere (vyššie alebo nižšie) a váhy nájdenej fotky a upravovanej fotky sa vymenia.
Pri mazaní fotky je zmazaný záznam z databázy a oba vygenerované súbory, pri mazaní celého albumu sa najprv zmažú všetky fotky, ktoré do neho patria a následne záznam o danom albume.
Nový album aj nová fotka sa vždy vložia do všetkých jazykov.
Tabuľka gallery_albums obsahuje stĺpec parent_id, ktorý odkazuje ja nadradený album. V súčasnosti ale fotogaléria neumožňuje vnáranie albumov, preto je ako predvolená hodnota použitá 0, čo značí, že žiadny album nie je danému albumu nadradený.
Klientska časť
Klientska časť fotogalérie (modul page.Gallery.php) slúži na zobrazovanie výpis albumov, zobrazovanie fotografií daného albumu a zobrazovanie detailu fotografie. Pri vstupe do fotogalérie sa zobrazí výpis albumov pozostávajúci z názvu albumu a miniatúry fotky, ktorá je v albume ma najvyššej pozícií (má najvyššiu váhu).
Detail albumu sa skladá z výpisu fotiek vrátane ich názvov, fotky sú usporiadané podľa váhy a rozdelené na strany podľa počtu určeného parametrom gallery_images_fotos_pp. Na stránkovanie slúži privátna metóda pager, ktorá zabezpečuje rozdelenie na jednotlivé stránky, výpočet čísla predchádzajúcej a nasledujúcej stránky, celkového počtu a pod.
Detail fotky je riešený pomocou JavaScriptovej knižnice LightBox JS vrátane možnosti prechodu medzi jednotlivými fotkami na danej stránke.
Katalóg
Administračná časť
Administračná časť modulu (page.AdminCatalogue.php) spravuje kategórie, šablóny a produkty.
Kategórie sú uložené v tabuľke c_categories. Každá kategória môže mať určenú nadradenú kategóriu, do ktorej patrí.
Všetky produkty sú uložené v tabuľke c_products. Každý produkt musí patriť do nejakej kategórie, väzba je realizovaná cez cudzí kľúč. K produktu patria jeho detaily a obrázky. Záznamy o obrázkoch produktu sú uložené v tabuľke c_product_images. Obrázky sa neukladajú do databázy, ale do adresára data/catalogue/images. Odkaz na predvolený obrázok produktu je uložený v stĺpci default_image tabuľky c_products.
Jednotlivé položky produktu sú uložené v tabuľke c_product_details. S produktom, ku ktorému patria, sú zviazané prostredníctvom cudzieho kľúča.
Tabuľka pre c_templates pre šablóny má podobnú štruktúru, ako c_products, avšak bez väzby na obrázky.
Klientska časť
Klientska časť katalógu produktov (modul page.Catalogue.php) slúži na zobrazenie kategórií a ich produktov. Pri vstupe do katalógu je zobrazený strom jednotlivých kategórií. Po vybraní konkrétnej kategórie sa zobrazia produkty, ku každému produktu je zobrazený jeho názov, predvolená fotka a jednotlivé položky produktu. Ak je prihlásený editor alebo administrátor, zobrazia sa aj tlačidlá na editáciu produktov a ich posúvanie v rámci kategórie.
Výpis kategórií obsahuje stránkovanie, počet produktov na stranu je nastaviteľný parametrom catalogue_products_pp v konfigurácií.
Vdetaile produktu sa zobrazuje jeho názov, popis, položky a predvolená fotka. Pod týmito informáciami sa nachádzajú ostatné fotky produktu, zobrazovane rovnako ako pri fotogalérií pomocou knižnice LightBox.
Užívatelia
Jeden z najdôležitejších modulov pre fungovanie ModularCMS. Zabezpečuje prihlasovanie a odhlasovanie užívateľov, nastavenie práv a zmenu hesla.
Pri prihlasovaní užívateľ vyplní svoje prihlasovacie meno a heslo, formulár sa odošle na spracovanie týmto modulom. Z hesla sa vytvorí md5 hash a modul zistí, či v tabuľke users existuje záznam so zadaným prihlasovacím menom a vygenerovaním md5 hashom. Ak nie, prístup je zamietnutý.
V prípade úspechu sa vytvorí nová SESSION s názvom user, kde sú uložené údaje prihláseného užívateľa a SESSION access, ktorá reprezentuje prístupové práva; admin alebo editor. Nakoniec je nastavený ešte jazyk admistrácie (vybraný z ponuky pri prihlasovaní) a čas prihlásenia, kvôli automatickému odhláseniu po dlhšej dobe nečinnosti.
Odhlásenie užívateľa znamená zrušenie všetkých SESSION vytvorených pri prihlásení.
Mapa webu
Mapa webu je jednoduchý modul (page.Sitemap.php) na uľahčenie navigácie užívateľovi, ktorý klikol na neplatný odkaz alebo sa z nejakého iného dôvodu pokúsil zobraziť neexistujúcu stránku. Úlohou modulu je vygenerovať hierarchický zoznam všetkých textových stránok, používa sa na to prechod RTree stromom z Rain frameworku.
Konfigurácia systému
Všetky konfiguračné parametre sú uložene v súbore tpl/conf/setup.conf a modulom sú prístupné vo forme premennej $this->cfg[nazov_parametra].
Pre jednoduchšie prezeranie a nastavovanie týchto parametrov existuje modul (page.AdminConfig.php). Tento modul načítava konfiguračný súbor, vrátane textových popisov jednotlivých parametrov a umožňuje ich zmenu.
Prekladač
Keďže ModularCMS podporuje vytváranie obsahu v rôznych jazykoch, texty v šablónach by nemali byť pevné, ale malo by isť o konštanty zo súborov s lokalizáciou. Tieto jazykové súbory sa nachádzajú v adresári i18n a je možné editovať ich ručne, alebo použiť tento modul.
Prekladač umožňuje editáciu jazykových súborov práve používaných jazykov. Po vybratí jazyka je načítaný príslušný jazykový súbor a ku každej konštante zobrazená aktuálna hodnota, ktorú je možné zmeniť a zmeny uložiť.
Editori
Tento modul (page.Editor.php) slúži na správu špeciálneho typu užívateľov, tzv. editorov. Modul umožňuje pridávanie, mazanie a editovanie. Pracuje s tabuľkou user, záznam každého editora má však v stĺpci type hodnotu editor, aby ho bolo možné rozlíšiť od administrátora (typ admin).


