<?php

// Diese Datei ist keine Pflichdatei mehr.
// Die `boot.php` wird bei jeder Aktion in REDAXO ausgeführt (Frontend und Backend). Hier können beliebige Befehle ausgeführt werden.
// Dokumentation AddOn Aufbau und Struktur https://redaxo.org/doku/master/addon-struktur

$addon = rex_addon::get('demo_addon');

// Daten wie Autor, Version, Subpages etc. sollten wenn möglich in der `package.yml` notiert werden.
// https://redaxo.org/doku/master/eigenschaften#eigene_properties
// Sie können aber auch weiterhin hier gesetzt werden:
$addon->setProperty('author', 'Friends Of REDAXO');

// Die Datei sollte keine veränderbare Konfigurationen mehr enthalten, um die Updatefähigkeit zu erhalten.
// Stattdessen sollte dafür die `rex_config` verwendet werden (siehe `install.php`).
// Dokumentation Konfiguration https://www.redaxo.org/doku/master/konfiguration

// Klassen und lang-Dateien müssen hier nicht mehr eingebunden werden, sie werden nun automatisch gefunden.

// AddOn-Rechte (permissions) registieren
// Hinweis: In der `de_de.lang`-Datei sind Text-Einträge für das Backend vorhanden (z.B. perm_general_demo_addon[])
if (rex::isBackend() && is_object(rex::getUser())) {
    rex_perm::register('demo_addon[]');
    rex_perm::register('demo_addon[config]');
}

// Assets werden bei der Installation des AddOns in den assets-Ordner kopiert und stehen damit
// öffentlich zur Verfügung. Sie müssen dann allerdings noch eingebunden werden:

// Assets im Backend nur beim `demo_addon` einbinden.
// CSS und JavaScript-Dateien sollten nur im Backend eingebunden werden wenn sie benötigt werden.
// AddOn-Assets https://redaxo.org/doku/master/addon-assets
if (rex::isBackend() && rex::getUser() && 'demo_addon' == rex_be_controller::getCurrentPagePart(1)) {
    // Die `style.css` bei allen Pages und Subpages des AddOns im Backend einbinden
    rex_view::addCssFile($addon->getAssetsUrl('css/style.css'));

    // Die `script.js` bei allen Pages und Subpages des AddOns im Backend einbinden
    rex_view::addJsFile($addon->getAssetsUrl('js/script.js'), [rex_view::JS_IMMUTABLE => true]);

    // Die `eps.js` nur auf der Unterseite `eplist` des AddOns einbinden
    if ('eps' == rex_be_controller::getCurrentPagePart(2) && 'eplist' == rex_be_controller::getCurrentPagePart(3)) {
        rex_view::addJsFile($addon->getAssetsUrl('js/eps.js'), [rex_view::JS_IMMUTABLE => true]);
    }

    // JavaScript-Variable für das Backend im Head-Bereich setzen (var rex[])
    rex_view::setJsProperty('demo_addon_js', 'JS-Value demo_addon ...');
}

// Eigene PHP-Funktionen im Backend und Frontend einbinden
// PHP-Dateien mit eigenen Funktionen sollten im Ordner `functions` abgelegt werden
$addon->includeFile('functions/ep_functions.php');

// Include der Extensionpoint-PHP's im Verzeichnis `pages/extensionpoints/`
demo_addon_includeExtensionPoints();

// Eigene PHP-Funktionen einbinden, nur wenn im Backend eingeloggt
if (rex::isBackend() && rex::getUser()) {
    // Include der AddOn-Eigenen Dateien für das Backend
    //$addon->includeFile('functions/backend_functions.php');
}

// Falls eigene PHP-Funktionen nur für das Frontend benötigt werden, können diese hier eingebunden werden
if (rex::isFrontend()) {
    // Include der AddOn-Eigenen Dateien für das Frontend
    //$addon->includeFile('functions/frontend_functions.php');
}