Skip to content

3. Back-end časti CockpitCMS

  • Jedná sa o systém postavený na PHP, riot.js a Lime PHP frameworku.
  • CockpitCMS sa skladá z modulov a okrem JSON API poskytuje aj PHP bootstrap, ktorý umožňuje k nemu pristupovať alebo ho rozširovať.
  • CSS je riešené okrem vlastných rozšírení čiste cez UIKIT v2.

Najdôležitejšie umiestnenia

Všetky sú v public/cockpit

Miesto K čomu slúži
assets/app/css Cockpit CSS + vlastné rozšírenia cez custom.scss, ktoré je skompilované nepriamo do .css cez style.less
assets/app/media/icons Ikony dostupné v CockpitCMS ako ikony pre štruktúry alebo komponenty.
assets/lib/font-awesome-field Plne vlastná knižnica pre implementáciu fontawesome výberového poľa importovaná do components.js nižšie.
config/* Obsahuje skrytú konfiguráciu v yaml (je vcelku zle zdokumentovaná) pre CMS aj pre addony. Je tu aj zložka obsahujúca všetky lokalizácie administračného rozhrania do iných jazykov.
addons Addons sú rozšírenia, niektoré (Layout-Components) vcelku dosť modifikované od ich pred-inštalačného stavu.
lib Framework a knižnice na ktorých je Cockpit stavaný. Tu som nikdy nič nemenil a asi ani meniť nebudem, radšej nechytať.
modules Jednotlivé druhy uloženia dát (štruktúry, regióny, formuláre) a ich implementácie.
modules/Collections Štruktúry - Občasná vlastná úprava.
modules/Cockpit/components.js riot.js implementácia každého jedného druhu poľa z ktorého sa dajú komponenty/štruktúry zložiť. Veľmi silná vlastná úprava (napr. vlastné fontawesome a url polia)
storage Hlavné úložisko, flat-file databázy, cache, miesto uploadu všetkých assetov, nechytať priamo, len cez CMS samotné!

Pred publikovaním

  1. Skontrolovať existenciu a validitu .htaccess v dôležitých umiestneniach, hlavne aby .sqlite bolo blokované v public/cockpit a public/api/private malo deny from all
  2. Nezverejňovať .css.map a .js.map súbory

ftpsync.js exclude filtre nemusia byť správne nastavené.

Prepojenie s public/index.php

V public/index.php je importovaný CockpitCMS bootstrap a využitý cockpitql addon pre kontrolu či slug existuje v zozname stránok.

CockpitQL addon bol dodatočne rozšírený v súbore CockpitQL/Types/FieldType.php o case:"moderation", aby mohli byť slug filtrované podľa toho či boli addonom Moderation publikované. Takto sa zaručí že crawleri dostanú 404 na nepublikovaných stránkach.

WEDOS / localhost Live Preview

Live preview nastavenia
Treba správne nastaviť adresu v nastaveniach štruktúry.

V Preview.svelte sú povolené zdroje nastavené na:

  • http://localhost
  • https://strukshow.com
  • http://dev.strukshow.com

A povolený event je nastavený na: cockpit:collections.preview

Nepodporované .htaccess hodnoty pre WEDOS

Prekvapivo z celého komplexného .htaccess v public/cockpit nefunguje len jedna vec, ktorá spôsobuje 500 Internal Server Error:

Options -MultiViews

Chyba nastáva aj ak je možnosť v podmienke <IfModule mod_negotiation.c>, ktorá predvolene chýba. Možnosť je teda odkomentovaná.

Úprava bootstrap.php ciest pre WEDOS a path_check.php

V súbore bootstrap.php sú definované lokálne cesty pre php na základe COCKPIT_DOCS_ROOT a následne od neho sa odvíjajú rozdielom s COCKPIT_DIR cesty v URL adresách uložené v COCKPIT_BASE_URL.

Pre debugovanie ciest je vhodné použiť path_check.php.

Správne predvolené zobrazenie na localhost:

COCKPIT_DIR:            C:/Websites/strukshow.com v2 (svelte)/public/cockpit
WEDOS_DOCS_ROOT:        C:/Websites/strukshow.com v2 (svelte)/public
COCKPIT_DOCS_ROOT:      C:/Websites/strukshow.com v2 (svelte)/public
COCKPIT_DOCS_ROOT_PREV: C:/Websites/strukshow.com v2 (svelte)/public
COCKPIT_BASE:           cockpit
COCKPIT_BASE_URL:       /cockpit
COCKPIT_BASE_ROUTE:     /cockpit

Zlé predvolené zobrazenie na WEDOSe:

COCKPIT_DIR:            /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com/cockpit
WEDOS_DOCS_ROOT:        /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com
COCKPIT_DOCS_ROOT:      /data/web/virtuals/232327/virtual/www
COCKPIT_DOCS_ROOT_PREV: /data/web/virtuals/232327/virtual/www
COCKPIT_BASE:           domains/dev.strukshow.com/cockpit
COCKPIT_BASE_URL:       /domains/dev.strukshow.com/cockpit
COCKPIT_BASE_ROUTE:     /domains/dev.strukshow.com/cockpit

Kvôli zle definovanému $_SYSTEM["DOCUMENT_ROOT"] majú jednotlivé adresy dodatočne vložené kompletne zbytočné údaje o doméne (prekvapivo adresy stále fungujú). Preto bol pridaný $WEDOS_DOCS_ROOT a nahradený výpočet $COCKPIT_DOCS_ROOT:

// Default implementation (doesn't work properly on WEDOS)
$COCKPIT_DOCS_ROOT   = str_replace(DIRECTORY_SEPARATOR, '/', isset($_SERVER['DOCUMENT_ROOT']) ? realpath($_SERVER['DOCUMENT_ROOT']) : dirname(__DIR__));
// WEDOS implementation (works on localhost as well)
$WEDOS_DOCS_ROOT     = str_replace("/cockpit","",$COCKPIT_DIR);
$COCKPIT_DOCS_ROOT   = str_replace(DIRECTORY_SEPARATOR, '/', isset($WEDOS_DOCS_ROOT) ? realpath($WEDOS_DOCS_ROOT) : dirname(__DIR__));

WEDOS po úprave (localhost zostal rovnaký ako predtým):

COCKPIT_DIR:            /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com/cockpit
WEDOS_DOCS_ROOT:        /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com
COCKPIT_DOCS_ROOT:      /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com
COCKPIT_DOCS_ROOT_PREV: /data/web/virtuals/232327/virtual/www/domains/dev.strukshow.com
COCKPIT_BASE:           cockpit
COCKPIT_BASE_URL:       /cockpit
COCKPIT_BASE_ROUTE:     /cockpit