Přeskočit na hlavní obsah

Architektura

Systém je postavený ze dvou částí - Administrace (CMS) a Frontendové části (MVC). CMS je postavené na open-source platformě Orchard Core CMS s použitím nuget balíčků od BiQ pux a.s. CMS je dostupný administrátorů a slouží pro správu obsahuje a nastavení webové aplikace. Data jsou uložena v relační databázi Sql Server v dokumentové podobě - díky YesSql ORM. MVC je webová aplikace poskytující obsah koncovému uživateli. Obsah si získává od CMS přes GraphQL API.

Systémový diagram

Struktura databáze

center

CMS Moduly

Přehled povolených modulů je k dispozici v administraci v Configuration/Features. Jejich dokumentace je dostupná na https://docs.orchardcore.net/en/main/reference/ adrese. CMS kromě Orchard Core modulů dále využívá moduly vyvinuté BiQ pux a.s., které lze snadno rozpoznat PuxOrchard předponou. Popis povolených modulů lze nalézt níže. Nepovolené moduly nejsou součástí dodaného díla, tudíž nejsou zdokumentovány a za jejichž funkčnost není ručeno.

PuxOrchard.Content.Forms

Modul rozšiřuje práci s formuláři. Jedná se jmenovitě o ukládání dat z vyplněných formulářů, jejich zobrazení, filtrace a export. Dále přidává aktivity do Workflows modulu jako jsou

  • LiquidValidateFormFieldTask

  • LogFormDataErrorsTask

  • RegexValidateFormFieldTask

  • ValidateEmptyFormFieldsTask

  • ValidateFormFieldsSettingsTask

PuxOrchard.Content.Components

Modul rozšiřuje práci s Bag Content Part, přidává tlačítka pro hromadnou práci s Autoroute Part a přidává Part pro filtrování dle taxonomie.

PuxOrchard.Content.Core

Modul obsahuje následující funkcionalitu :

  • Klonování content itemu z jedné lokalizace do druhé

  • Validace ReCaptcha tokenu

  • Rozšíření liquid filtrů

  • Rozšíření trumbowyg editoru

  • Základní službu pro komunikaci s MVC

PuxOrchard.Content.Core.ClearCacheAutomatization

Modul zodpovědný za odesílání zprávy o smazání statické cache do MVC aplikace.

PuxOrchard.Content.Core.CloneInCulture

Modul přidává funkci klonování content itemu z jedné lokalizace do druhé.

PuxOrchard.Content.Fields

Modul přidává ContentLinkField, AutoGeneratedField a SqlPicker Fieldy do CMS a GraphQL (kromě AutoGeneratedField). ContentLinkField lze použít v případě, že daný field má reprezentovat vazbu na existující content item. SqlPickerField je vhodný při vytváření vazby na data v relační tabulce. AutoGeneratedField je vhodný pro hodnoty, které se májí generovat.

PuxOrchard.Content.Localization

Modul přidává PuxLocalizationPart Content Part pro správu lokalizovaných dat, controller pro

PuxOrchard.Content.SEO

Modul PuxOrchard.Content.SEO rozšiřuje platformu Orchard Core o množství nástrojů pro pokročilou správu SEO (Search Engine Optimization) na vícero doménách či instancích v rámci jednoho tenanta. Dále přidává integraci na Let's Encrypt.

PuxOrchard.Content.SEO.MultipleConfigurations

Multiple Configurations Management v modulu PuxOrchard.Content.SEO umožňuje správu a editaci více SEO konfigurací v rámci jednoho tenanta. Tato funkcionalita je navržena pro případy, kdy jeden Orchard Core tenant běží na více doménách, přičemž každá z nich využívá odlišné nastavení.

PuxOrchard.Content.SEO.RedirectPartAutomatization

Modul umožňuje definovat trvalá i dočasná přesměrování mezi stránkami.

PuxOrchard.Core

Modul obsahuje převážne extension a helper třídy a slouží jako společný základ pro ostatní moduly. Jeho přítomnost elimunje zbytečné vazby mezi moduly a duplikaci kódu.

PuxOrchard.Data.PartedFileContentDefinition

Modul přidává store pro Content Type a Content Part entity, který ukládá jejich definice na souborový systém. Umístění těchto definicí na systému souborů je užitečné při přenášení změn v definicích mezi více instancemi CMS aplikací.

PuxOrchard.Email

Modul rozšiřuje práci s emaily v CMS. Přidává možnost emaily odesílat v rámci fronty pro větší robustnost, ovládací prvky do Workflows a obrazovky pro zobrazení informací o frontě.

PuxOrchard.EventLog

Modul rozšiřuje práci s logy v CMS. Přidává obrazovku s výčtem logů jak z CMS, tak z MVC aplikace. Logy jsou sdruženy v rámci requestů a je možné je filtrovat a řadit.

PuxOrchard.GraphQL.Server

Modul rozšiřuje GraphQL typy a query v CMS. Přidává dekorátory pro Media Field a obecné filtry. Dále přidává query pro drobečkovkou navigaci, Flow Part, Taxonomy a url adresy content itemu.

PuxOrchard.System.Info

Modul poskytuje informace o verzích balíčků, na kterých systémy (CMS a MVC) běží, a využití paměťových zdrojů.

MVC Moduly

Povolené MVC moduly jsou definované v appsettings.json souboru pod klíčem : "OrchardCore.Default.Features". Pod tímto klíčem je uložená Json Array, která obsahuje jednotlivá jména modulů.

PuxOrchardClient.Core

Základní modul pro klientskou aplikaci. Obsahuje nástroje pro komunikaci s CMS, integraci Let's Encrypt, podporu pro SEO (robots.txt a sitemap.xml) a spoustu pomocných metod, tag helperů, apod. pro další klientské moduly.

PuxOrchardClient.EventLog

Modul, který zpřístupňuje aplikační logy z systému souborů klienté aplikace v CMS.

PuxOrchardClient.Generators.StaticSite

Modul přidává podporu staticky generovaných stránek. Při prvním přístupu na stránku je její obsah získán z CMS, controller vykreslí HTML obsah, který je poté uložen na systému souborů. Při dalším přístupu na stránku se vrací uložená verze stránky.

PuxOrchardClient.GraphQL

Modul přidává možnost definovat soubory s GraphQL dotazy, směrovací algoritmy a komunikační službu s CMS.

PuxOrchardClient.GraphQL.Core

Modul přidává tranformaci webových adres na položky obsahu, které jsou poskytovány. Zároveň poskytuje atributy pro controllery, které na endpointech přidávají možnost definovat akce, které podporují statické cachování stránek a rozlišení přihlášené sekce.

PuxOrchardClient.Routing.Components

Modul přidává podporu Repeater komponenty, fulltext vyhledávání a drobečkové navigace.

PuxOrchardClient.System

Modul přidává získávání informací o verzi systému a využití zdrojů klienskou aplikací a jejich distribuci do CMS aplikace.

Návody pro lokální vývoj, testování a ladění aplikace

Pro spuštní CMS aplikace je nutné mít nainstalován .NET runtime (viz dále). Pro MVC aplikaci je nutné mít nainstalován Node v14. Aplikaci lze sestavit a spustit jako standardní ASP.NET Core MVC aplikaci. Volba nástroje je ponechána na čtenáři. Doporučené je použit Visual Studio IDE, dle dokumentace od Microsoftu.

Pokyny pro sestavení (build) a nasazení aplikace

  1. V kořenovém adresáři projektu spusťte:

    dotnet build

  2. Pokud sestavení proběhne úspěšně, zobrazí se hláška Build succeeded.

Spuštění aplikace

Spusťte vývojový server:

dotnet run

Užitečné odkazy

Konfigurace a instalace

Struktura IIS

Aplikace vyžaduje vytvoření dvou IIS webových stránek pro každé prostředí (např. testovací a produkční):

  • CMS_Project_Prod -- administrační část systému (Orchard Core)

  • MVC_Project_Prod -- frontendová část pro veřejnost

Adresářová struktura

Jednotlivé složky pro IIS sites:

  • CMS -- pro administrační část

  • MVC -- pro frontend