WebToDate/Příručka vývojáře/Úvod

Z WebToDate
Skočit na navigaciSkočit na vyhledávání

Zaměření manuálu

Tento manuál je určen vývojářům, kteří potřebují rozšiřovat funkčnost systému WebToDate na straně serveru podle potřeb řešení vytvořeného na základě tohoto systému. Umožňuje partnerům či koncovým zákazníkům vytvářet modifikace a rozšiřování funkčnosti bez potřeby modifikovat kódy vlastní aplikace či standardních modulů a se zachováním možností upgradů vlastní aplikace.

Pro uživatele této dokumentace se předpokládají následující znalosti:

  • Znalost produktu WebToDate a jeho standardních modulů na úrovni administrátora
  • Znalosti konfigurace WWW serverů (Apache, IIS) na příslušné platformě včetně potřebných znalostí daného OS
  • Znalosti programovacího jazyka PHP, znalosti HTML a XML
  • Znalosti jazyka SQL a provozování SQL databází

Programové rozšiřování funkčnosti WebToDate

WebToDate je aplikace typu CMS systém, která umožňuje efektivní správu www serveru, publikování a správu obsahu, oddělení dat od prezentační vrstvy apod. Řada standardně dodávaných modulů rozšiřuje tyto možnosti především o interaktivní funkce typu diskusí, anket, poraden apod. V drtivé většině případů existující funkčnost pokrývá všechny požadavky na dané řešení.

Na druhou stranu mohou existovat případy, kdy stávající funkcionalita není dostačující a je požadováno rozšíření existujících možností. Jedná se např. o tyto případy:

  • Některá data, která mají být publikována, mají jiný charakter který nekoresponduje s univerzální strukturou databáze zpráv (komplexní relační databázové struktury nebo i relativně jednoduchá databáze např. kontaktů).
  • Řešení vyžaduje interaktivní funkce, které mají svou vlastní logiku fungování či zobrazování (personalizované funkce, interaktivní formuláře apod.)
  • Některé strukturované informace mají být na veřejné části webu přístupné pouze určitým skupinám registrovaných nebo jinak specifických uživatelů.
  • Do stránek generovaných pomocí WebToDate je třeba vkládat další objekty (např. data z externích zdrojů apod.), které aplikace nepodporuje či je třeba tyto stránky formátovat ještě jiným způsobem, než aplikace umožňuje.

Pokud existuje nějaký takový požadavek, který nelze řešit standardní funkčností WebToDate, nasazením některého ze standardních modulů nebo např. pomocí SQL seznamů, lze často takový požadavek řešit programováním podle standardizovaných metod popsaných v tomto manuálu. Podle typu daného požadavku lze řešení navrhnout formou

  • Extenze
  • Modulu
  • Úlohy pro Plánovač úloh

Co lze řešit standardní cestou

Extenze

Extenze mohou modifikovat obsah generovaných stránek či zpráv. Mohou doplňovat vlastní HTML kódy do stránek sestavených WebToDate (např. zformátovaná data načtená z externích databází či jiných zdrojů) či modifikovat HTML kód, který systém WebToDate sestavil.

Jako extenze je implementován např. standardně dodávaný doplněk pro zvýrazňování slov hledaných fulltextovým hledáním, rovněž např. úloha vložení formuláře ankety ke článku do stránky se zprávou je řešena formou extenze.

Extenze může řešit např. i kódování vybraných znaků do znakových entit v případě generování XML či WML stránek pomocí WebToDate apod.

Moduly

Pomocí modulů se zpravidla řeší komplexnější úlohy např. následujících typů:

  • Exporty a importy dat
  • Publikace strukturovaných relačních databází s vlastní prezentační logikou
  • Funkce veřejné části serveru, které jsou interaktivní vůči návštěvníkům serveru, tedy případy, kdy návštěvníci vkládají nějaká data do stránek a tato data se ukládají do databáze serveru apod.
  • Propojení s jinými systémy a aplikacemi.

Uvažujme následující příklad: máme řešit publikaci obsahu databáze školení, kdy kromě popisu a termínu jsou jednotlivá školení kategorizována podle produktu, školitele, školícího střediska, pořadatele, jazyka, ve kterém školení probíhá atd. Všechna tato data jsou uložena v relačních tabulkách, požadavkem je vyhledávání podle kombinace všech možných kritérií včetně data školení a popisu (textu). V implementaci se zjevně jedná o relační databázovou strukturu s mnoha tabulkami. Toto je vhodná úloha pro modul. Modul může být zaměřen na prezentační vrstvu, pokud se data v databázi nemění nebo se aktualizují importem z jiného systému, nebo může obsahovat i redakční rozhraní pro vkládání a editaci dat, pokud má být www interface modulu primárním nástrojem pro pořizování těchto dat.

Modul pak zpravidla využívá dostupného aparátu WebToDate k správě grafické prezentace (vytváření šablon, stylů apod.), ale má svoje vlastní prezentační skripty, které pracují s daty tohoto modulu.

Úlohy pro Plánovač úloh

Plánované úlohy použijeme, pokud chceme spouštět na pozadí v plánovaných časech operace, které lze definovat předem (nevyžadují zásahy obsluhy redakčního systému). Plánované úlohy mohou periodicky importovat nějaká data, v určený čas modifikovat obsah některých stránek, rozesílat e-maily apod.

Příkladem jednoduché plánované úlohy je potřeba zobrazovat na stránce údaj o tom, kdo má ten den jmeniny, přičemž tento údaj se mění jednou denně. Taková úloha může používat např. pevně naplněnou databázovou tabulku s kalendářem jmenin, generovat z ní příslušný HTML a tento kód měnit na určené stránce serveru. Existují však i složitější možnosti využití, v instalacích WebToDate existují řešení, která pomocí plánovaných úloh a načítání dat z externích zdrojů generují kompletní podoby www serverů.

Omezení pro rozšiřující programování

Metody popsané v tomto dokumentu pokrývají širokou paletu řešení požadavků, které lze realizovat standardními postupy rozšiřování funkčnosti WebToDate, existují ale samozřejmě případy, které se týkají samotného jádra aplikace a jejichž řešení nelze realizovat vůbec nebo dostatečně kvalitně formou např. modulů.

Nelze modifikovat redakční rozhraní samotné WebToDate aplikace, lze pouze do tohoto rozhraní přidávat nové moduly. Nelze ovlivnit způsob autentifikace a přístupová práva v redakčním rozhraní. Nelze měnit způsob práce s metadaty, např. vytvářet další způsoby kategorizace apod.

Nejsou podporovány "moduly modulů". Veřejně přístupná část nějakého modulu (např. Diskusí) se typicky skládá z prezentačních PHP skriptů, které na základě zvolených šablon a stylů zobrazují data daného modulu. Do funkčnosti těchto skriptů již nelze vstupovat a analogie např. extenzí zde neexistuje.