-
Notifications
You must be signed in to change notification settings - Fork 5
/
boot.php
66 lines (51 loc) · 3.28 KB
/
boot.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?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');
}