From fc6f29038e63208df1aaab75d0c9f7cba9f3f78b Mon Sep 17 00:00:00 2001 From: aeberhard Date: Sat, 1 Feb 2020 00:53:42 +0100 Subject: [PATCH 01/10] =?UTF-8?q?=C3=9Cberarbeitung=20demo=5Faddon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erster Stand der Überarbeitung/Erweiterung des demo_addons --- .gitignore | 7 + .php_cs.dist | 52 +++++ CHANGELOG.md | 16 ++ LICENSE | 6 +- README.de.md | 29 +++ README.md | 39 ++-- assets/css/style.css | 7 +- assets/js/script.js | 9 +- boot.php | 12 +- install.php | 3 +- lang/de_de.lang | 45 ++++- lang/en_gb.lang | 30 --- lang/es_es.lang | 30 --- lang/pt_br.lang | 30 --- lang/sv_se.lang | 30 --- package.yml | 53 ++++- pages/DESCRIPTION.de.md | 49 +++++ pages/DESCRIPTION.md | 1 + pages/EXTENSIONPOINTS.de.md | 1 + pages/EXTENSIONPOINTS.md | 1 + pages/TABLES.de.md | 1 + pages/TABLES.md | 1 + pages/{config.php => config.classic_form.php} | 184 ++++++++++-------- pages/config.rex_config_form.php | 92 +++++++++ pages/main.php | 8 - 25 files changed, 484 insertions(+), 252 deletions(-) create mode 100644 .gitignore create mode 100644 .php_cs.dist create mode 100644 README.de.md delete mode 100644 lang/en_gb.lang delete mode 100644 lang/es_es.lang delete mode 100644 lang/pt_br.lang delete mode 100644 lang/sv_se.lang create mode 100644 pages/DESCRIPTION.de.md create mode 100644 pages/DESCRIPTION.md create mode 100644 pages/EXTENSIONPOINTS.de.md create mode 100644 pages/EXTENSIONPOINTS.md create mode 100644 pages/TABLES.de.md create mode 100644 pages/TABLES.md rename pages/{config.php => config.classic_form.php} (53%) create mode 100644 pages/config.rex_config_form.php delete mode 100644 pages/main.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8949d64 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# ignore TODO +.TODO.txt +.todo.txt + +# ignore TEST +.TEST.txt +.test.txt diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 0000000..6401a1f --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,52 @@ +in([__DIR__]); + +return PhpCsFixer\Config::create() + ->setUsingCache(true) + ->setRiskyAllowed(true) + ->setRules([ + '@Symfony' => true, + '@Symfony:risky' => true, + '@PHP71Migration' => true, + '@PHP71Migration:risky' => true, + '@PHPUnit60Migration:risky' => true, + 'array_indentation' => true, + 'array_syntax' => ['syntax' => 'short'], + 'blank_line_before_statement' => false, + 'braces' => ['allow_single_line_closure' => false], + 'comment_to_phpdoc' => true, + 'concat_space' => false, + 'declare_strict_types' => false, + 'function_to_constant' => ['functions' => ['get_class', 'get_called_class', 'php_sapi_name', 'phpversion', 'pi']], + 'heredoc_to_nowdoc' => true, + 'list_syntax' => ['syntax' => 'short'], + 'logical_operators' => true, + 'native_constant_invocation' => false, + 'no_blank_lines_after_phpdoc' => false, + 'no_php4_constructor' => true, + 'no_superfluous_elseif' => true, + 'no_unreachable_default_argument_value' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'ordered_imports' => true, + 'php_unit_internal_class' => true, + 'php_unit_method_casing' => true, + 'php_unit_set_up_tear_down_visibility' => true, + 'php_unit_test_case_static_method_calls' => ['call_type' => 'this'], + 'phpdoc_annotation_without_dot' => false, + 'phpdoc_no_package' => false, + 'phpdoc_order' => true, + 'phpdoc_trim_consecutive_blank_line_separation' => true, + 'phpdoc_types_order' => false, + 'phpdoc_var_annotation_correct_order' => true, + 'psr4' => false, + 'semicolon_after_instruction' => false, + 'space_after_semicolon' => true, + 'static_lambda' => true, + 'string_line_ending' => true, + 'void_return' => false, + 'yoda_style' => true, + ]) + ->setFinder($finder); diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b1bad3..01ef76e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## Version 1.2.0beta1 // 31.01.2020 + +Neu + +* Addon-Struktur, Navigation komplett überarbeitet/erweitert +* Addon-Einstellungen erweitert +* Addon-Einstellungen mit rex_config_form + +Änderungen + +* REDAXO-Version auf 5.8 gesetzt +* PHP-Version auf 7.0 gesetzt +* README geändert und Sprachversion .de hinzugefügt +* package.yml erweitert und kommentiert +* de_de.lang-Datei erweitert/angepasst/dokumentiert + ## Version 1.1.0 // xx.xx.2018 Neu diff --git a/LICENSE b/LICENSE index 4a696e1..07a5775 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ -The MIT License (MIT) +MIT License -Copyright (c) 2016 Friends Of REDAXO +Copyright (c) 2019 Friends Of REDAXO Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file diff --git a/README.de.md b/README.de.md new file mode 100644 index 0000000..196dbaa --- /dev/null +++ b/README.de.md @@ -0,0 +1,29 @@ +# Beispiel-Addon für REDAXO 5 + +Das Addon `demo_addon` zeigt den Aufbau und Basisfunktionalität von Addons und viele Beispiele von REDAXO-Funktionen zur Verwendung in eigenen Addons. Das Addon oder auch nur Teile davon können/sollen gerne für die Entwicklung eigener Addons verwendet werden. +Erweiterungen des Addons `demo_addon` gerne als PR (Pull-Request) oder Hinweise bzw. Verbesserungen als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). + +## demo_addon in der Kurzübersicht + +* dokumentierter Quellcode mit Beispielen +* dokumentierte package.yml +* dokumentierte .lang-Datei +* Addon-Einstellungen (rex_config_form, klassisch) +* Beispiel einer Tabellenverwaltung mit `rex_form` (inkl. Beispieltabelle) +* Beispiele für Extension Points +* `documentation`-Plugin als Basis für eine Hilfe/Dokumentation für REDAXO-AddOns + +## AddOn-Entwicklung in der REDAXO-Dokumentation + +* [Aufbau und Struktur](https://redaxo.org/doku/master/addon-struktur) +* [Package (package.yml)](https://redaxo.org/doku/master/addon-package) +* [Assets (CSS, JavaScript ...)](https://redaxo.org/doku/master/addon-assets) +* [Konfigurations-Formulare](https://redaxo.org/doku/master/konfiguration_form) +* [AddOn Veröffentlichung](https://redaxo.org/doku/master/addon-veroeffentlichung) + +## Sonstiges + +* [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) +* REDAXO [API Dcumentation](https://friendsofredaxo.github.io/phpdoc/) bei Friends Of REDAXO +* Eine Sammlung nützlicher Tricks zu REDAXO CMS ab Version 5 [REDAXO-Tricks der Friends Of REDAXO](https://friendsofredaxo.github.io/tricks) +* Bitte auch den Artikel [Änderungen REDAXO 4 zu 5](https://redaxo.org/doku/master/aenderungen-v4-v5) in der REDAXO-Dokumentation beachten! diff --git a/README.md b/README.md index 6a3be27..f71c605 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,29 @@ -# Beispiel-Addon für REDAXO 5 +# Sample-Addon for REDAXO 5 -Zeigt den Aufbau und Basisfunktionalität von Addons. +The addon `demo_addon` shows the structure and basic functionality of addons and many examples of REDAXO functions for use in your own addons. The addon or just parts of it can / should be used for the development of your own addons. +Extensions to the `demo_addon` addon, like PR (pull request) or notes or improvements as an [issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). -* `documentation`-Plugin als Basis für eine Hilfe/Dokumentation für REDAXO5-AddOns -* Hauptseite des Addons - Beschreibungen der Beispiele in einzelnen Blöcken und Hinweise auf den PHP-Code (todo) -* Quellcode dokumentieren (todo) -* Addon-Einstellungen in Tabelle `rex_config` speichern -* Beispiel einer Tabellenverwaltung mit `rex_form` (inkl. Beispieltabelle) (todo) -* Beispiel Extension Point(s) (todo) -* ... +## demo_addon in the short overview -## AddOn-Entwicklung in der REDAXO-Dokumentation +* Documented source code with examples +* documented package.yml +* documented .lang file +* Addon settings (rex_config_form, classic) +* Example of a table management with `rex_form` (incl. Example table) +* Examples of extension points +* `documentation` plugin as the basis for help / documentation for REDAXO add-ons -* [Aufbau und Struktur](https://redaxo.org/doku/master/addon-struktur) -* [Package (package.yml](https://redaxo.org/doku/master/addon-package) -* [Assets](https://redaxo.org/doku/master/addon-assets) -* [AddOn Veröffentlichung](https://redaxo.org/doku/master/addon-veroeffentlichung) +## Addon development in the REDAXO documentation -## Sonstiges +* [Structure and structure] (https://redaxo.org/doku/master/addon-struktur) +* [Package (package.yml)] (https://redaxo.org/doku/master/addon-package) +* [Assets (CSS, JavaScript ...)] (https://redaxo.org/doku/master/addon-assets) +* [Configuration forms] (https://redaxo.org/doku/master/konfiguration_form) +* [AddOn publication] (https://redaxo.org/doku/master/addon-veroeffständigung) -Bitte auch den Artikel "[Änderungen REDAXO 4 zu 5](https://redaxo.org/doku/master/aenderungen-v4-v5)" in der REDAXO-Dokumentation beachten! +## Others + +* [REDAXO 5 documentation] (https://redaxo.org/doku/master) +* REDAXO [API Dcumentation] (https://friendsofredaxo.github.io/phpdoc/) at Friends Of REDAXO +* A collection of useful tricks for REDAXO CMS from version 5 [REDAXO tricks of the Friends Of REDAXO] (https://friendsofredaxo.github.io/tricks) +* Please also note the article [Changes to REDAXO 4 to 5] (https://redaxo.org/doku/master/aenderungen-v4-v5) in the REDAXO documentation! diff --git a/assets/css/style.css b/assets/css/style.css index 296b158..1e82204 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,2 +1,7 @@ +/* +Demo-Addon +Diese CSS-Datei wird in der boot.php des Addons demo_addon eingebunden (rex_view::addCssFile) +*/ + .demo_addon { -} \ No newline at end of file +} diff --git a/assets/js/script.js b/assets/js/script.js index e8fecdc..35fa12b 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,3 +1,8 @@ +/* +Demo-Addon +Diese JavaScript-Datei wird in der boot.php des Addons demo_addon eingebunden (rex_view::addJsFile) +*/ + // jQuery closure (»Funktionsabschluss«) // Erzeugt einen Scope, also einen privaten Bereich // http://molily.de/javascript-core/#closures @@ -8,7 +13,7 @@ // https://api.jquery.com/ready/ $(document).ready(function () { - console.log('Demo-Addon'); + console.log('Demo-Addon ... Ausgabe auf der JS-Konsole'); }); -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/boot.php b/boot.php index 7394fa4..bee4157 100644 --- a/boot.php +++ b/boot.php @@ -22,14 +22,16 @@ // 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 einbinden -if (rex::isBackend() && rex::getUser()) { - - // Die style.css überall im Backend einbinden +// Assets im Backend einbinden, nur beim demo_addon +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($this->getAssetsUrl('css/style.css')); // Die script.js nur auf der Unterseite »config« des Addons einbinden - if (rex_be_controller::getCurrentPagePart(2) == 'config') { + if ('config' == rex_be_controller::getCurrentPagePart(2)) { rex_view::addJsFile($this->getAssetsUrl('js/script.js')); } + + // JavaScript-Variable für das Backend setzen (var rex[]) + rex_view::setJsProperty('demo_addon_js', 'JS-Value demo_addon ...'); } diff --git a/install.php b/install.php index 8695a58..fa3ef19 100644 --- a/install.php +++ b/install.php @@ -12,8 +12,7 @@ // Hier können zum Beispiel Konfigurationswerte in der rex_config initialisiert werden. // Das if-Statement ist notwendig, um bei einem reinstall die Konfiguration nicht zu überschreiben. if (!$this->hasConfig()) { - $this->setConfig('url', 'http://www.example.com'); - $this->setConfig('ids', [1, 4, 5]); + $this->setConfig('url', 'https://friendsofredaxo.github.io/'); } // Mit einer rex_functional_exception kann die Installation mit einer Fehlermeldung abgebrochen werden. diff --git a/lang/de_de.lang b/lang/de_de.lang index 0a6f1ef..60eb16d 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -1,30 +1,59 @@ # Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix -# Die Keys sollten mit dem Addonnamen beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können +# Die Keys sollten mit dem Addonnamen (Addon-Präfix) beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können +# also hier Addon-Präfix 'demo_addon_' -demo_addon_title = Demo-Addon +# Bezeichnung in der REDAXO-Navigation -> translate:navititle in der package.yml +demo_addon_navititle = Demo-Addon -demo_addon_main = Hauptseite -demo_addon_main_title = Demo-Addon Titel Hauptseite -demo_addon_main_content = Inhalt Demo-Addon-Seite +# Addon-Titel für alle Addon-Seiten, Addon-Präfix (hier `demo_addon_`) + `title` -> `demo_addon_title` +demo_addon_title = REDAXO Demo-Addon +# Eigener Block mit Bezeichnung in der REDAXO-Navigation +# `navigation_` + addon-Name hier also `navigation_demo_addon` +# in der package.yml dess Addons folgendes unter page angeben: `block: demo_addon` +navigation_demo_addon = DEMO-Addon + +# Hauptnavi-Punkte des Addons +demo_addon_main = Demo-Addon demo_addon_config = Einstellungen +demo_addon_tables = Tabellen +demo_addon_eps = Extension Points +demo_addon_hidden_page = Versteckte Seite + +# Reiter demo_addon +demo_addon_description = Beschreibung +demo_addon_hidden_subpage = Versteckte Unterseite + +# Reiter Einstellungen +demo_addon_config_rex_config_form = mit rex_config_form +demo_addon_config_classic_form = klassisch (Fragmente) + +demo_addon_config_title_rex_config = Einstellungen mit rex_config_form +demo_addon_config_title_classic = Einstellungen klassisch (Fragmente) + demo_addon_config_legend1 = Einfache Felder demo_addon_config_url = URL +demo_addon_config_text = Text demo_addon_config_checkbox = Checkbox demo_addon_config_select = Select demo_addon_config_multiselect = Multiselect +demo_addon_config_multiselect_note = Mehrfachauswahl mit STRG bzw. CMD +demo_addon_config_radio_fe = Frontend +demo_addon_config_radio_be = Backend demo_addon_config_legend2 = Medienpool, Linkmap usw. demo_addon_config_file = Datei +demo_addon_config_files = Datei-Liste demo_addon_config_article = Artikel +demo_addon_config_articles = Artikel-Liste demo_addon_config_categories = Kategorienauswahl demo_addon_config_pageids = Seitenauswahl demo_addon_config_save = Einstellungen speichern demo_addon_config_saved = Einstellungen wurden gespeichert! -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein -perm_general_demo_addon[] = demo_addon[] - Rechte für Demo-Addon -perm_general_demo_addon[config] = demo_addon[config] - Rechte für Demo-Addon-Konfiguration +# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein +perm_general_demo_addon[] = Rechte für Demo-Addon +perm_general_demo_addon[config] = Rechte für Demo-Addon-Konfiguration diff --git a/lang/en_gb.lang b/lang/en_gb.lang deleted file mode 100644 index 22b9b02..0000000 --- a/lang/en_gb.lang +++ /dev/null @@ -1,30 +0,0 @@ -# Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix - -# Die Keys sollten mit dem Addonnamen beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können - -demo_addon_title = Demo-AddOn - -demo_addon_main = Main page -demo_addon_main_title = Demo-AddOn title main page -demo_addon_main_content = Content Demo-AddOn page - -demo_addon_config = Settings -demo_addon_config_legend1 = Default fields -demo_addon_config_url = URL -demo_addon_config_checkbox = Checkbox -demo_addon_config_select = Select -demo_addon_config_multiselect = Multiselect - -demo_addon_config_legend2 = Medianpool, Linkmap etc. -demo_addon_config_file = File -demo_addon_config_article = Article -demo_addon_config_categories = Category select -demo_addon_config_pageids = Page select - -demo_addon_config_save = Save settings -demo_addon_config_saved = Settings saved! - -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein - -perm_general_demo_addon[] = demo_addon[] - Rights for Demo-Addon -perm_general_demo_addon[config] = demo_addon[config] - Rights for Demo-Addon Settings diff --git a/lang/es_es.lang b/lang/es_es.lang deleted file mode 100644 index 037bc28..0000000 --- a/lang/es_es.lang +++ /dev/null @@ -1,30 +0,0 @@ -# Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix - -# Die Keys sollten mit dem Addonnamen beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können - -demo_addon_title = Demostración Addon - -demo_addon_main = Casa -demo_addon_main_title = Página principal del título de complemento de demostración -demo_addon_main_content = Página de complemento de demostración de contenido - -demo_addon_config = Ajustes -demo_addon_config_legend1 = Campos simples -demo_addon_config_url = URL -demo_addon_config_checkbox = Casilla de selección -demo_addon_config_select = Seleccionar -demo_addon_config_multiselect = SelecciónMúltiple - -demo_addon_config_legend2 = Grupo de medios, mapa de enlace, etc. -demo_addon_config_file = Documentos -demo_addon_config_article = Artículo -demo_addon_config_categories = Selección de categoría -demo_addon_config_pageids = Selección de páginas - -demo_addon_config_save = Guardar configuraciones -demo_addon_config_saved = Los ajustes han sido guardados! - -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein - -perm_general_demo_addon[] = demo_addon[] - Derechos para el complemento de demostración -perm_general_demo_addon[config] = demo_addon[config] - Derechos para configuración de complemento de demostración diff --git a/lang/pt_br.lang b/lang/pt_br.lang deleted file mode 100644 index a4587b5..0000000 --- a/lang/pt_br.lang +++ /dev/null @@ -1,30 +0,0 @@ -# Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix - -# Die Keys sollten mit dem Addonnamen beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können - -demo_addon_title = Demo-AddOn - -demo_addon_main = Página principal -demo_addon_main_title = Demo-AddOn Título da pagina principal -demo_addon_main_content = Conteúdo da página Demo-AddOn - -demo_addon_config = Configurações -demo_addon_config_legend1 = Campos padrão -demo_addon_config_url = URL -demo_addon_config_checkbox = Checkbox -demo_addon_config_select = Selecionar -demo_addon_config_multiselect = Multiselect - -demo_addon_config_legend2 = Medianpool, Linkmap etc. -demo_addon_config_file = Arquivo -demo_addon_config_article = Produto -demo_addon_config_categories = Selecionar categoria -demo_addon_config_pageids = Selecionar página - -demo_addon_config_save = Salvar configurações -demo_addon_config_saved = Configurações salvas - -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein - -perm_general_demo_addon[] = demo_addon[] - Permissões para Demo-Addon -perm_general_demo_addon[config] = demo_addon[config] - Permissões para configuração Demo-Addon diff --git a/lang/sv_se.lang b/lang/sv_se.lang deleted file mode 100644 index c5b3fd4..0000000 --- a/lang/sv_se.lang +++ /dev/null @@ -1,30 +0,0 @@ -# Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix - -# Die Keys sollten mit dem Addonnamen beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können - -demo_addon_title = Demo-AddOn - -demo_addon_main = Huvudsida -demo_addon_main_title = Demo-Addon titel huvudsida -demo_addon_main_content = Innehåll Demo-Addon sida - -demo_addon_config = Inställningar -demo_addon_config_legend1 = Enkla fält -demo_addon_config_url = URL -demo_addon_config_checkbox = Checkbox -demo_addon_config_select = Select -demo_addon_config_multiselect = Multiselect - -demo_addon_config_legend2 = Medianpool (filhanterare), Linkmap etc. -demo_addon_config_file = Fil -demo_addon_config_article = Artikel -demo_addon_config_categories = Välj kategori -demo_addon_config_pageids = Välj sida - -demo_addon_config_save = Spara inställningar -demo_addon_config_saved = Inställningarna har sparats! - -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein - -perm_general_demo_addon[] = demo_addon[] - Rights for Demo-Addon -perm_general_demo_addon[config] = demo_addon[config] - Rights for Demo-Addon Settings diff --git a/package.yml b/package.yml index d888cb1..eb6a673 100644 --- a/package.yml +++ b/package.yml @@ -1,32 +1,67 @@ # Alle hier gesetzten Werte können über `$addon->getProperty($key)` abgefragt werden package: demo_addon # Pflichtfeld -version: '1.0.0' # Pflichtfeld -author: Friends Of REDAXO -supportpage: https://github.com/FriendsOfREDAXO/demo_addon +version: '1.2.0beta1' # Pflichtfeld +author: Friends Of REDAXO # Pflichtfeld für FOR-Addons +supportpage: https://github.com/FriendsOfREDAXO/demo_addon # Github-Adresse des Addons -# Seiten +# Werte die mit `translate:` beginnen, werden anhand der Sprachdatei (lang/sprache.lang) übersetzt. +# Der Addon-Präfix (hier `demo_addon_`) kann weggelassen werden. + +# Seiten des Addons page: - title: 'translate:title' # Werte die mit `translate:` beginnen, werden anhand der Sprachdatei übersetzt. Der Addon-Präfix (hier `demo_addon_`) kann weggelassen werden. + title: 'translate:navititle' # Bezeichnung in der REDAXO Navigation + icon: rex-icon fa-desktop # Icon von Font Awesome perm: admin # Seite ist nur für Admins erreichbar + + # Eigener Block in der REDAXO-Navigation + # Bezeichnung in der .lang-Datei mit `navigation_+addon-Id` also hier `navigation_demo_addon` + block: demo_addon + # Unterseiten subpages: main: title: 'translate:main' + icon: rex-icon fa-desktop # Icon von Font Awesome perm: demo_addon[] # Das AddOn stellt ein Benutzerrecht bereit, das aktiviert sein muss, um diese Unterseite zu erreichen. Admins haben alle Rechte. + subpages: # Weitere Subpages der Hauptseite + readme: { title: 'README', subPath: 'README.md'} # README.md aus Addon-Pfad einbinden + description: { title: 'translate:description', subPath: 'pages/DESCRIPTION.md'} + changelog: {title: 'CHANGELOG', subPath: 'CHANGELOG.md'} # Abweichender Titel zur .md-Datei + hidden: { title: 'translate:hidden_subpage', subPath: 'pages/DESCRIPTION.md', hidden: true} # Versteckte Subpage, nur als Beispiel config: title: 'translate:config' - perm: demo_addon[config] # Das noch spezifischer AddOn-Benutzerrecht 'config' ist für diese Unterseite erforderlich. Admins haben alle Rechte. + perm: demo_addon[config] # Das noch spezifischere AddOn-Benutzerrecht 'config' ist für diese Unterseite erforderlich. Admins haben alle Rechte. icon: rex-icon fa-wrench # Icon von Font Awesome + subpages: # Weitere Subpages der Seite config + rex_config_form: + title: 'translate:config_rex_config_form' + classic_form: + title: 'translate:config_classic_form' + tables: + title: 'translate:tables' + icon: rex-icon fa-table + subpages: # Weitere Subpages der Seite tables + tables: { title: 'translate:tables', subPath: 'pages/TABLES.md'} + eps: + title: 'translate:eps' + icon: rex-icon fa-rocket + subpages: # Weitere Subpages der Seite tables + eps: { title: 'translate:eps', subPath: 'pages/EXTENSIONPOINTS.md'} + hidden: + title: 'translate:hidden_page' + icon: rex-icon fa-ban + subPath: 'pages/DESCRIPTION.md' + hidden: true # Versteckte Page, nur als Beispiel # Abhängigkeiten -# Anforderungen ans System oder anderere AddOns, um dieses AddOn installieren oder update zu können +# Anforderungen ans System oder anderere AddOns, um dieses AddOn installieren oder updaten zu können requires: - redaxo: '^5.5' # benötigt mindestens REDAXO 5.5 + redaxo: '^5.8' # benötigt mindestens REDAXO 5.8 packages: media_manager: '^2.0.1' # benötigt mindestens das Addon Media Manager 2.0.1 php: - version: '>=5.6' # benötigt mindestens PHP 5.6 + version: '>=7.0' # benötigt mindestens PHP 7.0 extensions: [gd, xml] # benötigt die PHP-Extensions GDlib und XML # Plugins die automatisch installiert werden sollen diff --git a/pages/DESCRIPTION.de.md b/pages/DESCRIPTION.de.md new file mode 100644 index 0000000..126fe78 --- /dev/null +++ b/pages/DESCRIPTION.de.md @@ -0,0 +1,49 @@ +# Über das demo_addon + +Das `demo_addon` soll den Einstieg in die Addon-Entwicklung erleichtern und dient als Inspiration :) +Der Quellcode (PHP), package.yml und z.B. die .lang-Dateien sind so gut wie möglich dokumentiert und werden vom REDAXO-Team geprüft. + +Im `demo_addon` werden Lösungswege am praktischen Beispiel und "Best practice" gezeigt, unterstützend zur REDAXO-Dokumentation. + +* [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) +* [Aufbau und Struktur von Addons](https://redaxo.org/doku/master/addon-struktur) +* [Package (package.yml)](https://redaxo.org/doku/master/addon-package) + +## Einstellungen + +Oft benötigen Addons eigene Einstellungen. Hier werden zwei Methoden für die Umsetzung zum speichern der Addon-Einstellungen gezeigt. Einmal die "klassiche" Methode mit Hilfe von REDAXO-Funktionen und Fragmenten. Und zum anderen die aktuelle Methote mit der Verwendung der Klasse `rex_config_form`. +Hier am besten mal einen Blick in den Quellcode der beiden Dateien `config.rex_config_form.php` und `config.classic_form.php` werfen. + +* [Zu den Einstellungen](?page=demo_addon/config/rex_config_form) + +## Tabellen + +TODO +. Beschreibungsseite Tabellen in TABLES.md +. Tabellenverwaltung mit rex_list/rex_form, Adressverwaltung, Cusotm-Format für z.B. Geburtsdatum +. YForm einbinden im Addon? + +* [Zu den Tabellen](?page=demo_addon/tables/tables) + +## Extension-Points + +TODO +. Beschreibungsseite Extension-Points in EXTENSIONPOINTS.md +. Beispiele und Übersicht der Extension-Poits +. Weiterverarbeitung der EP Parameter +. Ausgabe der EP's z.B. im Systemlog + +* [Zu den Extension-Points](?page=demo_addon/eps/eps) + +## Quelltexte + +TODO +. Beschreibung in die Quelltexte des demo_addons zu schauen! + +## Sonstiges + +TODO +. install.php und Anlegen von Tabellen mit ensure usw. +. uninstall.php +. zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist +. Beschreibung und Anwendung Permission-Check diff --git a/pages/DESCRIPTION.md b/pages/DESCRIPTION.md new file mode 100644 index 0000000..c5018c6 --- /dev/null +++ b/pages/DESCRIPTION.md @@ -0,0 +1 @@ +DESCRIPTION.md \ No newline at end of file diff --git a/pages/EXTENSIONPOINTS.de.md b/pages/EXTENSIONPOINTS.de.md new file mode 100644 index 0000000..fea3edf --- /dev/null +++ b/pages/EXTENSIONPOINTS.de.md @@ -0,0 +1 @@ +EXTENSIONPOINTS.de.md \ No newline at end of file diff --git a/pages/EXTENSIONPOINTS.md b/pages/EXTENSIONPOINTS.md new file mode 100644 index 0000000..1873b9c --- /dev/null +++ b/pages/EXTENSIONPOINTS.md @@ -0,0 +1 @@ +EXTENSIONPOINTS.md \ No newline at end of file diff --git a/pages/TABLES.de.md b/pages/TABLES.de.md new file mode 100644 index 0000000..3710874 --- /dev/null +++ b/pages/TABLES.de.md @@ -0,0 +1 @@ +TABLES.de.md \ No newline at end of file diff --git a/pages/TABLES.md b/pages/TABLES.md new file mode 100644 index 0000000..7303b01 --- /dev/null +++ b/pages/TABLES.md @@ -0,0 +1 @@ +TABLES.md \ No newline at end of file diff --git a/pages/config.php b/pages/config.classic_form.php similarity index 53% rename from pages/config.php rename to pages/config.classic_form.php index 7e0172f..9288225 100644 --- a/pages/config.php +++ b/pages/config.classic_form.php @@ -1,31 +1,46 @@ isValid()) { +// Formular abgesendet - Einstellungen speichern +if ('1' == rex_post('formsubmit', 'string') && !$csrfToken->isValid()) { echo rex_view::error(rex_i18n::msg('csrf_token_invalid')); -} elseif (rex_post('formsubmit', 'string') == '1') { +} elseif ('1' == rex_post('formsubmit', 'string')) { $this->setConfig(rex_post('config', [ ['url', 'string'], + ['text', 'string'], ['checkbox', 'string'], ['select', 'string'], ['multiselect', 'array[int]'], + ['radio', 'string'], ['file', 'string'], + ['files', 'string'], ['article', 'string'], + ['articles', 'string'], ['categories', 'array[int]'], - ['pageids', 'string'], ])); echo rex_view::success($this->i18n('config_saved')); } +// Fieldset 1 $content .= '
' . $this->i18n('config_legend1') . ''; -// Einfaches Textfeld +// 1.1 Einfaches Textfeld $formElements = []; $n = []; $n['label'] = ''; @@ -34,38 +49,53 @@ $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); +$content .= $fragment->parse('core/form/form.php'); + +// 1.2 Textarea +$formElements = []; +$n = []; +$n['label'] = ''; +$n['field'] = ''; +$formElements[] = $n; + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/form.php'); + +// 1.3 Checkbox -// Checkbox $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = 'getConfig('checkbox')) && $this->getConfig('checkbox') == '1' ? ' checked="checked"' : '') . ' value="1" />'; +$n['field'] = 'getConfig('checkbox')) && '|1|' == $this->getConfig('checkbox') ? ' checked="checked"' : '') . ' value="|1|" />'; $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/checkbox.php'); -// Select +// 1.4 Select + $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $select = new rex_select(); $select->setId('demo_addon-config-select'); -$select->setAttribute('class', 'form-control'); +$select->setAttribute('class', 'form-control selectpicker'); $select->setName('config[select]'); -$select->addOption(0, 0); -$select->addOption(1, 1); +$select->addOption('eins', 1); +$select->addOption('zwei', 2); +$select->addOption('drei', 3); $select->setSelected($this->getConfig('select')); $n['field'] = $select->get(); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); +$content .= $fragment->parse('core/form/form.php'); + +// 1.5 Multiselect -// Multiselect $formElements = []; $n = []; $n['label'] = ''; @@ -74,82 +104,94 @@ $select->setMultiple(); $select->setAttribute('class', 'form-control'); $select->setName('config[multiselect][]'); -for ($i = 1; $i < 6; ++$i) { +for ($i = 1; $i <= 10; ++$i) { $select->addOption($i, $i); } -$select->setSelected($this->getConfig('multiselect')); +$mselect = $this->getConfig('multiselect'); + +/* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert */ +if (!is_array($mselect)) { + $mselect = explode('|', $mselect); +} /* Ende FIX */ + +$select->setSelected($mselect); $n['field'] = $select->get(); +$n['field'] .= $this->i18n('config_multiselect_note'); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); +$content .= $fragment->parse('core/form/form.php'); + +// 1.6 Radio-Group + +$formElements = []; +$n = []; +$n['label'] = ''; +$n['field'] = 'getConfig('radio')) && 'frontend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; +$formElements[] = $n; + +$n = []; +$n['label'] = ''; +$n['field'] = 'getConfig('radio')) && 'backend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; +$formElements[] = $n; + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/radio.php'); $content .= '
'; +// Fieldset 2 $content .= '
' . $this->i18n('config_legend2') . ''; -// Dateiauswahl Medienpool-Widget +// 2.1 Media-Widget $formElements = []; $n = []; $n['label'] = ''; +$n['field'] = rex_var_media::getWidget(1, 'config[file]', $this->getConfig('file')); +$formElements[] = $n; -$n['field'] = ' -
- -
-'; +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/form.php'); + +// 2.2 MediaList-Widget +$formElements = []; +$n = []; +$n['label'] = ''; +$n['field'] = rex_var_medialist::getWidget(1, 'config[files]', $this->getConfig('files')); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); +$content .= $fragment->parse('core/form/form.php'); -// Artikel +// 2.3 Link-Widget $formElements = []; -$artname = ''; -$art = rex_article::get($this->getConfig('article')); -if ($art) { - $artname = $art->getValue('name'); -} $n = []; $n['label'] = ''; -$n['field'] = ' - -'; +$n['field'] = rex_var_link::getWidget(1, 'config[article]', $this->getConfig('article')); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/container.php'); -// Kategorienauswahl +// 2.4 Linklist-Widget +$formElements = []; +$n = []; +$n['label'] = ''; +$n['field'] = rex_var_linklist::getWidget(1, 'config[articles]', $this->getConfig('articles')); +$formElements[] = $n; + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/form.php'); + +$content .= '
'; + +// 2.5 Kategorienauswahl $formElements = []; $n = []; $n['label'] = ''; @@ -161,26 +203,12 @@ $category_select->setMultiple(true); $category_select->setAttribute('style', 'width:100%'); $category_select->setSelected($this->getConfig('categories')); - $n['field'] = $category_select->get(); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); - -// Seitenauswahl -$formElements = []; -$n = []; -$n['label'] = ''; -$n['field'] = rex_var_linklist::getWidget(1, 'config[pageids]', $this->getConfig('pageids')); -$formElements[] = $n; - -$fragment = new rex_fragment(); -$fragment->setVar('elements', $formElements, false); -$content .= $fragment->parse('core/form/container.php'); - -$content .= ''; +$content .= $fragment->parse('core/form/form.php'); // Save-Button $formElements = []; @@ -197,10 +225,10 @@ '; -// Ausgabe Formular +// Ausgabe des Formulars mit csrf-Schutz $fragment = new rex_fragment(); $fragment->setVar('class', 'edit'); -$fragment->setVar('title', $this->i18n('config')); +$fragment->setVar('title', $this->i18n('config_title_classic')); $fragment->setVar('body', $content, false); $fragment->setVar('buttons', $buttons, false); $output = $fragment->parse('core/page/section.php'); diff --git a/pages/config.rex_config_form.php b/pages/config.rex_config_form.php new file mode 100644 index 0000000..84a776d --- /dev/null +++ b/pages/config.rex_config_form.php @@ -0,0 +1,92 @@ +addFieldset($this->i18n('config_legend1')); + +// 1.1 Einfaches Textfeld +$field = $form->addInputField('text', 'url', null, ['class' => 'form-control']); +$field->setLabel($this->i18n('config_url')); + +// 1.2 Textarea +$field = $form->addTextAreaField('text'); +$field->setLabel($this->i18n('config_text')); + +// 1.3 Checkbox +$field = $form->addCheckboxField('checkbox'); +$field->addOption($this->i18n('config_checkbox'), 1); + +// 1.4 Select +$field = $form->addSelectField('select', $value = null, ['class' => 'form-control selectpicker']); +$field->setLabel($this->i18n('config_select')); +$select = $field->getSelect(); +$select->addOption('eins', 1); +$select->addOption('zwei', 2); +$select->addOption('drei', 3); + +// 1.5 Multiselect +$field = $form->addSelectField('multiselect', null, ['class' => 'form-control']); +$field->setAttribute('multiple', 'multiple'); +$field->setLabel($this->i18n('config_multiselect')); +$select = $field->getSelect(); +$select->setSize(5); +for ($i = 1; $i <= 10; ++$i) { + $select->addOption($i, $i); +} +$field = $form->addRawField('

'.$this->i18n('config_multiselect_note').'

'); + +// 1.6 Radio-Group +$field = $form->addRadioField('radio'); +$field->addOption($this->i18n('demo_addon_config_radio_fe'), 'frontend'); +$field->addOption($this->i18n('demo_addon_config_radio_be'), 'backend'); + +// Fieldset 2 +$form->addFieldset($this->i18n('config_legend2')); + +// 2.1 Media-Widget +$field = $form->addMediaField('file'); +$field->setLabel($this->i18n('config_file')); +$field->setAttribute('id', 'medienpool-linkmap-usw-file'); + +// 2.2 MediaList-Widget +$field = $form->addMediaListField('files'); +$field->setLabel($this->i18n('config_files')); + +// 2.3 Link-Widget +$field = $form->addLinkmapField('article'); +$field->setLabel($this->i18n('config_article')); + +// 2.4 Linklist-Widget +$field = $form->addLinklistField('articles'); +$field->setLabel($this->i18n('config_articles')); + +// 2.5 Kategorienauswahl +$category_select = new rex_category_select(false, false, false, true); +$category_select->setName('medienpool_linkmap_usw_[categories]'); +$category_select->setId('demo_addon-config-categories'); +$category_select->setSize('10'); +$category_select->setMultiple(true); +$category_select->setAttribute('style', 'width:100%'); +$category_select->setSelected($this->getConfig('categories')); +$html = $category_select->get(); +$field = $form->addRawField($html); +$field->setLabel($this->i18n('config_categories')); + +// Ausgabe des Formulars +$fragment = new rex_fragment(); +$fragment->setVar('class', 'edit', false); +$fragment->setVar('title', $this->i18n('config_title_rex_config'), false); +$fragment->setVar('body', $form->get(), false); +echo $fragment->parse('core/page/section.php'); diff --git a/pages/main.php b/pages/main.php deleted file mode 100644 index 651a509..0000000 --- a/pages/main.php +++ /dev/null @@ -1,8 +0,0 @@ -i18n('main_content'); - -$fragment = new rex_fragment(); -$fragment->setVar('title', $this->i18n('main_title'), false); -$fragment->setVar('body', $content, false); -echo $fragment->parse('core/page/section.php'); From c15daa61065513ab7ed74e4d5b26934895b7c3a5 Mon Sep 17 00:00:00 2001 From: Andreas Eberhard Date: Sat, 1 Feb 2020 20:18:02 +0100 Subject: [PATCH 02/10] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit thx dirk Co-Authored-By: Dirk Schürjohann --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f71c605..8fe766c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Sample-Addon for REDAXO 5 +# Sample addOn for REDAXO 5 The addon `demo_addon` shows the structure and basic functionality of addons and many examples of REDAXO functions for use in your own addons. The addon or just parts of it can / should be used for the development of your own addons. Extensions to the `demo_addon` addon, like PR (pull request) or notes or improvements as an [issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). From 6c7c3dac7a6920ffb380bac44878093a57db75af Mon Sep 17 00:00:00 2001 From: aeberhard Date: Sat, 1 Feb 2020 23:59:40 +0100 Subject: [PATCH 03/10] Updates - rex:ready statt document.ready in script.js - .gitignore entfernt - Beispieltabelle in install.php und uninstall.php --- .gitignore | 7 ------- CHANGELOG.md | 1 + assets/js/script.js | 8 ++++---- boot.php | 2 +- install.php | 14 ++++++++++++++ uninstall.php | 9 +++++++++ 6 files changed, 29 insertions(+), 12 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8949d64..0000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# ignore TODO -.TODO.txt -.todo.txt - -# ignore TEST -.TEST.txt -.test.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 01ef76e..9fb2189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Neu * Addon-Struktur, Navigation komplett überarbeitet/erweitert * Addon-Einstellungen erweitert * Addon-Einstellungen mit rex_config_form +* Demo-Tabelle in install.php und uninstall.php Änderungen diff --git a/assets/js/script.js b/assets/js/script.js index 35fa12b..a8c4cf5 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -8,12 +8,12 @@ Diese JavaScript-Datei wird in der boot.php des Addons demo_addon eingebunden (r // http://molily.de/javascript-core/#closures (function ($) { - // Document Ready + // rex:ready // Führt Code aus, sobald der DOM vollständig geladen wurde - // https://api.jquery.com/ready/ - $(document).ready(function () { + // https://redaxo.org/doku/master/addon-assets#rexready + $(document).on('rex:ready', function (event, container) { - console.log('Demo-Addon ... Ausgabe auf der JS-Konsole'); + console.log('Demo-Addon Konfiguration ... Ausgabe auf der JS-Konsole'); }); })(jQuery); diff --git a/boot.php b/boot.php index bee4157..81beca8 100644 --- a/boot.php +++ b/boot.php @@ -32,6 +32,6 @@ rex_view::addJsFile($this->getAssetsUrl('js/script.js')); } - // JavaScript-Variable für das Backend setzen (var rex[]) + // JavaScript-Variable für das Backend im Head-Bereich setzen (var rex[]) rex_view::setJsProperty('demo_addon_js', 'JS-Value demo_addon ...'); } diff --git a/install.php b/install.php index fa3ef19..646cef6 100644 --- a/install.php +++ b/install.php @@ -5,6 +5,20 @@ // Diese Datei ist keine Pflichtdatei mehr. // SQL-Anweisungen können auch weiterhin über die install.sql ausgeführt werden. +// Empfohlen wird aber die SQL-Anweisungen in der install.php auszuführen +// Siehe auch https://redaxo.org/doku/master/datenbank-tabellen +// Hier wird die Tabelle des Demo-Addons erstellt falls noch nicht vorhanden +rex_sql_table::get(rex::getTable('demo_addon')) + ->ensurePrimaryIdColumn() + ->ensureColumn(new rex_sql_column('anrede', 'tinyint(1)')) + ->ensureColumn(new rex_sql_column('vorname', 'varchar(60)', true)) + ->ensureColumn(new rex_sql_column('name', 'varchar(60)', true)) + ->ensureColumn(new rex_sql_column('strasse', 'varchar(60)', true)) + ->ensureColumn(new rex_sql_column('plz', 'varchar(60)', true)) + ->ensureColumn(new rex_sql_column('ort', 'varchar(60)', true)) + ->ensureColumn(new rex_sql_column('birthdate', 'date', true)) + ->ensureColumn(new rex_sql_column('status', 'tinyint(1)')) + ->ensure(); // Abhängigkeiten (PHP-Version, PHP-Extensions, Redaxo-Version, andere Addons/Plugins) sollten in die package.yml eingetragen werden. // Sie brauchen hier dann nicht mehr überprüft werden! diff --git a/uninstall.php b/uninstall.php index bd2c14a..c15eeaa 100644 --- a/uninstall.php +++ b/uninstall.php @@ -4,7 +4,16 @@ // Diese Datei ist keine Pflichtdatei mehr. +// Addon-Objekt bereitstellen und Data-Verzeichnis löschen (redaxo\data\addons\demo_addon\) +// Im addon-Kontext wäre auch $this->getDataPath() möglich +$addon = rex_addon::get('demo_addon'); +rex_dir::delete($addon->getDataPath()); + // SQL-Anweisungen können auch weiterhin über die uninstall.sql ausgeführt werden. +// Empfohlen wird aber die SQL-Anweisungen in der uninstall.php auszuführen +// Siehe auch https://redaxo.org/doku/master/datenbank-tabellen +// Die Tabelle des Demo-Addons wird hier gelöscht +rex_sql_table::get(rex::getTable('demo_addon'))->drop(); // Mit einer rex_functional_exception kann die Deistallation mit einer Fehlermeldung abgebrochen werden. $somethingIsWrong = false; From e308f6ea28d27bfe6760dd4a881d08c32ca3caa3 Mon Sep 17 00:00:00 2001 From: aeberhard Date: Wed, 12 Feb 2020 21:40:24 +0100 Subject: [PATCH 04/10] Demo-Tabelle und Verwaltung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Demo-Tabelle und Testdaten in install.php - Beispiel Tabellenverwaltung mit rex_list/rex_form - Textänderungen - Beispiele für Zugriff auf Addon-Properties - Ordner lib und Klasse demo_addon_logger hinzugefügt --- .php_cs.dist | 3 + CHANGELOG.md | 3 + README.de.md | 3 +- README.md | 3 +- assets/js/script.js | 1 + install.php | 31 +++- lang/de_de.lang | 31 +++- lib/README.md | 3 + lib/logger.php | 15 ++ package.yml | 9 +- pages/DESCRIPTION.de.md | 49 +++--- pages/DESCRIPTION.md | 4 +- pages/EXTENSIONPOINTS.md | 4 +- pages/TABLES.de.md | 29 +++- pages/TABLES.md | 4 +- pages/config.classic_form.php | 52 +++--- pages/config.rex_config_form.php | 36 +++-- pages/index.php | 4 +- pages/main.properties.php | 37 +++++ pages/tables.updatetable.php | 263 +++++++++++++++++++++++++++++++ plugins/documentation/LICENSE | 21 +++ update.php | 7 +- 22 files changed, 531 insertions(+), 81 deletions(-) create mode 100644 lib/README.md create mode 100644 lib/logger.php create mode 100644 pages/main.properties.php create mode 100644 pages/tables.updatetable.php create mode 100644 plugins/documentation/LICENSE diff --git a/.php_cs.dist b/.php_cs.dist index 6401a1f..9eb01cf 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -1,5 +1,8 @@ in([__DIR__]); diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fb2189..cda8017 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ Neu * Addon-Einstellungen erweitert * Addon-Einstellungen mit rex_config_form * Demo-Tabelle in install.php und uninstall.php +* Verwaltung der Demo-Tabelle mit rex_list und rex_form +* Demo-Seite für die Abfrage von Addon-Properties hinzugefügt Änderungen @@ -16,6 +18,7 @@ Neu * README geändert und Sprachversion .de hinzugefügt * package.yml erweitert und kommentiert * de_de.lang-Datei erweitert/angepasst/dokumentiert +* $this->i18n geändert in $addon->i18n ## Version 1.1.0 // xx.xx.2018 diff --git a/README.de.md b/README.de.md index 196dbaa..c4786da 100644 --- a/README.de.md +++ b/README.de.md @@ -9,7 +9,7 @@ Erweiterungen des Addons `demo_addon` gerne als PR (Pull-Request) oder Hinweise * dokumentierte package.yml * dokumentierte .lang-Datei * Addon-Einstellungen (rex_config_form, klassisch) -* Beispiel einer Tabellenverwaltung mit `rex_form` (inkl. Beispieltabelle) +* Beispiel einer Tabellenverwaltung mit `rex_list` und `rex_form` (inkl. Beispieltabelle) * Beispiele für Extension Points * `documentation`-Plugin als Basis für eine Hilfe/Dokumentation für REDAXO-AddOns @@ -20,6 +20,7 @@ Erweiterungen des Addons `demo_addon` gerne als PR (Pull-Request) oder Hinweise * [Assets (CSS, JavaScript ...)](https://redaxo.org/doku/master/addon-assets) * [Konfigurations-Formulare](https://redaxo.org/doku/master/konfiguration_form) * [AddOn Veröffentlichung](https://redaxo.org/doku/master/addon-veroeffentlichung) +* [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) ## Sonstiges diff --git a/README.md b/README.md index 8fe766c..11d8f23 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Extensions to the `demo_addon` addon, like PR (pull request) or notes or improve * documented package.yml * documented .lang file * Addon settings (rex_config_form, classic) -* Example of a table management with `rex_form` (incl. Example table) +* Example of a table management with `rex_list` and `rex_form` (incl. Example table) * Examples of extension points * `documentation` plugin as the basis for help / documentation for REDAXO add-ons @@ -20,6 +20,7 @@ Extensions to the `demo_addon` addon, like PR (pull request) or notes or improve * [Assets (CSS, JavaScript ...)] (https://redaxo.org/doku/master/addon-assets) * [Configuration forms] (https://redaxo.org/doku/master/konfiguration_form) * [AddOn publication] (https://redaxo.org/doku/master/addon-veroeffständigung) +* [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) ## Others diff --git a/assets/js/script.js b/assets/js/script.js index a8c4cf5..9961326 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -16,4 +16,5 @@ Diese JavaScript-Datei wird in der boot.php des Addons demo_addon eingebunden (r console.log('Demo-Addon Konfiguration ... Ausgabe auf der JS-Konsole'); }); + })(jQuery); diff --git a/install.php b/install.php index 646cef6..4c7b0c4 100644 --- a/install.php +++ b/install.php @@ -5,21 +5,44 @@ // Diese Datei ist keine Pflichtdatei mehr. // SQL-Anweisungen können auch weiterhin über die install.sql ausgeführt werden. -// Empfohlen wird aber die SQL-Anweisungen in der install.php auszuführen +// Empfohlen wird aber die SQL-Anweisungen in der install.php mit der Klasse rex_sql_table auszuführen // Siehe auch https://redaxo.org/doku/master/datenbank-tabellen -// Hier wird die Tabelle des Demo-Addons erstellt falls noch nicht vorhanden + +// Hier wird die Beispiel-Tabelle des Demo-Addons erstellt falls noch nicht vorhanden rex_sql_table::get(rex::getTable('demo_addon')) ->ensurePrimaryIdColumn() - ->ensureColumn(new rex_sql_column('anrede', 'tinyint(1)')) + ->ensureColumn(new rex_sql_column('anrede', 'tinyint(1)', true, 1)) ->ensureColumn(new rex_sql_column('vorname', 'varchar(60)', true)) ->ensureColumn(new rex_sql_column('name', 'varchar(60)', true)) ->ensureColumn(new rex_sql_column('strasse', 'varchar(60)', true)) ->ensureColumn(new rex_sql_column('plz', 'varchar(60)', true)) ->ensureColumn(new rex_sql_column('ort', 'varchar(60)', true)) ->ensureColumn(new rex_sql_column('birthdate', 'date', true)) - ->ensureColumn(new rex_sql_column('status', 'tinyint(1)')) + ->ensureColumn(new rex_sql_column('status', 'tinyint(1)', true, 1)) ->ensure(); +// Bei Addon-Installation/Update folgende Beispiel-Daten importieren +$demodata = [ + ['id' => 1, 'anrede' => 1, 'vorname' => 'Max', 'name' => 'Muster', 'strasse' => 'Schönstr. 1', 'plz' => '81333', 'ort' => 'München', 'birthdate' => '1966-01-01', 'status' => 1], + ['id' => 2, 'anrede' => 1, 'vorname' => 'Mario', 'name' => 'Neumann', 'strasse' => 'Waldweg 11a', 'plz' => '84405', 'ort' => 'Dorfen', 'birthdate' => '1968-06-06', 'status' => 1], + ['id' => 3, 'anrede' => 1, 'vorname' => 'Fredl', 'name' => 'Fesl', 'strasse' => 'Holzweg 33', 'plz' => '94227', 'ort' => 'Zwiesel', 'birthdate' => '1965-08-26', 'status' => 1], + ['id' => 4, 'anrede' => 2, 'vorname' => 'Monika', 'name' => 'Gruber', 'strasse' => 'Schnattergasse 1', 'plz' => '94469', 'ort' => 'Deggendorf', 'birthdate' => '1970-04-01', 'status' => 1], + ['id' => 5, 'anrede' => 1, 'vorname' => 'Helmut', 'name' => 'Schleich', 'strasse' => 'Birkenweg 36', 'plz' => '94469', 'ort' => 'Deggendorf', 'birthdate' => '1970-04-01', 'status' => 1], + ['id' => 6, 'anrede' => 2, 'vorname' => 'Lisa', 'name' => 'Fitz', 'strasse' => 'Deggendorfer Straße 33', 'plz' => '82152', 'ort' => 'Krailling', 'birthdate' => '1951-09-15', 'status' => 1], + ['id' => 7, 'anrede' => 1, 'vorname' => 'Donald', 'name' => 'Duck', 'strasse' => 'Hauptstraße 1', 'plz' => '88888', 'ort' => 'Entenhausen', 'birthdate' => '1934-06-09', 'status' => 1], +]; + +$sql = rex_sql::factory(); +$sql->setTable(rex::getTable('demo_addon')); + +foreach ($demodata as $row) { + $sql->addRecord(static function (rex_sql $record) use ($row) { + $record + ->setValues($row); + }); +} +$sql->insertOrUpdate(); + // Abhängigkeiten (PHP-Version, PHP-Extensions, Redaxo-Version, andere Addons/Plugins) sollten in die package.yml eingetragen werden. // Sie brauchen hier dann nicht mehr überprüft werden! diff --git a/lang/de_de.lang b/lang/de_de.lang index 60eb16d..7d53e40 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -23,6 +23,9 @@ demo_addon_hidden_page = Versteckte Seite # Reiter demo_addon demo_addon_description = Beschreibung +demo_addon_readme = README +demo_addon_changelog = CHANGELOG +demo_addon_properties = Properties demo_addon_hidden_subpage = Versteckte Unterseite # Reiter Einstellungen @@ -48,11 +51,37 @@ demo_addon_config_files = Datei-Liste demo_addon_config_article = Artikel demo_addon_config_articles = Artikel-Liste demo_addon_config_categories = Kategorienauswahl -demo_addon_config_pageids = Seitenauswahl demo_addon_config_save = Einstellungen speichern demo_addon_config_saved = Einstellungen wurden gespeichert! +# Reiter Tabellen +demo_addon_updatetable = Tabellenverwaltung + +demo_addon_thead_title = Demo Tabellenverwaltung mit rex_list/rex_form +demo_addon_thead_id = ID +demo_addon_thead_anrede = Anrede +demo_addon_thead_vorname = Vorname +demo_addon_thead_name = Name +demo_addon_thead_strasse = Strasse +demo_addon_thead_plz = PLZ +demo_addon_thead_ort = Ort +demo_addon_thead_birthdate = Geburtsdatum +demo_addon_thead_status = Status +demo_addon_thead_func = Funktionen +demo_addon_list_no_rows = Keine Einträge vorhanden! +demo_addon_list_mr = Herr +demo_addon_list_mrs = Frau +demo_addon_list_active = aktiv +demo_addon_list_inactive = inaktiv +demo_addon_list_edit = Datensatz bearbeiten +demo_addon_list_create_new_entry = Neuen Datensatz anlegen +demo_addon_confirm_delete = Datensatz löschen? +demo_addon_delete = Löschen +demo_addon_list_deleted = Datensatz wurde gelöscht! +demo_addon_list_activated = Datensatz wurde aktiviert! +demo_addon_list_deactivated = Datensatz wurde deaktiviert! +demo_addon_list_error = Beim Datenbank-Update ist ein Fehler aufgetreten! # Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein perm_general_demo_addon[] = Rechte für Demo-Addon diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 0000000..3711fd4 --- /dev/null +++ b/lib/README.md @@ -0,0 +1,3 @@ +Klassen in diesem Verzeichnis werden vom autoloader geladen + +logger.php extens REDAXO logger -> für die Ausgabe der Beispiele der Extension Points \ No newline at end of file diff --git a/lib/logger.php b/lib/logger.php new file mode 100644 index 0000000..16e6c57 --- /dev/null +++ b/lib/logger.php @@ -0,0 +1,15 @@ +=7.0' # benötigt mindestens PHP 7.0 + version: '^7.0' # benötigt mindestens PHP 7.0 extensions: [gd, xml] # benötigt die PHP-Extensions GDlib und XML # Plugins die automatisch installiert werden sollen diff --git a/pages/DESCRIPTION.de.md b/pages/DESCRIPTION.de.md index 126fe78..664e11b 100644 --- a/pages/DESCRIPTION.de.md +++ b/pages/DESCRIPTION.de.md @@ -1,7 +1,7 @@ # Über das demo_addon Das `demo_addon` soll den Einstieg in die Addon-Entwicklung erleichtern und dient als Inspiration :) -Der Quellcode (PHP), package.yml und z.B. die .lang-Dateien sind so gut wie möglich dokumentiert und werden vom REDAXO-Team geprüft. +Der Quellcode (PHP), package.yml und z.B. die .lang-Dateien sind so gut wie möglich dokumentiert und werden von den Friends Of REDAXO geprüft. Im `demo_addon` werden Lösungswege am praktischen Beispiel und "Best practice" gezeigt, unterstützend zur REDAXO-Dokumentation. @@ -9,41 +9,52 @@ Im `demo_addon` werden Lösungswege am praktischen Beispiel und "Best practice" * [Aufbau und Struktur von Addons](https://redaxo.org/doku/master/addon-struktur) * [Package (package.yml)](https://redaxo.org/doku/master/addon-package) +> **Hinweis:** Die Verwendung von REDAXO-Standards hilft Probleme mit den eigenen Addons bei REDAXO-Updates zu vermeiden :) + ## Einstellungen Oft benötigen Addons eigene Einstellungen. Hier werden zwei Methoden für die Umsetzung zum speichern der Addon-Einstellungen gezeigt. Einmal die "klassiche" Methode mit Hilfe von REDAXO-Funktionen und Fragmenten. Und zum anderen die aktuelle Methote mit der Verwendung der Klasse `rex_config_form`. -Hier am besten mal einen Blick in den Quellcode der beiden Dateien `config.rex_config_form.php` und `config.classic_form.php` werfen. +Hier am besten mal einen Blick in den Quellcode der beiden Dateien `pages/config.rex_config_form.php` und `pages/config.classic_form.php` werfen. * [Zu den Einstellungen](?page=demo_addon/config/rex_config_form) ## Tabellen -TODO -. Beschreibungsseite Tabellen in TABLES.md -. Tabellenverwaltung mit rex_list/rex_form, Adressverwaltung, Cusotm-Format für z.B. Geburtsdatum -. YForm einbinden im Addon? +Das `demo_addon` zeigt wie mit REDAXO Standards (rex_sql_table) eine Tabelle erstellt, mit Beispiel-Daten gefüllt wird (rex_sql::addRecord), und bringt die dazugehörige dokumentierte Verwaltungsfunktion (rex_list/rex_form) zu dieser Tabelle mit. * [Zu den Tabellen](?page=demo_addon/tables/tables) -## Extension-Points +## Quellcode -TODO -. Beschreibungsseite Extension-Points in EXTENSIONPOINTS.md -. Beispiele und Übersicht der Extension-Poits -. Weiterverarbeitung der EP Parameter -. Ausgabe der EP's z.B. im Systemlog +Der Quellcode des Addons ist dokumentiert und es lohnt sich einen Blick darauf zu werfen! +z.B. +* package.yml +* boot.php +* install.php +* uninstall.php +* Markdown-Texte wie README.md und README.de.md +* PHP-Dateien im Verzeichnis ./pages/ +* Verzeichnis ./lib/ -* [Zu den Extension-Points](?page=demo_addon/eps/eps) +Alles ist natürlich auch in der [REDAXO-Dokumentation](https://redaxo.org/doku/master) zu finden und kann dort detailliert nachgeschlagen werden. -## Quelltexte -TODO -. Beschreibung in die Quelltexte des demo_addons zu schauen! +## Extension Points + + [Extension Points](https://redaxo.org/doku/master/extension-points) sind Stellen im REDAXO-Programmcode, an denen eigener Code eingeklinkt und ausgeführt werden kann. Dadurch lässt sich auch das Core-System erweitern und anpassen, ohne den Core selbst zu verändern. + +Im Verzeichnis pages/extensionpoints/ gibt es für viele Extension Points Beispiele und wie diese EP's verwendet werden können. + +* [Zu den Extension-Points](?page=demo_addon/eps/eps) ## Sonstiges TODO -. install.php und Anlegen von Tabellen mit ensure usw. -. uninstall.php + . zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist -. Beschreibung und Anwendung Permission-Check +. Beschreibung und Anwendung Permission-Check rex::getUser()->hasPerm('meinaddon[delete]') +. Tabellenverwaltung aktivieren/deaktivieren per Ajax + +## Credits + +[Contributors auf github](https://github.com/FriendsOfREDAXO/demo_addon/graphs/contributors) und alle sonstigen Helfer! diff --git a/pages/DESCRIPTION.md b/pages/DESCRIPTION.md index c5018c6..87f07ed 100644 --- a/pages/DESCRIPTION.md +++ b/pages/DESCRIPTION.md @@ -1 +1,3 @@ -DESCRIPTION.md \ No newline at end of file +DESCRIPTION.md + +english translation needed diff --git a/pages/EXTENSIONPOINTS.md b/pages/EXTENSIONPOINTS.md index 1873b9c..a7b306d 100644 --- a/pages/EXTENSIONPOINTS.md +++ b/pages/EXTENSIONPOINTS.md @@ -1 +1,3 @@ -EXTENSIONPOINTS.md \ No newline at end of file +EXTENSIONPOINTS.md + +english translation needed diff --git a/pages/TABLES.de.md b/pages/TABLES.de.md index 3710874..d09dd6e 100644 --- a/pages/TABLES.de.md +++ b/pages/TABLES.de.md @@ -1 +1,28 @@ -TABLES.de.md \ No newline at end of file +# Addon-Tabellen + +## Demo-Tabelle +Bei der Installation des `demo_addon` wird automatisch die Tabelle `%%demo_addon` angelegt und mit Testdaten gefüllt (siehe `install.php`). +**%%** steht hier für den REDAXO Table Prefix für Datenbanktabellen und ist standardmäßig auf `rex_` eingestellt (table_prefix in der default.config.yml). + +Die Tabellenverwaltung wurde mit den REDAXO-Klassen `rex_list` und `rex_form` umgesetzt. + +* [zur Tabellenverwaltung](?page=demo_addon/tables/updatetable) + +> **Hinweis** In Addons und Modulen **immer** die REDAXO-Funktion `rex::getTable()` verwenden! +> Beispiel: `rex::getTable('adressen')` => rex_adressen + +## Tabellendefinitionen + +Addon-Eigene Tabellen sollten in der `install.php` mit Hilfe der Klasse `rex_sql_table` angelegt bzw. geändert werden. +Beispiel in der `install.php` dieses Addons. Versionsabhängige Änderungen am besten in der `update.php` (siehe Kommentare). Löschen der eigenen Tabellen in der `uninstall.php`. + +> **Hinweis** Mit dem Addon `adminer` kann eine Tabelle definiert werden und danach der PHP-Quellcode für die eigene install.php generiert werden. (Tabelle auswählen und dann auf den Link `rex_sql_table code` klicken) + +* [Datenbanktabellen in der REDAXO-Dokumentation](https://redaxo.org/doku/master/datenbank-tabellen) + +## Best Practices + +* Tabellen mit der Klasse `rex_sql_table` anlegen bzw. updaten +* Für Tabellenzugriffe in Addons/Templates/Modulen **immer** die REDAXO-Funktion `getTable()` verwenden! Den Tabellen-Namen nicht fest codieren da es sonst bei Updates oder Portierungen Probleme geben kann! +Beispiel: `rex::getTable('adressen')` => rex_adressen +* Eindeutige Tabellen-Namen durch Verwendung des Addon-Namens. Beispiel: rex_demo_addon, rex_demo_addon_preise usw. diff --git a/pages/TABLES.md b/pages/TABLES.md index 7303b01..1ddc231 100644 --- a/pages/TABLES.md +++ b/pages/TABLES.md @@ -1 +1,3 @@ -TABLES.md \ No newline at end of file +TABLES.md + +english translation needed diff --git a/pages/config.classic_form.php b/pages/config.classic_form.php index 9288225..e89e1b7 100644 --- a/pages/config.classic_form.php +++ b/pages/config.classic_form.php @@ -1,7 +1,7 @@ i18n('config_saved')); + echo rex_view::success($addon->i18n('config_saved')); } // Fieldset 1 -$content .= '
' . $this->i18n('config_legend1') . ''; +$content .= '
' . $addon->i18n('config_legend1') . ''; // 1.1 Einfaches Textfeld $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = ''; $formElements[] = $n; @@ -54,7 +56,7 @@ // 1.2 Textarea $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = ''; $formElements[] = $n; @@ -63,10 +65,9 @@ $content .= $fragment->parse('core/form/form.php'); // 1.3 Checkbox - $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = 'getConfig('checkbox')) && '|1|' == $this->getConfig('checkbox') ? ' checked="checked"' : '') . ' value="|1|" />'; $formElements[] = $n; @@ -75,10 +76,9 @@ $content .= $fragment->parse('core/form/checkbox.php'); // 1.4 Select - $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $select = new rex_select(); $select->setId('demo_addon-config-select'); $select->setAttribute('class', 'form-control selectpicker'); @@ -95,10 +95,9 @@ $content .= $fragment->parse('core/form/form.php'); // 1.5 Multiselect - $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $select = new rex_select(); $select->setId('demo_addon-config-multiselect'); $select->setMultiple(); @@ -109,14 +108,14 @@ } $mselect = $this->getConfig('multiselect'); -/* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert */ +/* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert, wird nur hier in der Demo benötigt */ if (!is_array($mselect)) { $mselect = explode('|', $mselect); } /* Ende FIX */ $select->setSelected($mselect); $n['field'] = $select->get(); -$n['field'] .= $this->i18n('config_multiselect_note'); +$n['field'] .= $addon->i18n('config_multiselect_note'); $formElements[] = $n; $fragment = new rex_fragment(); @@ -124,15 +123,14 @@ $content .= $fragment->parse('core/form/form.php'); // 1.6 Radio-Group - $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = 'getConfig('radio')) && 'frontend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; $formElements[] = $n; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = 'getConfig('radio')) && 'backend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; $formElements[] = $n; @@ -143,12 +141,12 @@ $content .= '
'; // Fieldset 2 -$content .= '
' . $this->i18n('config_legend2') . ''; +$content .= '
' . $addon->i18n('config_legend2') . ''; // 2.1 Media-Widget $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = rex_var_media::getWidget(1, 'config[file]', $this->getConfig('file')); $formElements[] = $n; @@ -159,7 +157,7 @@ // 2.2 MediaList-Widget $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = rex_var_medialist::getWidget(1, 'config[files]', $this->getConfig('files')); $formElements[] = $n; @@ -170,7 +168,7 @@ // 2.3 Link-Widget $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $n['field'] = rex_var_link::getWidget(1, 'config[article]', $this->getConfig('article')); $formElements[] = $n; @@ -181,20 +179,18 @@ // 2.4 Linklist-Widget $formElements = []; $n = []; -$n['label'] = ''; -$n['field'] = rex_var_linklist::getWidget(1, 'config[articles]', $this->getConfig('articles')); +$n['label'] = ''; +$n['field'] = rex_var_linklist::getWidget(1, 'config[articles]', $addon->getConfig('articles')); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); -$content .= '
'; - // 2.5 Kategorienauswahl $formElements = []; $n = []; -$n['label'] = ''; +$n['label'] = ''; $category_select = new rex_category_select(false, false, false, true); $category_select->setName('config[categories][]'); @@ -210,10 +206,12 @@ $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); +$content .= '
'; + // Save-Button $formElements = []; $n = []; -$n['field'] = ''; +$n['field'] = ''; $formElements[] = $n; $fragment = new rex_fragment(); @@ -228,7 +226,7 @@ // Ausgabe des Formulars mit csrf-Schutz $fragment = new rex_fragment(); $fragment->setVar('class', 'edit'); -$fragment->setVar('title', $this->i18n('config_title_classic')); +$fragment->setVar('title', $addon->i18n('config_title_classic')); $fragment->setVar('body', $content, false); $fragment->setVar('buttons', $buttons, false); $output = $fragment->parse('core/page/section.php'); diff --git a/pages/config.rex_config_form.php b/pages/config.rex_config_form.php index 84a776d..b3d5ef6 100644 --- a/pages/config.rex_config_form.php +++ b/pages/config.rex_config_form.php @@ -1,7 +1,7 @@ addFieldset($this->i18n('config_legend1')); +$form->addFieldset($addon->i18n('config_legend1')); // 1.1 Einfaches Textfeld $field = $form->addInputField('text', 'url', null, ['class' => 'form-control']); -$field->setLabel($this->i18n('config_url')); +$field->setLabel($addon->i18n('config_url')); // 1.2 Textarea $field = $form->addTextAreaField('text'); -$field->setLabel($this->i18n('config_text')); +$field->setLabel($addon->i18n('config_text')); // 1.3 Checkbox $field = $form->addCheckboxField('checkbox'); -$field->addOption($this->i18n('config_checkbox'), 1); +$field->addOption($addon->i18n('config_checkbox'), 1); // 1.4 Select $field = $form->addSelectField('select', $value = null, ['class' => 'form-control selectpicker']); -$field->setLabel($this->i18n('config_select')); +$field->setLabel($addon->i18n('config_select')); $select = $field->getSelect(); $select->addOption('eins', 1); $select->addOption('zwei', 2); @@ -39,38 +41,38 @@ // 1.5 Multiselect $field = $form->addSelectField('multiselect', null, ['class' => 'form-control']); $field->setAttribute('multiple', 'multiple'); -$field->setLabel($this->i18n('config_multiselect')); +$field->setLabel($addon->i18n('config_multiselect')); $select = $field->getSelect(); $select->setSize(5); for ($i = 1; $i <= 10; ++$i) { $select->addOption($i, $i); } -$field = $form->addRawField('

'.$this->i18n('config_multiselect_note').'

'); +$field = $form->addRawField('

'.$addon->i18n('config_multiselect_note').'

'); // 1.6 Radio-Group $field = $form->addRadioField('radio'); -$field->addOption($this->i18n('demo_addon_config_radio_fe'), 'frontend'); -$field->addOption($this->i18n('demo_addon_config_radio_be'), 'backend'); +$field->addOption($addon->i18n('demo_addon_config_radio_fe'), 'frontend'); +$field->addOption($addon->i18n('demo_addon_config_radio_be'), 'backend'); // Fieldset 2 -$form->addFieldset($this->i18n('config_legend2')); +$form->addFieldset($addon->i18n('config_legend2')); // 2.1 Media-Widget $field = $form->addMediaField('file'); -$field->setLabel($this->i18n('config_file')); +$field->setLabel($addon->i18n('config_file')); $field->setAttribute('id', 'medienpool-linkmap-usw-file'); // 2.2 MediaList-Widget $field = $form->addMediaListField('files'); -$field->setLabel($this->i18n('config_files')); +$field->setLabel($addon->i18n('config_files')); // 2.3 Link-Widget $field = $form->addLinkmapField('article'); -$field->setLabel($this->i18n('config_article')); +$field->setLabel($addon->i18n('config_article')); // 2.4 Linklist-Widget $field = $form->addLinklistField('articles'); -$field->setLabel($this->i18n('config_articles')); +$field->setLabel($addon->i18n('config_articles')); // 2.5 Kategorienauswahl $category_select = new rex_category_select(false, false, false, true); @@ -82,11 +84,11 @@ $category_select->setSelected($this->getConfig('categories')); $html = $category_select->get(); $field = $form->addRawField($html); -$field->setLabel($this->i18n('config_categories')); +$field->setLabel($addon->i18n('config_categories')); // Ausgabe des Formulars $fragment = new rex_fragment(); $fragment->setVar('class', 'edit', false); -$fragment->setVar('title', $this->i18n('config_title_rex_config'), false); +$fragment->setVar('title', $addon->i18n('config_title_rex_config'), false); $fragment->setVar('body', $form->get(), false); echo $fragment->parse('core/page/section.php'); diff --git a/pages/index.php b/pages/index.php index 830ec83..30a4e5e 100644 --- a/pages/index.php +++ b/pages/index.php @@ -1,9 +1,11 @@ i18n('title')); // $this->i18n('title') ist eine Kurzform für rex_i18n::msg('demo_addon_title') +echo rex_view::title($addon->i18n('title')); // $addon->i18n('title') ist eine Kurzform für rex_i18n::msg('demo_addon_title') // Die Subpages werden nicht mehr über den "subpage"-Parameter gesteuert, sondern über "page" (getrennt mit einem Slash, z. B. page=demo_addon/config) // Die einzelnen Teile des page-Pfades können mit der folgenden Funktion ausgelesen werden. diff --git a/pages/main.properties.php b/pages/main.properties.php new file mode 100644 index 0000000..b845c88 --- /dev/null +++ b/pages/main.properties.php @@ -0,0 +1,37 @@ +getProperty($key) abgefragt werden +// Empfohlen ist aber die Verwendung über rex_addon::get('addonname')->getProperty('varname')) +// siehe https://github.com/redaxo/redaxo/pull/2482 + +echo 'dump($this->getProperty(\'package\'));'; +dump($this->getProperty('package')); + +echo 'dump($this->getProperty(\'version\'));'; +dump($this->getProperty('version')); + +echo 'dump($this->getProperty(\'supportpage\'));'; +dump($this->getProperty('supportpage')); + +echo 'dump($this->getProperty(\'page\'));'; +dump($this->getProperty('page')); + +// In Templates/Modulen oder anderen Addons können die Porperties +// über rex_addon::get('addonname')->getProperty('varname')) abgefragt werden + +echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'package\'));'; +dump(rex_addon::get('demo_addon')->getProperty('package')); + +echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'version\'));'; +dump(rex_addon::get('demo_addon')->getProperty('version')); + +echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'supportpage\'));'; +dump(rex_addon::get('demo_addon')->getProperty('supportpage')); + +echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'page\'));'; +dump(rex_addon::get('demo_addon')->getProperty('page')); + +// Alternativ Addon-Objekt zwischenspeichern ... +$addon = rex_addon::get('demo_addon'); +$package = $addon->getProperty('package'); +$version = $addon->getProperty('version'); diff --git a/pages/tables.updatetable.php b/pages/tables.updatetable.php new file mode 100644 index 0000000..2b45374 --- /dev/null +++ b/pages/tables.updatetable.php @@ -0,0 +1,263 @@ +setDebug(true); // mit 'true' kann die Debug-Ausgabe eingeschalten werden + } + +// ----------------------------------------------------------------------------- +// Datensatz Löschen +// ----------------------------------------------------------------------------- +if ('delete' == $func) { + $sql->setTable(rex::getTable('demo_addon')); + $sql->setWhere(['id' => $id]); + $sql->delete(); + + if (!$sql->hasError()) { + echo rex_view::success($addon->i18n('list_deleted')); + } else { + echo rex_view::error($addon->i18n('list_error')); + dump($sql->getError()); // Fehlerinformationen ausgeben + } + $func = ''; +} + +// ----------------------------------------------------------------------------- +// aktivieren/deaktivieren +// ----------------------------------------------------------------------------- +if ('togglestatus' == $func) { + $status = (1 === $oldstatus) ? 0 : 1; // Neuer Status beim aktivieren/deaktivieren + + $sql->setTable(rex::getTable('demo_addon')); + $sql->setWhere(['id' => $id]); + $sql->setValue('status', $status); + $sql->update(); + + if (!$sql->hasError()) { + if ($status) { + echo rex_view::success($addon->i18n('list_activated')); + } else { + echo rex_view::success($addon->i18n('list_deactivated')); + } + } else { + echo rex_view::error($addon->i18n('list_error')); + dump($sql->getError()); // Fehlerinformationen ausgeben + } + $func = ''; +} + +// ----------------------------------------------------------------------------- +// Neuen Datensatz anlegen / Datensatz editieren +// https://redaxo.org/doku/master/formulare +// ----------------------------------------------------------------------------- +if (in_array($func, ['add', 'edit'])) { + if ('edit' == $func) { + $title = $addon->i18n('list_edit'); + } + if ('add' == $func) { + $title = $addon->i18n('list_create_new_entry'); + } + + // Formular-Objekt erstellen + $form = rex_form::factory(rex::getTable('demo_addon'), 'Datensatz bearbeiten', 'id=' . $id); + + // Die ID muss immer mit übergeben werden, sonst funktioniert das Speichern nicht + $form->addParam('id', $id); // ID des Datensatzes + + // Sortierparameter werden ebenso behalten wie die Position in der Liste + $form->addParam('sort', rex_request('sort', 'string', '')); + $form->addParam('sorttype', rex_request('sorttype', 'string', '')); + $form->addParam('start', rex_request('start', 'int', 0)); + + // Select Anrede + $field = $form->addSelectField('anrede', $value = null, ['class' => 'form-control selectpicker']); + $field->setLabel($addon->i18n('thead_anrede')); + $select = $field->getSelect(); + $select->addOption($addon->i18n('list_mr'), 1); + $select->addOption($addon->i18n('list_mrs'), 2); + + // Textfelder + $field = $form->addTextField('name'); + $field->setLabel($addon->i18n('thead_name')); + $field->getValidator()->add('notEmpty', 'Das Feld Name darf nicht leer sein.'); + + $field = $form->addTextField('vorname'); + $field->setLabel($addon->i18n('thead_vorname')); + $field->getValidator()->add('notEmpty', 'Das Feld Vorame darf nicht leer sein.'); + + $field = $form->addTextField('strasse'); + $field->setLabel($addon->i18n('thead_strasse')); + + $field = $form->addTextField('plz'); + $field->setLabel($addon->i18n('thead_plz')); + $field->setAttribute('style', 'width: 150px;'); + $field->setAttribute('maxlength', '8'); + + $field = $form->addTextField('ort'); + $field->setLabel($addon->i18n('thead_ort')); + + // Geburtsdatum + $field = $form->addTextField('birthdate'); + $field->setLabel($addon->i18n('thead_birthdate')); + $field->setAttribute('style', 'width: 150px;'); + $field->setAttribute('maxlength', '10'); + if ($field->getValue()) { + $field->setValue(date('d.m.Y', strtotime($field->getValue()))); + } + $field->getValidator()->add('notEmpty', 'Das Feld Geburtsdatum darf nicht leer sein.'); + $field->getValidator()->add('custom', 'Geburtsdatum ungültig', 'demoAddon_checkBirthdate'); + + // Select Status + $field = $form->addSelectField('status', $value = null, ['class' => 'form-control selectpicker']); + $field->setLabel($addon->i18n('thead_status')); + $select = $field->getSelect(); + $select->addOption($addon->i18n('list_active'), 1); + $select->addOption($addon->i18n('list_inactive'), 0); + + $content = $form->get(); + + // Forumular ausgeben + $fragment = new rex_fragment(); + $fragment->setVar('class', 'edit', false); + $fragment->setVar('title', $title); + $fragment->setVar('body', $content, false); + $content = $fragment->parse('core/page/section.php'); + echo $content; + exit; +} + +// ----------------------------------------------------------------------------- +// Aufbereitung und Ausgabe der Tabellenliste +// Dokumentation https://redaxo.org/doku/master/listen +// $list = rex_list::factory($query, $rowsPerPage, $listName, $debug); +// ----------------------------------------------------------------------------- + +// Alle ausgewählten Felder des Queries werden als Spalten in der Liste angezeigt +// Die einzelnen Spalten können noch verändert/erweitert werden ... siehe weiter unten +// Mit dem Parameter $rowsPerPage (hier 30) kann die Anzahl der Listeinträge festgelegt werden +// Sind mehr Datensätze vorhanden wird automatisch eine Pagination ausgegeben +$list = rex_list::factory( + ' + SELECT `id`, `anrede`, `vorname`, `name`, `strasse`, `plz`, `ort`, `birthdate`, `status` + FROM ' . rex::getTable('demo_addon') . ' + ORDER by `name` ASC, `vorname` ASC + ', + 30, 'Demo-Liste', false); + +// Spalten können mit removeColumn('columnname') entfernt werden +//$list->removeColumn('id'); + +// Spaltenbreiten definieren. Evtl. anpassen wenn Spalten entfernt/hinzugefügt werden +$list->addTableColumnGroup([40, 40, 40, 100, 120, '*', 40, 100, 100, 80, 80]); + +// Sortierbare Spalten - Klick auf die Spaltenüberschrift sortiert die Liste nach dieser Spalte +// Der zweite Parameter legt die Sortierung für den 1. Klick auf die Spaltenüberschrift fest und +// wird danach automatisch 'getoggled' (asc/desc) +$list->setColumnSortable('id', 'asc'); +$list->setColumnSortable('name', 'asc'); + +// Spalte mit Editier-Icon am Zeilen-Anfang hinzufügen (Parameter 3 bei addColumn = 0) +// $thIcon: Icon für die Überschriftenzeile mit Link 'func=add' +// $tdIcon: Icon für die Datenzeilen mit Link 'func=edit' +// zum ändern des Icons 'rex-icon-editmode' durch das gewünschte Icon ersetzen +$thIcon = 'i18n('list_create_new_entry'), 'add') . ' title="' . $addon->i18n('create_new_entry') . '">'; +$tdIcon = ''; +$list->addColumn($thIcon, $tdIcon, 0, ['###VALUE###', '###VALUE###']); +$list->setColumnParams($thIcon, ['func' => 'edit', 'id' => '###id###']); + +// Spalte 'Funktionen' am Zeilen-Ende hinzufügen (Parameter 3 bei addColumn = -1) +// Link zum löschen des Datensatzes +// In dieser Spalte können bei Bedarf auch mehrere Funktions-Links untergebracht werden +$list->addColumn('func', '', -1, ['###VALUE###', '###VALUE###']); +$list->setColumnLabel('func', $addon->i18n('thead_func')); + +// setColumnParams func => 'delete' ... wird weiter oben im Script entsprechend abgefragt und abgearbeitet +// Die Klasse 'data-confirm' bei addLinkAttribute bewirkt eine Popup-Abfrage ob der Datensatz gelöscht werden soll +// ohne die Klasse 'data-confirm' wird der Datensatz sofort gelöscht! +$list->setColumnFormat('func', 'custom', static function ($params) { + $list = $params['list']; + $list->setColumnParams('delete', ['func' => 'delete', 'id' => '###id###']); + $list->addLinkAttribute('delete', 'data-confirm', '[###vorname### ###name###] - ' . rex_addon::get('demo_addon')->i18n('confirm_delete')); + $str = $list->getColumnLink('delete', ' ' . rex_addon::get('demo_addon')->i18n('delete') . ''); + return $str; +}); + +// Spaltenüberschriften setzen +// Wenn keine Überschrift für eine Spalte gesetzt wird dann wird automatisch der DB-Feldname als Überschrift verwendet +$list->setColumnLabel('id', $addon->i18n('thead_id')); +$list->setColumnLabel('anrede', $addon->i18n('thead_anrede')); +$list->setColumnLabel('vorname', $addon->i18n('thead_vorname')); +$list->setColumnLabel('name', $addon->i18n('thead_name')); +$list->setColumnLabel('strasse', $addon->i18n('thead_strasse')); +$list->setColumnLabel('plz', $addon->i18n('thead_plz')); +$list->setColumnLabel('ort', $addon->i18n('thead_ort')); +$list->setColumnLabel('birthdate', $addon->i18n('thead_birthdate')); +$list->setColumnLabel('status', $addon->i18n('thead_status')); + +// Spalte Anrede anpassen +// In der Tabelle wird 1 für Herr und 2 für Frau abgespeichert und würde auch so angezeigt werden +// Hier wird die Anzeige der Spalte entsprechend dem Feldinhalt angepasst +$list->setColumnFormat('anrede', 'custom', static function ($params) { + $list = $params['list']; // $list enthält ein SQL-Objekt mit allen Felder aus dem DB-Select + $str = (1 == $list->getValue('anrede')) ? rex_i18n::msg('demo_addon_list_mr') : rex_i18n::msg('demo_addon_list_mrs'); + return $str; +}); + +// Spalte Geburtsdatum (birthdate) anpassen +// In der Tabelle wird das Datum im Format YYYY-MM-DD gespeichert +// Hier wird für die Anzeige auf das deutsche Datumsformat umgewandelt +$list->setColumnFormat('birthdate', 'custom', static function ($params) { + $list = $params['list']; + $str = date('d.m.Y', strtotime($list->getValue('birthdate'))); + return $str; +}); + +// Spalte Status (status) anpassen +// In der Tabelle wird 1 für aktiv, und 0 für inaktiv gespeichert +// Hier wird die Ausgabe als Text umgewandelt und als Link ausgegeben +// Dem Link wird die func=togglestatus und der 'alte' (oldstatus) Status angehängt +// func => 'togglestatus' ... wird weiter oben im Script entsprechend abgefragt und abgearbeitet +$list->setColumnFormat('status', 'custom', static function ($params) { + $list = $params['list']; + $list->addLinkAttribute('status', 'class', 'toggle'); + if (1 == $list->getValue('status')) { + $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###']); + $str = $list->getColumnLink('status', ' ' . rex_i18n::msg('demo_addon_list_active') . ''); + } else { + $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###']); + $str = $list->getColumnLink('status', ' ' . rex_i18n::msg('demo_addon_list_inactive') . ''); + } + return $str; +}); + +// Hier wird ein Text definiert, der angezeigt wird, falls keine Datensätze gefunden werden. +// Als Standard wird der über rex_i18n übersetzte String aus 'list_no_rows' verwendet. +$list->setNoRowsMessage($addon->i18n('list_no_rows')); + +// Ausgabe der Tabelle mit dem Attribut class="table-striped table-hover" +$list->addTableAttribute('class', 'table-striped table-hover'); + +// Liste mit Verwundung eines Fragments ausgeben - $list->get() +$fragment = new rex_fragment(); +$fragment->setVar('title', $addon->i18n('thead_title')); +$fragment->setVar('content', $list->get(), false); +echo $fragment->parse('core/page/section.php'); diff --git a/plugins/documentation/LICENSE b/plugins/documentation/LICENSE new file mode 100644 index 0000000..07a5775 --- /dev/null +++ b/plugins/documentation/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Friends Of REDAXO + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/update.php b/update.php index f2c832b..480baab 100644 --- a/update.php +++ b/update.php @@ -6,13 +6,14 @@ // Hier können zum Beispiel DB-Tabellen angepasst werden -// $this->getVersion() liefert die noch aktuell installierte Version +// getVersion() liefert die noch aktuell installierte Version +$addon = rex_addon::get('demo_addon'); -if (rex_string::versionCompare($this->getVersion(), '1.1', '<')) { +if (rex_string::versionCompare($addon->getVersion(), '1.1', '<')) { // Änderungen für Nutzer die von Versionen kleiner 1.1 kommen } -if (rex_string::versionCompare($this->getVersion(), '1.2', '<')) { +if (rex_string::versionCompare($addon->getVersion(), '1.2', '<')) { // Änderungen für Nutzer die von Versionen kleiner 1.2 kommen } From 982cb1dfaf5009aae726ea4b81b645a401c8601a Mon Sep 17 00:00:00 2001 From: aeberhard Date: Sat, 15 Feb 2020 00:58:01 +0100 Subject: [PATCH 05/10] =?UTF-8?q?Verwaltung=20Demo-Tabelle=20und=20Text?= =?UTF-8?q?=C3=A4nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - diverse Textänderungen - Prüfung Geburtsdatum CustomFunction demoAddon_checkBirthdate - .php_cs.dist and REDAXO angepasst - lib/demo_addon_rex_form.php hinzugefügt - Tabellenverwaltung angepasst --- .php_cs.dist | 22 +++++++++----- CHANGELOG.md | 2 +- LICENSE | 2 +- install.php | 2 +- lang/de_de.lang | 2 +- lib/README.md | 5 ++-- lib/demo_addon_rex_xform.php | 29 ++++++++++++++++++ lib/logger.php | 17 +++++++---- package.yml | 2 +- pages/DESCRIPTION.de.md | 3 +- pages/TABLES.de.md | 1 + pages/tables.updatetable.php | 58 ++++++++++++++++++++++++------------ 12 files changed, 105 insertions(+), 40 deletions(-) create mode 100644 lib/demo_addon_rex_xform.php diff --git a/.php_cs.dist b/.php_cs.dist index 9eb01cf..ceb4a05 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -1,7 +1,7 @@ in([__DIR__]); @@ -14,9 +14,8 @@ return PhpCsFixer\Config::create() '@Symfony:risky' => true, '@PHP71Migration' => true, '@PHP71Migration:risky' => true, - '@PHPUnit60Migration:risky' => true, + '@PHPUnit75Migration:risky' => true, 'array_indentation' => true, - 'array_syntax' => ['syntax' => 'short'], 'blank_line_before_statement' => false, 'braces' => ['allow_single_line_closure' => false], 'comment_to_phpdoc' => true, @@ -28,25 +27,32 @@ return PhpCsFixer\Config::create() 'logical_operators' => true, 'native_constant_invocation' => false, 'no_blank_lines_after_phpdoc' => false, + 'no_null_property_initialization' => true, 'no_php4_constructor' => true, 'no_superfluous_elseif' => true, 'no_unreachable_default_argument_value' => true, 'no_useless_else' => true, 'no_useless_return' => true, - 'ordered_imports' => true, + 'ordered_class_elements' => ['order' => [ + 'use_trait', + 'constant_public', + 'constant_protected', + 'constant_private', + 'property', + 'construct', + 'phpunit', + 'method', + ]], 'php_unit_internal_class' => true, 'php_unit_method_casing' => true, 'php_unit_set_up_tear_down_visibility' => true, - 'php_unit_test_case_static_method_calls' => ['call_type' => 'this'], - 'phpdoc_annotation_without_dot' => false, + 'php_unit_test_case_static_method_calls' => true, 'phpdoc_no_package' => false, 'phpdoc_order' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, 'phpdoc_types_order' => false, 'phpdoc_var_annotation_correct_order' => true, 'psr4' => false, 'semicolon_after_instruction' => false, - 'space_after_semicolon' => true, 'static_lambda' => true, 'string_line_ending' => true, 'void_return' => false, diff --git a/CHANGELOG.md b/CHANGELOG.md index cda8017..1b7c8d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Version 1.2.0beta1 // 31.01.2020 +## Version 1.2.0beta1 // 15.02.2020 Neu diff --git a/LICENSE b/LICENSE index 07a5775..86ee205 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Friends Of REDAXO +Copyright (c) 2020 Friends Of REDAXO Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/install.php b/install.php index 4c7b0c4..3375268 100644 --- a/install.php +++ b/install.php @@ -21,7 +21,7 @@ ->ensureColumn(new rex_sql_column('status', 'tinyint(1)', true, 1)) ->ensure(); -// Bei Addon-Installation/Update folgende Beispiel-Daten importieren +// Bei Addon-Installation/Reinstallation folgende Beispiel-Daten importieren $demodata = [ ['id' => 1, 'anrede' => 1, 'vorname' => 'Max', 'name' => 'Muster', 'strasse' => 'Schönstr. 1', 'plz' => '81333', 'ort' => 'München', 'birthdate' => '1966-01-01', 'status' => 1], ['id' => 2, 'anrede' => 1, 'vorname' => 'Mario', 'name' => 'Neumann', 'strasse' => 'Waldweg 11a', 'plz' => '84405', 'ort' => 'Dorfen', 'birthdate' => '1968-06-06', 'status' => 1], diff --git a/lang/de_de.lang b/lang/de_de.lang index 7d53e40..e6bcbbc 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -10,8 +10,8 @@ demo_addon_navititle = Demo-Addon demo_addon_title = REDAXO Demo-Addon # Eigener Block mit Bezeichnung in der REDAXO-Navigation +# in der package.yml des Addons folgendes unter page angeben: `block: demo_addon` # `navigation_` + addon-Name hier also `navigation_demo_addon` -# in der package.yml dess Addons folgendes unter page angeben: `block: demo_addon` navigation_demo_addon = DEMO-Addon # Hauptnavi-Punkte des Addons diff --git a/lib/README.md b/lib/README.md index 3711fd4..f9dc9a3 100644 --- a/lib/README.md +++ b/lib/README.md @@ -1,3 +1,4 @@ -Klassen in diesem Verzeichnis werden vom autoloader geladen +Klassen in diesem Verzeichnis werden durch den Autoloader geladen -logger.php extens REDAXO logger -> für die Ausgabe der Beispiele der Extension Points \ No newline at end of file +logger.php extends REDAXO logger -> für die Ausgabe der Beispiele der Extension Points +demo_addon_rex_xform.php extends REDAXO rex_form -> für den Update des Geburtsjahres im Format YYYY-MM-DD diff --git a/lib/demo_addon_rex_xform.php b/lib/demo_addon_rex_xform.php new file mode 100644 index 0000000..ac8db33 --- /dev/null +++ b/lib/demo_addon_rex_xform.php @@ -0,0 +1,29 @@ +hasPerm('meinaddon[delete]') . Tabellenverwaltung aktivieren/deaktivieren per Ajax +. Hinweise bzw. Verbesserungen gerne als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues) auf github. ## Credits diff --git a/pages/TABLES.de.md b/pages/TABLES.de.md index d09dd6e..8a3684f 100644 --- a/pages/TABLES.de.md +++ b/pages/TABLES.de.md @@ -5,6 +5,7 @@ Bei der Installation des `demo_addon` wird automatisch die Tabelle `%%demo_addon **%%** steht hier für den REDAXO Table Prefix für Datenbanktabellen und ist standardmäßig auf `rex_` eingestellt (table_prefix in der default.config.yml). Die Tabellenverwaltung wurde mit den REDAXO-Klassen `rex_list` und `rex_form` umgesetzt. +Die Klasse `rex_form` wird in dem Beispiel durch die Klasse `demo_addon_rex_form` erweitert (`demo_addon_rex_form.php` im lib-Verzeichnis des Addons). Hier wird die Funktion `preSave()` zum speichern des Feldes Geburtsdatum (`birthdate`) im richtigen Format verwendet. * [zur Tabellenverwaltung](?page=demo_addon/tables/updatetable) diff --git a/pages/tables.updatetable.php b/pages/tables.updatetable.php index 2b45374..4f54083 100644 --- a/pages/tables.updatetable.php +++ b/pages/tables.updatetable.php @@ -3,10 +3,16 @@ $addon = rex_addon::get('demo_addon'); // Custom-Function zum prüfen des Geburtsdatums -// Return false wenn das Datum ungültig ist. Ansonsten true -function demoAddon_checkBirthdate($par) +// Diese function kann auch in der boot.php des Addons notiert werden +// Return `false` wenn das Datum ungültig ist, `true` wenn das Datum gültig ist +function demoAddon_checkBirthdate($date) { - return '0000-00-00'; + $rc = false; + + $d = DateTime::createFromFormat('d.m.Y', $date); + $rc = $d && $d->format('d.m.Y') == $date; + + return $rc; } // Die Update-Funktionen werden am Anfang des Scripts abgearbeitet @@ -17,11 +23,24 @@ function demoAddon_checkBirthdate($par) $id = rex_request('id', 'int', -1); // ID des Datensatzes $oldstatus = rex_request('oldstatus', 'int', -1); // Alter Status beim aktivieren/deaktivieren +// Start der Liste +// Parameter ist entweder `start=x` oder `$listName_start=x` +// $listName entspricht dabei dem Parameter `$listName` bei rex_list::factory +// Hier also `Demo-Liste_start` +// Die Variable `$start` wird weiter unten im Code als Linkparameter verwendet +// damit nach Update/Löschen/Abbruch aus dem Edit-Formular wieder an die richtige Position der Liste +// gesprungen wird (Pagination) +$start = rex_request('start', 'int', -1); // Start der Liste, Parameter $listName bei rex_list::factory +if (-1 == $start) { + $start = rex_request('Demo-Liste_start', 'int', 0); +} +rex_addon::get('demo_addon')->setProperty('list_start', $start); + // Bei vorhandener Funktion (add/edit/delete) eine rex_sql-Instanz erstellen // https://www.redaxo.org/doku/master/datenbank-queries if ($func) { $sql = rex_sql::factory(); - $sql->setDebug(true); // mit 'true' kann die Debug-Ausgabe eingeschalten werden + $sql->setDebug(false); // mit `true` kann die Debug-Ausgabe eingeschalten werden } // ----------------------------------------------------------------------------- @@ -70,15 +89,11 @@ function demoAddon_checkBirthdate($par) // https://redaxo.org/doku/master/formulare // ----------------------------------------------------------------------------- if (in_array($func, ['add', 'edit'])) { - if ('edit' == $func) { - $title = $addon->i18n('list_edit'); - } - if ('add' == $func) { - $title = $addon->i18n('list_create_new_entry'); - } + $title = 'edit' == $func ? $addon->i18n('list_edit') : $addon->i18n('list_create_new_entry'); // Formular-Objekt erstellen - $form = rex_form::factory(rex::getTable('demo_addon'), 'Datensatz bearbeiten', 'id=' . $id); + // $form = rex_form::factory( string $tableName, string $fieldset, string $whereCondition, string $method = 'post', boolean $debug = false ) + $form = demo_addon_rex_form::factory(rex::getTable('demo_addon'), 'Datensatz bearbeiten', 'id=' . $id, 'post', false); // Die ID muss immer mit übergeben werden, sonst funktioniert das Speichern nicht $form->addParam('id', $id); // ID des Datensatzes @@ -120,10 +135,13 @@ function demoAddon_checkBirthdate($par) $field->setLabel($addon->i18n('thead_birthdate')); $field->setAttribute('style', 'width: 150px;'); $field->setAttribute('maxlength', '10'); + // MySQL-Datum in deutsches Datum umformatieren + // gespeichert wird im Format YYYY-MM-DD, angezeigt im Format tt.mm.jjjj if ($field->getValue()) { $field->setValue(date('d.m.Y', strtotime($field->getValue()))); } $field->getValidator()->add('notEmpty', 'Das Feld Geburtsdatum darf nicht leer sein.'); + // Custom-Function `demoAddon_checkBirthdate` für die Prüfung des Geburtsdatums $field->getValidator()->add('custom', 'Geburtsdatum ungültig', 'demoAddon_checkBirthdate'); // Select Status @@ -161,7 +179,7 @@ function demoAddon_checkBirthdate($par) FROM ' . rex::getTable('demo_addon') . ' ORDER by `name` ASC, `vorname` ASC ', - 30, 'Demo-Liste', false); + 3, 'Demo-Liste', false); // Spalten können mit removeColumn('columnname') entfernt werden //$list->removeColumn('id'); @@ -182,7 +200,7 @@ function demoAddon_checkBirthdate($par) $thIcon = 'i18n('list_create_new_entry'), 'add') . ' title="' . $addon->i18n('create_new_entry') . '">'; $tdIcon = ''; $list->addColumn($thIcon, $tdIcon, 0, ['###VALUE###', '###VALUE###']); -$list->setColumnParams($thIcon, ['func' => 'edit', 'id' => '###id###']); +$list->setColumnParams($thIcon, ['func' => 'edit', 'id' => '###id###', 'start' => $start]); // Spalte 'Funktionen' am Zeilen-Ende hinzufügen (Parameter 3 bei addColumn = -1) // Link zum löschen des Datensatzes @@ -193,9 +211,10 @@ function demoAddon_checkBirthdate($par) // setColumnParams func => 'delete' ... wird weiter oben im Script entsprechend abgefragt und abgearbeitet // Die Klasse 'data-confirm' bei addLinkAttribute bewirkt eine Popup-Abfrage ob der Datensatz gelöscht werden soll // ohne die Klasse 'data-confirm' wird der Datensatz sofort gelöscht! -$list->setColumnFormat('func', 'custom', static function ($params) { +$list->setColumnFormat('func', 'custom', static function ($params) use ($addon) { + $start = $addon->getProperty('list_start'); $list = $params['list']; - $list->setColumnParams('delete', ['func' => 'delete', 'id' => '###id###']); + $list->setColumnParams('delete', ['func' => 'delete', 'id' => '###id###', 'start' => $start]); $list->addLinkAttribute('delete', 'data-confirm', '[###vorname### ###name###] - ' . rex_addon::get('demo_addon')->i18n('confirm_delete')); $str = $list->getColumnLink('delete', ' ' . rex_addon::get('demo_addon')->i18n('delete') . ''); return $str; @@ -224,7 +243,7 @@ function demoAddon_checkBirthdate($par) // Spalte Geburtsdatum (birthdate) anpassen // In der Tabelle wird das Datum im Format YYYY-MM-DD gespeichert -// Hier wird für die Anzeige auf das deutsche Datumsformat umgewandelt +// Hier wird für die Anzeige auf das deutsche Datumsformat tt.mm.jjjj umgewandelt $list->setColumnFormat('birthdate', 'custom', static function ($params) { $list = $params['list']; $str = date('d.m.Y', strtotime($list->getValue('birthdate'))); @@ -236,14 +255,15 @@ function demoAddon_checkBirthdate($par) // Hier wird die Ausgabe als Text umgewandelt und als Link ausgegeben // Dem Link wird die func=togglestatus und der 'alte' (oldstatus) Status angehängt // func => 'togglestatus' ... wird weiter oben im Script entsprechend abgefragt und abgearbeitet -$list->setColumnFormat('status', 'custom', static function ($params) { +$list->setColumnFormat('status', 'custom', static function ($params) use ($addon) { + $start = $addon->getProperty('list_start'); $list = $params['list']; $list->addLinkAttribute('status', 'class', 'toggle'); if (1 == $list->getValue('status')) { - $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###']); + $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###', 'start' => $start]); $str = $list->getColumnLink('status', ' ' . rex_i18n::msg('demo_addon_list_active') . ''); } else { - $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###']); + $list->setColumnParams('status', ['func' => 'togglestatus', 'id' => '###id###', 'oldstatus' => '###status###', 'start' => $start]); $str = $list->getColumnLink('status', ' ' . rex_i18n::msg('demo_addon_list_inactive') . ''); } return $str; From b4690768bf2986a55e9f4bc9a6d03f4cdc088103 Mon Sep 17 00:00:00 2001 From: Andreas Eberhard Date: Sat, 15 Feb 2020 22:23:03 +0100 Subject: [PATCH 06/10] Update CHANGELOG.md Co-Authored-By: Markus Staab --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b7c8d8..6adad31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ Neu Änderungen -* REDAXO-Version auf 5.8 gesetzt +* REDAXO-Version auf min. 5.8 gesetzt * PHP-Version auf 7.0 gesetzt * README geändert und Sprachversion .de hinzugefügt * package.yml erweitert und kommentiert From 890c48037914b8995cd7677acb1c547ae8a80453 Mon Sep 17 00:00:00 2001 From: Andreas Eberhard Date: Sat, 15 Feb 2020 22:23:25 +0100 Subject: [PATCH 07/10] Update CHANGELOG.md Co-Authored-By: Markus Staab --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6adad31..c405b6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ Neu Änderungen * REDAXO-Version auf min. 5.8 gesetzt -* PHP-Version auf 7.0 gesetzt +* PHP-Version auf min. 7.0 gesetzt * README geändert und Sprachversion .de hinzugefügt * package.yml erweitert und kommentiert * de_de.lang-Datei erweitert/angepasst/dokumentiert From d88f3015a9fb42eef737f25a12e817d99b244a78 Mon Sep 17 00:00:00 2001 From: aeberhard Date: Thu, 27 Feb 2020 00:47:13 +0100 Subject: [PATCH 08/10] =?UTF-8?q?Verwaltung=20Demo-Tabelle=20und=20Text?= =?UTF-8?q?=C3=A4nderunge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verwaltung Demo-Tabelle und Textänderungen - Mindestversion PHP 7.3 in package.yml und Changelog - Demo-Einstellungen, beide Versionen angepasst - .php_cs.dist angepasst - diverse Textänderungen --- .php_cs.dist | 5 ++++- CHANGELOG.md | 3 ++- boot.php | 8 +++++--- package.yml | 24 ++++++++++++++---------- pages/DESCRIPTION.de.md | 8 ++++---- pages/EXTENSIONPOINTS.de.md | 3 ++- pages/config.classic_form.php | 9 ++++++++- pages/config.rex_config_form.php | 20 ++++++++------------ pages/eps.eplist.php | 3 +++ 9 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 pages/eps.eplist.php diff --git a/.php_cs.dist b/.php_cs.dist index ceb4a05..f80a570 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -1,6 +1,7 @@ true, 'phpdoc_types_order' => false, 'phpdoc_var_annotation_correct_order' => true, + 'phpdoc_var_without_name' => false, 'psr4' => false, 'semicolon_after_instruction' => false, 'static_lambda' => true, @@ -58,4 +60,5 @@ return PhpCsFixer\Config::create() 'void_return' => false, 'yoda_style' => true, ]) - ->setFinder($finder); + ->setFinder($finder) +; diff --git a/CHANGELOG.md b/CHANGELOG.md index c405b6b..a654305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,12 @@ Neu * Demo-Tabelle in install.php und uninstall.php * Verwaltung der Demo-Tabelle mit rex_list und rex_form * Demo-Seite für die Abfrage von Addon-Properties hinzugefügt +* Quelltexte usw. kommentiert und verlinkt auf die REDAXO-Dokumentation Änderungen * REDAXO-Version auf min. 5.8 gesetzt -* PHP-Version auf min. 7.0 gesetzt +* PHP-Version auf min. 7.3 gesetzt * README geändert und Sprachversion .de hinzugefügt * package.yml erweitert und kommentiert * de_de.lang-Datei erweitert/angepasst/dokumentiert diff --git a/boot.php b/boot.php index 81beca8..da75335 100644 --- a/boot.php +++ b/boot.php @@ -4,9 +4,11 @@ // Diese Datei ist keine Pflichdatei mehr. +$addon = rex_addon::get('demo_addon'); + // Daten wie Autor, Version, Subpages etc. sollten wenn möglich in der package.yml notiert werden. // Sie können aber auch weiterhin hier gesetzt werden: -$this->setProperty('author', 'Friends Of REDAXO'); +$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) @@ -25,11 +27,11 @@ // Assets im Backend einbinden, nur beim demo_addon 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($this->getAssetsUrl('css/style.css')); + rex_view::addCssFile($addon->getAssetsUrl('css/style.css')); // Die script.js nur auf der Unterseite »config« des Addons einbinden if ('config' == rex_be_controller::getCurrentPagePart(2)) { - rex_view::addJsFile($this->getAssetsUrl('js/script.js')); + rex_view::addJsFile($addon->getAssetsUrl('js/script.js')); } // JavaScript-Variable für das Backend im Head-Bereich setzen (var rex[]) diff --git a/package.yml b/package.yml index ec53d9a..88222cb 100644 --- a/package.yml +++ b/package.yml @@ -1,3 +1,4 @@ +# Dokumentation der package.yml https://redaxo.org/doku/master/addon-package # Alle hier gesetzten Werte können über `$addon->getProperty($key)` abgefragt werden package: demo_addon # Pflichtfeld @@ -14,6 +15,8 @@ page: icon: rex-icon fa-desktop # Icon von Font Awesome perm: admin # Seite ist nur für Admins erreichbar pjax: true # Hier kann die Verwendung von PJAX für das eigene Addon gesteuert werden + # mit der Einstellung `prio` kann die Position im Hauptmenü beeinflusst werden + # prio: 10 # Eigener Block in der REDAXO-Navigation # Bezeichnung in der .lang-Datei mit `navigation_+addon-Id` also hier `navigation_demo_addon` @@ -26,11 +29,11 @@ page: icon: rex-icon fa-desktop # Icon von Font Awesome perm: demo_addon[] # Das AddOn stellt ein Benutzerrecht bereit, das aktiviert sein muss, um diese Unterseite zu erreichen. Admins haben alle Rechte. subpages: # Weitere Subpages der Hauptseite - readme: { title: 'translate:readme', subPath: 'README.md'} # README.md aus Addon-Pfad einbinden - description: { title: 'translate:description', subPath: 'pages/DESCRIPTION.md'} - changelog: {title: 'translate:changelog', subPath: 'CHANGELOG.md'} # Abweichender Titel zur .md-Datei - properties: {title: 'translate:properties'} - hidden: { title: 'translate:hidden_subpage', subPath: 'pages/DESCRIPTION.md', hidden: true} # Versteckte Subpage, nur als Beispiel + readme: { title: 'translate:readme', subPath: 'README.md' } # README.md aus Addon-Pfad einbinden + description: { title: 'translate:description', subPath: 'pages/DESCRIPTION.md' } + changelog: {title: 'translate:changelog', subPath: 'CHANGELOG.md' } # Abweichender Titel zur .md-Datei + properties: { title: 'translate:properties' } + hidden: { title: 'translate:hidden_subpage', subPath: 'pages/DESCRIPTION.md', hidden: true } # Versteckte Subpage, nur als Beispiel config: title: 'translate:config' perm: demo_addon[config] # Das noch spezifischere AddOn-Benutzerrecht `config` ist für diese Unterseite erforderlich. Admins haben alle Rechte. @@ -44,13 +47,14 @@ page: title: 'translate:tables' icon: rex-icon fa-table subpages: # Weitere Subpages der Seite tables - tables: { title: 'translate:tables', subPath: 'pages/TABLES.md'} - updatetable: { title: 'translate:updatetable'} + tables: { title: 'translate:tables', subPath: 'pages/TABLES.md' } + updatetable: { title: 'translate:updatetable' } eps: title: 'translate:eps' icon: rex-icon fa-rocket - subpages: # Weitere Subpages der Seite tables - eps: { title: 'translate:eps', subPath: 'pages/EXTENSIONPOINTS.md'} + subpages: # Weitere Subpages der Seite eps + eps: { title: 'translate:eps', subPath: 'pages/EXTENSIONPOINTS.md' } + eplist: { title: 'translate:eplist' } hidden: title: 'translate:hidden_page' icon: rex-icon fa-ban @@ -64,7 +68,7 @@ requires: packages: media_manager: '^2.0.1' # benötigt mindestens das Addon Media Manager 2.0.1 php: - version: '^7.0' # benötigt mindestens PHP 7.0 + version: '^7.3' # benötigt mindestens PHP 7.3 extensions: [gd, xml] # benötigt die PHP-Extensions GDlib und XML # Plugins die automatisch installiert werden sollen diff --git a/pages/DESCRIPTION.de.md b/pages/DESCRIPTION.de.md index ddf3ec5..47e07d9 100644 --- a/pages/DESCRIPTION.de.md +++ b/pages/DESCRIPTION.de.md @@ -37,7 +37,7 @@ z.B. * Verzeichnis ./lib/ Alles ist natürlich auch in der [REDAXO-Dokumentation](https://redaxo.org/doku/master) zu finden und kann dort detailliert nachgeschlagen werden. - +Im Quellcode sind an den entsprechenden Stellen direkte Links auf die REDAXO-Dokumentation vorhanden. ## Extension Points @@ -49,11 +49,11 @@ Im Verzeichnis pages/extensionpoints/ gibt es viele Beispiele für Extension Poi ## Sonstiges -TODO +**TODO** -. zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist +. zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist (siehe auch https://github.com/redaxo/docs/issues/136) . Beschreibung und Anwendung Permission-Check rex::getUser()->hasPerm('meinaddon[delete]') -. Tabellenverwaltung aktivieren/deaktivieren per Ajax +. Tabellenverwaltung aktivieren/deaktivieren von Datensätzen per Ajax . Hinweise bzw. Verbesserungen gerne als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues) auf github. ## Credits diff --git a/pages/EXTENSIONPOINTS.de.md b/pages/EXTENSIONPOINTS.de.md index fea3edf..e4d584d 100644 --- a/pages/EXTENSIONPOINTS.de.md +++ b/pages/EXTENSIONPOINTS.de.md @@ -1 +1,2 @@ -EXTENSIONPOINTS.de.md \ No newline at end of file +EXTENSIONPOINTS.de.md + diff --git a/pages/config.classic_form.php b/pages/config.classic_form.php index e89e1b7..6e81183 100644 --- a/pages/config.classic_form.php +++ b/pages/config.classic_form.php @@ -198,7 +198,14 @@ $category_select->setSize('10'); $category_select->setMultiple(true); $category_select->setAttribute('style', 'width:100%'); -$category_select->setSelected($this->getConfig('categories')); +$mselect = $this->getConfig('categories'); + +/* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert, wird nur hier in der Demo benötigt */ +if (!is_array($mselect)) { + $mselect = explode('|', $mselect); +} /* Ende FIX */ + +$category_select->setSelected($mselect); $n['field'] = $category_select->get(); $formElements[] = $n; diff --git a/pages/config.rex_config_form.php b/pages/config.rex_config_form.php index b3d5ef6..aecb6e8 100644 --- a/pages/config.rex_config_form.php +++ b/pages/config.rex_config_form.php @@ -16,14 +16,14 @@ $form = rex_config_form::factory('demo_addon'); // Fieldset 1 -$form->addFieldset($addon->i18n('config_legend1')); +$field = $form->addFieldset($addon->i18n('config_legend1')); // 1.1 Einfaches Textfeld $field = $form->addInputField('text', 'url', null, ['class' => 'form-control']); $field->setLabel($addon->i18n('config_url')); // 1.2 Textarea -$field = $form->addTextAreaField('text'); +$field = $form->addTextAreaField('text', null, ['class' => 'form-control']); $field->setLabel($addon->i18n('config_text')); // 1.3 Checkbox @@ -60,7 +60,6 @@ // 2.1 Media-Widget $field = $form->addMediaField('file'); $field->setLabel($addon->i18n('config_file')); -$field->setAttribute('id', 'medienpool-linkmap-usw-file'); // 2.2 MediaList-Widget $field = $form->addMediaListField('files'); @@ -75,16 +74,13 @@ $field->setLabel($addon->i18n('config_articles')); // 2.5 Kategorienauswahl -$category_select = new rex_category_select(false, false, false, true); -$category_select->setName('medienpool_linkmap_usw_[categories]'); -$category_select->setId('demo_addon-config-categories'); -$category_select->setSize('10'); -$category_select->setMultiple(true); -$category_select->setAttribute('style', 'width:100%'); -$category_select->setSelected($this->getConfig('categories')); -$html = $category_select->get(); -$field = $form->addRawField($html); +$field = $form->addSelectField('categories', null, ['class' => 'form-control']); $field->setLabel($addon->i18n('config_categories')); +$field->setSelect(new rex_category_select(false, false, false, true)); +$category_select = $field->getSelect(); +$category_select->setSize('10'); +$category_select->setAttribute('multiple', 'multiple'); +$category_select->setAttribute('class', 'form-control'); // Ausgabe des Formulars $fragment = new rex_fragment(); diff --git a/pages/eps.eplist.php b/pages/eps.eplist.php new file mode 100644 index 0000000..8d3f593 --- /dev/null +++ b/pages/eps.eplist.php @@ -0,0 +1,3 @@ +eps.eplist.php +includeFile(__DIR__.'/install.php'); From b066c5070b9c89fbe178e0e94a0fb3dc4c0705d8 Mon Sep 17 00:00:00 2001 From: aeberhard Date: Thu, 5 Mar 2020 21:38:20 +0100 Subject: [PATCH 09/10] =?UTF-8?q?Diverse=20Text=C3=A4nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .php_cs.dist | 2 +- CHANGELOG.md | 5 +++-- boot.php | 11 +++++++---- install.php | 4 +--- lang/de_de.lang | 11 ++++++++--- pages/DESCRIPTION.de.md | 1 + pages/TABLES.de.md | 7 ++++--- uninstall.php | 2 -- update.php | 2 -- 9 files changed, 25 insertions(+), 20 deletions(-) diff --git a/.php_cs.dist b/.php_cs.dist index f80a570..9181223 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -2,7 +2,7 @@ // REDAXO-Coding-Standards // https://github.com/redaxo/redaxo/blob/master/.php_cs.dist -// kann z.B. mit PHPStorm oder mit VSCode mit der Extension `php cs fixer` verwendet werden +// kann z.B. mit PHPStorm, oder mit VS Code mit der Extension `php cs fixer` verwendet werden $finder = PhpCsFixer\Finder::create() ->in([__DIR__]); diff --git a/CHANGELOG.md b/CHANGELOG.md index a654305..9e9505c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,15 @@ # Changelog -## Version 1.2.0beta1 // 15.02.2020 +## Version 1.2.0beta1 // 15.03.2020 Neu * Addon-Struktur, Navigation komplett überarbeitet/erweitert -* Addon-Einstellungen erweitert +* Addon-Einstellungen (klassisch) erweitert * Addon-Einstellungen mit rex_config_form * Demo-Tabelle in install.php und uninstall.php * Verwaltung der Demo-Tabelle mit rex_list und rex_form + * Klasse demo_addon_rex_form extends rex_form * Demo-Seite für die Abfrage von Addon-Properties hinzugefügt * Quelltexte usw. kommentiert und verlinkt auf die REDAXO-Dokumentation diff --git a/boot.php b/boot.php index da75335..bd05963 100644 --- a/boot.php +++ b/boot.php @@ -1,7 +1,5 @@ getAssetsUrl('css/style.css')); - // Die script.js nur auf der Unterseite »config« des Addons einbinden + // Die script.js nur auf der Unterseite `config` des Addons einbinden if ('config' == rex_be_controller::getCurrentPagePart(2)) { - rex_view::addJsFile($addon->getAssetsUrl('js/script.js')); + 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[]) diff --git a/install.php b/install.php index 3375268..e784a11 100644 --- a/install.php +++ b/install.php @@ -1,11 +1,9 @@ translate:navititle in der package.yml demo_addon_navititle = Demo-Addon @@ -11,7 +11,7 @@ demo_addon_title = REDAXO Demo-Addon # Eigener Block mit Bezeichnung in der REDAXO-Navigation # in der package.yml des Addons folgendes unter page angeben: `block: demo_addon` -# `navigation_` + addon-Name hier also `navigation_demo_addon` +# `navigation_` + `addon-Name` hier also `navigation_demo_addon` navigation_demo_addon = DEMO-Addon # Hauptnavi-Punkte des Addons @@ -26,6 +26,7 @@ demo_addon_description = Beschreibung demo_addon_readme = README demo_addon_changelog = CHANGELOG demo_addon_properties = Properties +demo_addon_properties_title = Addon-Properties demo_addon_hidden_subpage = Versteckte Unterseite # Reiter Einstellungen @@ -83,6 +84,10 @@ demo_addon_list_activated = Datensatz wurde aktiviert! demo_addon_list_deactivated = Datensatz wurde deaktiviert! demo_addon_list_error = Beim Datenbank-Update ist ein Fehler aufgetreten! -# Benennung für die Addonrechte, sichtbar innerhalb der REDAXO-Administration unter Benutzer > Rollen > Allgemein +# Reiter Extension Points +demo_addon_eplist = Liste der Extension Points + +# Benennung für die Addonrechte +# sichtbar innerhalb der REDAXO-Administration unter `Benutzer > Rollen > Allgemein` perm_general_demo_addon[] = Rechte für Demo-Addon perm_general_demo_addon[config] = Rechte für Demo-Addon-Konfiguration diff --git a/pages/DESCRIPTION.de.md b/pages/DESCRIPTION.de.md index 47e07d9..5c00fca 100644 --- a/pages/DESCRIPTION.de.md +++ b/pages/DESCRIPTION.de.md @@ -51,6 +51,7 @@ Im Verzeichnis pages/extensionpoints/ gibt es viele Beispiele für Extension Poi **TODO** +. Validierungen bei den Einstellungen (klassisch und rex_config_form) . zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist (siehe auch https://github.com/redaxo/docs/issues/136) . Beschreibung und Anwendung Permission-Check rex::getUser()->hasPerm('meinaddon[delete]') . Tabellenverwaltung aktivieren/deaktivieren von Datensätzen per Ajax diff --git a/pages/TABLES.de.md b/pages/TABLES.de.md index 8a3684f..d3826a5 100644 --- a/pages/TABLES.de.md +++ b/pages/TABLES.de.md @@ -2,14 +2,15 @@ ## Demo-Tabelle Bei der Installation des `demo_addon` wird automatisch die Tabelle `%%demo_addon` angelegt und mit Testdaten gefüllt (siehe `install.php`). -**%%** steht hier für den REDAXO Table Prefix für Datenbanktabellen und ist standardmäßig auf `rex_` eingestellt (table_prefix in der default.config.yml). +**%%** steht hier für den REDAXO Table Prefix für Datenbanktabellen und ist standardmäßig auf `rex_` eingestellt (table_prefix in der config.yml). Die Tabellenverwaltung wurde mit den REDAXO-Klassen `rex_list` und `rex_form` umgesetzt. Die Klasse `rex_form` wird in dem Beispiel durch die Klasse `demo_addon_rex_form` erweitert (`demo_addon_rex_form.php` im lib-Verzeichnis des Addons). Hier wird die Funktion `preSave()` zum speichern des Feldes Geburtsdatum (`birthdate`) im richtigen Format verwendet. * [zur Tabellenverwaltung](?page=demo_addon/tables/updatetable) -> **Hinweis** In Addons und Modulen **immer** die REDAXO-Funktion `rex::getTable()` verwenden! +> **Hinweis:** In Addons und Modulen **immer** die REDAXO-Funktion `rex::getTable()` verwenden! +> Dadurch wird der richtige Tabellen-Prefix zum Tabellen-Namen hinzugefügt. > Beispiel: `rex::getTable('adressen')` => rex_adressen ## Tabellendefinitionen @@ -17,7 +18,7 @@ Die Klasse `rex_form` wird in dem Beispiel durch die Klasse `demo_addon_rex_form Addon-Eigene Tabellen sollten in der `install.php` mit Hilfe der Klasse `rex_sql_table` angelegt bzw. geändert werden. Beispiel in der `install.php` dieses Addons. Versionsabhängige Änderungen am besten in der `update.php` (siehe Kommentare). Löschen der eigenen Tabellen in der `uninstall.php`. -> **Hinweis** Mit dem Addon `adminer` kann eine Tabelle definiert werden und danach der PHP-Quellcode für die eigene install.php generiert werden. (Tabelle auswählen und dann auf den Link `rex_sql_table code` klicken) +> **Hinweis:** Mit dem Addon `adminer` kann eine Tabelle definiert werden und danach der PHP-Quellcode für die eigene install.php generiert werden. (Tabelle auswählen und dann auf den Link `rex_sql_table code` klicken) * [Datenbanktabellen in der REDAXO-Dokumentation](https://redaxo.org/doku/master/datenbank-tabellen) diff --git a/uninstall.php b/uninstall.php index c15eeaa..edad24f 100644 --- a/uninstall.php +++ b/uninstall.php @@ -1,7 +1,5 @@ Date: Mon, 15 Jun 2020 22:59:10 +0200 Subject: [PATCH 10/10] Grosses Update Tabellenverwaltung, Extensionpoints usw --- .php_cs.dist | 2 +- CHANGELOG.md | 66 +++--- README.de.md | 42 ++-- README.md | 44 ++-- assets/css/style.css | 49 +++- assets/js/eps.js | 33 +++ assets/js/script.js | 18 +- boot.php | 46 +++- functions/ep_functions.php | 110 +++++++++ install.php | 34 +-- lang/de_de.lang | 48 ++-- lib/README.md | 8 +- lib/demo_addon_logger.php | 48 ++++ lib/logger.php | 22 -- package.yml | 146 +++++++----- pages/DESCRIPTION.de.md | 66 +++--- pages/EPLISTHEADER.de.md | 5 + pages/EPLISTHEADER.md | 7 + pages/EXTENSIONPOINTS.de.md | 34 ++- pages/PROPERTIES.de.md | 16 ++ pages/PROPERTIES.md | 3 + pages/TABLES.de.md | 23 +- pages/config.classic_form.php | 87 ++++--- pages/config.rex_config_form.php | 40 ++-- pages/eps.eplist.php | 64 ++++- pages/eps.logfile.php | 113 +++++++++ .../backup/BACKUP_AFTER_DB_EXPORT.de.md | 9 + .../backup/BACKUP_AFTER_DB_EXPORT.php | 8 + .../backup/BACKUP_AFTER_DB_IMPORT.de.md | 11 + .../backup/BACKUP_AFTER_DB_IMPORT.php | 12 + .../backup/BACKUP_AFTER_FILE_EXPORT.de.md | 9 + .../backup/BACKUP_AFTER_FILE_EXPORT.php | 6 + .../backup/BACKUP_AFTER_FILE_IMPORT.de.md | 9 + .../backup/BACKUP_AFTER_FILE_IMPORT.php | 6 + .../backup/BACKUP_BEFORE_DB_EXPORT.de.md | 9 + .../backup/BACKUP_BEFORE_DB_EXPORT.php | 8 + .../backup/BACKUP_BEFORE_DB_IMPORT.de.md | 11 + .../backup/BACKUP_BEFORE_DB_IMPORT.php | 12 + .../backup/BACKUP_BEFORE_FILE_EXPORT.de.md | 9 + .../backup/BACKUP_BEFORE_FILE_EXPORT.php | 6 + .../backup/BACKUP_BEFORE_FILE_IMPORT.de.md | 9 + .../backup/BACKUP_BEFORE_FILE_IMPORT.php | 6 + pages/extensionpoints/backup/README.de.md | 3 + .../be_style/BE_STYLE_PAGE_CONTENT.de.md | 9 + .../be_style/BE_STYLE_PAGE_CONTENT.php | 7 + .../be_style/BE_STYLE_SCSS_COMPILE.de.md | 9 + .../be_style/BE_STYLE_SCSS_COMPILE.php | 7 + .../be_style/BE_STYLE_SCSS_FILES.de.md | 9 + .../be_style/BE_STYLE_SCSS_FILES.php | 7 + pages/extensionpoints/be_style/README.de.md | 3 + .../extensionpoints/core/CACHE_DELETED.de.md | 9 + pages/extensionpoints/core/CACHE_DELETED.php | 8 + pages/extensionpoints/core/CLANG_ADDED.de.md | 9 + pages/extensionpoints/core/CLANG_ADDED.php | 7 + .../extensionpoints/core/CLANG_DELETED.de.md | 9 + pages/extensionpoints/core/CLANG_DELETED.php | 7 + .../extensionpoints/core/CLANG_FORM_ADD.de.md | 9 + pages/extensionpoints/core/CLANG_FORM_ADD.php | 7 + .../core/CLANG_FORM_BUTTONS.de.md | 9 + .../core/CLANG_FORM_BUTTONS.php | 7 + .../core/CLANG_FORM_EDIT.de.md | 9 + .../extensionpoints/core/CLANG_FORM_EDIT.php | 7 + .../extensionpoints/core/CLANG_UPDATED.de.md | 9 + pages/extensionpoints/core/CLANG_UPDATED.php | 7 + .../core/COMPLEX_PERM_REMOVE_ITEM.de.md | 9 + .../core/COMPLEX_PERM_REMOVE_ITEM.php | 7 + .../core/COMPLEX_PERM_REPLACE_ITEM.de.md | 9 + .../core/COMPLEX_PERM_REPLACE_ITEM.php | 7 + pages/extensionpoints/core/EDITOR_URL.de.md | 9 + pages/extensionpoints/core/EDITOR_URL.php | 7 + pages/extensionpoints/core/FE_OUTPUT.de.md | 12 + pages/extensionpoints/core/FE_OUTPUT.php | 10 + .../core/I18N_MISSING_TRANSLATION.de.md | 9 + .../core/I18N_MISSING_TRANSLATION.php | 7 + pages/extensionpoints/core/META_NAVI.de.md | 9 + pages/extensionpoints/core/META_NAVI.php | 9 + .../extensionpoints/core/OUTPUT_FILTER.de.md | 9 + pages/extensionpoints/core/OUTPUT_FILTER.php | 29 +++ .../core/PACKAGES_INCLUDED.de.md | 9 + .../core/PACKAGES_INCLUDED.php | 12 + .../extensionpoints/core/PAGES_PREPARED.de.md | 9 + pages/extensionpoints/core/PAGES_PREPARED.php | 11 + .../extensionpoints/core/PAGE_BODY_ATTR.de.md | 9 + pages/extensionpoints/core/PAGE_BODY_ATTR.php | 7 + pages/extensionpoints/core/PAGE_CHECKED.de.md | 11 + pages/extensionpoints/core/PAGE_CHECKED.php | 11 + pages/extensionpoints/core/PAGE_HEADER.de.md | 9 + pages/extensionpoints/core/PAGE_HEADER.php | 9 + pages/extensionpoints/core/PAGE_SIDEBAR.de.md | 9 + pages/extensionpoints/core/PAGE_SIDEBAR.php | 7 + pages/extensionpoints/core/PAGE_TITLE.de.md | 9 + pages/extensionpoints/core/PAGE_TITLE.php | 11 + .../core/PAGE_TITLE_SHOWN.de.md | 9 + .../extensionpoints/core/PAGE_TITLE_SHOWN.php | 9 + .../core/PASSWORD_UPDATED.de.md | 9 + .../extensionpoints/core/PASSWORD_UPDATED.php | 7 + .../core/PROFILE_UPDATED.de.md | 9 + .../extensionpoints/core/PROFILE_UPDATED.php | 7 + pages/extensionpoints/core/README.de.md | 3 + .../core/RESPONSE_SHUTDOWN.de.md | 9 + .../core/RESPONSE_SHUTDOWN.php | 10 + .../core/REX_FORM_CONTROL_FIELDS.de.md | 9 + .../core/REX_FORM_CONTROL_FIELDS.php | 7 + .../core/REX_FORM_DELETED.de.md | 9 + .../extensionpoints/core/REX_FORM_DELETED.php | 7 + pages/extensionpoints/core/REX_FORM_GET.de.md | 9 + pages/extensionpoints/core/REX_FORM_GET.php | 7 + .../core/REX_FORM_INPUT_ATTRIBUTES.de.md | 9 + .../core/REX_FORM_INPUT_ATTRIBUTES.php | 7 + .../core/REX_FORM_INPUT_CLASS.de.md | 9 + .../core/REX_FORM_INPUT_CLASS.php | 7 + .../core/REX_FORM_INPUT_TAG.de.md | 9 + .../core/REX_FORM_INPUT_TAG.php | 7 + .../extensionpoints/core/REX_FORM_SAVED.de.md | 9 + pages/extensionpoints/core/REX_FORM_SAVED.php | 7 + pages/extensionpoints/core/REX_LIST_GET.de.md | 9 + pages/extensionpoints/core/REX_LIST_GET.php | 7 + pages/extensionpoints/core/USER_ADDED.de.md | 9 + pages/extensionpoints/core/USER_ADDED.php | 7 + pages/extensionpoints/core/USER_DELETED.de.md | 9 + pages/extensionpoints/core/USER_DELETED.php | 7 + pages/extensionpoints/core/USER_UPDATED.de.md | 9 + pages/extensionpoints/core/USER_UPDATED.php | 7 + .../MEDIA_MANAGER_AFTER_SEND.de.md | 9 + .../mediamanager/MEDIA_MANAGER_AFTER_SEND.php | 7 + .../MEDIA_MANAGER_BEFORE_SEND.de.md | 9 + .../MEDIA_MANAGER_BEFORE_SEND.php | 7 + .../MEDIA_MANAGER_FILTERSET.de.md | 9 + .../mediamanager/MEDIA_MANAGER_FILTERSET.php | 7 + .../mediamanager/MEDIA_MANAGER_URL.de.md | 9 + .../mediamanager/MEDIA_MANAGER_URL.php | 7 + .../extensionpoints/mediamanager/README.de.md | 3 + .../medienpool/MEDIA_ADDED.de.md | 9 + .../medienpool/MEDIA_ADDED.php | 7 + .../medienpool/MEDIA_CATEGORY_IS_IN_USE.de.md | 9 + .../medienpool/MEDIA_CATEGORY_IS_IN_USE.php | 7 + .../medienpool/MEDIA_DELETED.de.md | 9 + .../medienpool/MEDIA_DELETED.php | 7 + .../medienpool/MEDIA_DETAIL_SIDEBAR.de.md | 9 + .../medienpool/MEDIA_DETAIL_SIDEBAR.php | 7 + .../medienpool/MEDIA_FORM_ADD.de.md | 9 + .../medienpool/MEDIA_FORM_ADD.php | 7 + .../medienpool/MEDIA_FORM_EDIT.de.md | 9 + .../medienpool/MEDIA_FORM_EDIT.php | 7 + .../medienpool/MEDIA_IS_IN_USE.de.md | 9 + .../medienpool/MEDIA_IS_IN_USE.php | 7 + .../medienpool/MEDIA_IS_PERMITTED.de.md | 9 + .../medienpool/MEDIA_IS_PERMITTED.php | 7 + .../medienpool/MEDIA_LIST_FUNCTIONS.de.md | 9 + .../medienpool/MEDIA_LIST_FUNCTIONS.php | 7 + .../medienpool/MEDIA_LIST_QUERY.de.md | 9 + .../medienpool/MEDIA_LIST_QUERY.php | 7 + .../medienpool/MEDIA_LIST_TOOLBAR.de.md | 9 + .../medienpool/MEDIA_LIST_TOOLBAR.php | 7 + .../medienpool/MEDIA_MOVED.de.md | 9 + .../medienpool/MEDIA_MOVED.php | 7 + .../medienpool/MEDIA_TOIMAGE.de.md | 9 + .../medienpool/MEDIA_TOIMAGE.php | 7 + .../medienpool/MEDIA_UPDATED.de.md | 9 + .../medienpool/MEDIA_UPDATED.php | 7 + .../medienpool/MEDIA_URL_REWRITE.de.md | 9 + .../medienpool/MEDIA_URL_REWRITE.php | 7 + .../medienpool/PAGE_MEDIAPOOL_HEADER.de.md | 9 + .../medienpool/PAGE_MEDIAPOOL_HEADER.php | 7 + pages/extensionpoints/medienpool/README.de.md | 3 + .../metainfo/ART_META_UPDATED.de.md | 9 + .../metainfo/ART_META_UPDATED.php | 7 + .../metainfo/METAINFO_CUSTOM_FIELD.de.md | 9 + .../metainfo/METAINFO_CUSTOM_FIELD.php | 7 + .../metainfo/METAINFO_TYPE_FIELDS.de.md | 9 + .../metainfo/METAINFO_TYPE_FIELDS.php | 7 + pages/extensionpoints/metainfo/README.de.md | 1 + .../extensionpoints/structure/ART_ADDED.de.md | 10 + pages/extensionpoints/structure/ART_ADDED.php | 0 .../structure/ART_COPIED.de.md | 10 + .../extensionpoints/structure/ART_COPIED.php | 0 .../structure/ART_DELETED.de.md | 10 + .../extensionpoints/structure/ART_DELETED.php | 0 .../structure/ART_IS_PERMITTED.de.md | 10 + .../structure/ART_IS_PERMITTED.php | 0 .../extensionpoints/structure/ART_MOVED.de.md | 10 + pages/extensionpoints/structure/ART_MOVED.php | 0 .../structure/ART_PRE_DELETED.de.md | 10 + .../structure/ART_PRE_DELETED.php | 0 .../structure/ART_STATUS.de.md | 10 + .../extensionpoints/structure/ART_STATUS.php | 0 .../structure/ART_STATUS_TYPES.de.md | 10 + .../structure/ART_STATUS_TYPES.php | 0 .../structure/ART_TO_CAT.de.md | 10 + .../extensionpoints/structure/ART_TO_CAT.php | 0 .../structure/ART_TO_STARTARTICLE.de.md | 10 + .../structure/ART_TO_STARTARTICLE.php | 0 .../structure/ART_UPDATED.de.md | 10 + .../extensionpoints/structure/ART_UPDATED.php | 0 .../extensionpoints/structure/CAT_ADDED.de.md | 10 + pages/extensionpoints/structure/CAT_ADDED.php | 0 .../structure/CAT_DELETED.de.md | 10 + .../extensionpoints/structure/CAT_DELETED.php | 0 .../structure/CAT_FORM_ADD.de.md | 10 + .../structure/CAT_FORM_ADD.php | 0 .../structure/CAT_FORM_BUTTONS.de.md | 10 + .../structure/CAT_FORM_BUTTONS.php | 0 .../structure/CAT_FORM_EDIT.de.md | 10 + .../structure/CAT_FORM_EDIT.php | 0 .../structure/CAT_IS_PERMITTED.de.md | 10 + .../structure/CAT_IS_PERMITTED.php | 0 .../extensionpoints/structure/CAT_MOVED.de.md | 10 + pages/extensionpoints/structure/CAT_MOVED.php | 0 .../structure/CAT_STATUS.de.md | 10 + .../extensionpoints/structure/CAT_STATUS.php | 0 .../structure/CAT_STATUS_TYPES.de.md | 10 + .../structure/CAT_STATUS_TYPES.php | 0 .../structure/CAT_TO_ART.de.md | 10 + .../extensionpoints/structure/CAT_TO_ART.php | 0 .../structure/CAT_UPDATED.de.md | 10 + .../extensionpoints/structure/CAT_UPDATED.php | 0 .../structure/PAGE_STRUCTURE_HEADER.de.md | 10 + .../structure/PAGE_STRUCTURE_HEADER.php | 0 .../structure/PAGE_STRUCTURE_HEADER_PRE.de.md | 10 + .../structure/PAGE_STRUCTURE_HEADER_PRE.php | 0 pages/extensionpoints/structure/README.de.md | 3 + .../structure/URL_REWRITE.de.md | 10 + .../extensionpoints/structure/URL_REWRITE.php | 0 .../structure_content/ART_CONTENT.de.md | 10 + .../structure_content/ART_CONTENT.php | 0 .../structure_content/ART_INIT.de.md | 10 + .../structure_content/ART_INIT.php | 0 .../structure_content/ART_SLICES_COPY.de.md | 10 + .../structure_content/ART_SLICES_COPY.php | 0 .../structure_content/ART_SLICES_QUERY.de.md | 10 + .../structure_content/ART_SLICES_QUERY.php | 0 .../structure_content/GENERATE_FILTER.de.md | 10 + .../structure_content/GENERATE_FILTER.php | 0 .../structure_content/MODULE_ADDED.de.md | 10 + .../structure_content/MODULE_ADDED.php | 0 .../structure_content/MODULE_DELETED.de.md | 10 + .../structure_content/MODULE_DELETED.php | 0 .../structure_content/MODULE_UPDATED.de.md | 10 + .../structure_content/MODULE_UPDATED.php | 0 .../structure_content/README.de.md | 1 + .../structure_content/SLICE_ADD.de.md | 10 + .../structure_content/SLICE_ADD.php | 0 .../structure_content/SLICE_ADDED.de.md | 10 + .../structure_content/SLICE_ADDED.php | 0 .../structure_content/SLICE_DELETE.de.md | 10 + .../structure_content/SLICE_DELETE.php | 0 .../structure_content/SLICE_DELETED.de.md | 10 + .../structure_content/SLICE_DELETED.php | 0 .../structure_content/SLICE_MOVE.de.md | 10 + .../structure_content/SLICE_MOVE.php | 0 .../structure_content/SLICE_OUTPUT.de.md | 10 + .../structure_content/SLICE_OUTPUT.php | 0 .../structure_content/SLICE_SHOW.de.md | 10 + .../structure_content/SLICE_SHOW.php | 0 .../structure_content/SLICE_UPDATE.de.md | 10 + .../structure_content/SLICE_UPDATE.php | 0 .../structure_content/SLICE_UPDATED.de.md | 10 + .../structure_content/SLICE_UPDATED.php | 0 .../STRUCTURE_CONTENT_AFTER_SLICES.de.md | 10 + .../STRUCTURE_CONTENT_AFTER_SLICES.php | 0 .../STRUCTURE_CONTENT_ARTICLE_UPDATED.de.md | 10 + .../STRUCTURE_CONTENT_ARTICLE_UPDATED.php | 0 .../STRUCTURE_CONTENT_BEFORE_SLICES.de.md | 10 + .../STRUCTURE_CONTENT_BEFORE_SLICES.php | 0 .../STRUCTURE_CONTENT_HEADER.de.md | 10 + .../STRUCTURE_CONTENT_HEADER.php | 0 .../STRUCTURE_CONTENT_MODULE_SELECT.de.md | 10 + .../STRUCTURE_CONTENT_MODULE_SELECT.php | 0 .../STRUCTURE_CONTENT_SIDEBAR.de.md | 10 + .../STRUCTURE_CONTENT_SIDEBAR.php | 0 .../STRUCTURE_CONTENT_SLICE_ADDED.de.md | 10 + .../STRUCTURE_CONTENT_SLICE_ADDED.php | 0 .../STRUCTURE_CONTENT_SLICE_DELETED.de.md | 10 + .../STRUCTURE_CONTENT_SLICE_DELETED.php | 0 .../STRUCTURE_CONTENT_SLICE_MENU.de.md | 10 + .../STRUCTURE_CONTENT_SLICE_MENU.php | 0 .../STRUCTURE_CONTENT_SLICE_UPDATED.de.md | 10 + .../STRUCTURE_CONTENT_SLICE_UPDATED.php | 0 .../structure_content/TEMPLATE_ADDED.de.md | 10 + .../structure_content/TEMPLATE_ADDED.php | 0 .../structure_content/TEMPLATE_DELETED.de.md | 10 + .../structure_content/TEMPLATE_DELETED.php | 0 .../structure_content/TEMPLATE_UPDATED.md | 10 + .../structure_content/TEMPLATE_UPDATED.php | 0 pages/extensionpoints/yform/README.de.md | 3 + pages/extensionpoints/yrewrite/README.de.md | 3 + pages/index.php | 2 +- pages/intro.properties.php | 66 ++++++ pages/main.properties.php | 37 --- pages/system.log.demo_addon.php | 6 + pages/tables.updatetable.php | 19 +- plugins/documentation/LICENSE | 21 -- plugins/documentation/README.md | 10 - .../documentation/assets/documentation.css | 184 --------------- plugins/documentation/assets/documentation.js | 143 ------------ plugins/documentation/boot.php | 8 - plugins/documentation/docs/de_de/_vorlage.md | 201 ---------------- .../documentation/docs/de_de/assets/for.png | Bin 7549 -> 0 bytes .../docs/de_de/assets/for_small.png | Bin 12246 -> 0 bytes plugins/documentation/docs/de_de/help_faq.md | 11 - .../documentation/docs/de_de/help_where.md | 17 -- .../documentation/docs/de_de/howto_copy.md | 23 -- .../docs/de_de/howto_customize.md | 80 ------- .../documentation/docs/de_de/main_folder.md | 50 ---- .../documentation/docs/de_de/main_intro.md | 29 --- plugins/documentation/docs/de_de/main_navi.md | 31 --- plugins/documentation/lang/de_de.lang | 9 - plugins/documentation/lang/en_gb.lang | 9 - plugins/documentation/lang/es_es.lang | 9 - plugins/documentation/lang/pt_br.lang | 9 - plugins/documentation/lang/sv_se.lang | 9 - plugins/documentation/package.yml | 13 -- plugins/documentation/pages/index.php | 220 ------------------ uninstall.php | 18 +- update.php | 8 +- 315 files changed, 2746 insertions(+), 1435 deletions(-) create mode 100644 assets/js/eps.js create mode 100644 functions/ep_functions.php create mode 100644 lib/demo_addon_logger.php delete mode 100644 lib/logger.php create mode 100644 pages/EPLISTHEADER.de.md create mode 100644 pages/EPLISTHEADER.md create mode 100644 pages/PROPERTIES.de.md create mode 100644 pages/PROPERTIES.md create mode 100644 pages/eps.logfile.php create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.php create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.de.md create mode 100644 pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.php create mode 100644 pages/extensionpoints/backup/README.de.md create mode 100644 pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.de.md create mode 100644 pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.php create mode 100644 pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.de.md create mode 100644 pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.php create mode 100644 pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.de.md create mode 100644 pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.php create mode 100644 pages/extensionpoints/be_style/README.de.md create mode 100644 pages/extensionpoints/core/CACHE_DELETED.de.md create mode 100644 pages/extensionpoints/core/CACHE_DELETED.php create mode 100644 pages/extensionpoints/core/CLANG_ADDED.de.md create mode 100644 pages/extensionpoints/core/CLANG_ADDED.php create mode 100644 pages/extensionpoints/core/CLANG_DELETED.de.md create mode 100644 pages/extensionpoints/core/CLANG_DELETED.php create mode 100644 pages/extensionpoints/core/CLANG_FORM_ADD.de.md create mode 100644 pages/extensionpoints/core/CLANG_FORM_ADD.php create mode 100644 pages/extensionpoints/core/CLANG_FORM_BUTTONS.de.md create mode 100644 pages/extensionpoints/core/CLANG_FORM_BUTTONS.php create mode 100644 pages/extensionpoints/core/CLANG_FORM_EDIT.de.md create mode 100644 pages/extensionpoints/core/CLANG_FORM_EDIT.php create mode 100644 pages/extensionpoints/core/CLANG_UPDATED.de.md create mode 100644 pages/extensionpoints/core/CLANG_UPDATED.php create mode 100644 pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.de.md create mode 100644 pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.php create mode 100644 pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.de.md create mode 100644 pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.php create mode 100644 pages/extensionpoints/core/EDITOR_URL.de.md create mode 100644 pages/extensionpoints/core/EDITOR_URL.php create mode 100644 pages/extensionpoints/core/FE_OUTPUT.de.md create mode 100644 pages/extensionpoints/core/FE_OUTPUT.php create mode 100644 pages/extensionpoints/core/I18N_MISSING_TRANSLATION.de.md create mode 100644 pages/extensionpoints/core/I18N_MISSING_TRANSLATION.php create mode 100644 pages/extensionpoints/core/META_NAVI.de.md create mode 100644 pages/extensionpoints/core/META_NAVI.php create mode 100644 pages/extensionpoints/core/OUTPUT_FILTER.de.md create mode 100644 pages/extensionpoints/core/OUTPUT_FILTER.php create mode 100644 pages/extensionpoints/core/PACKAGES_INCLUDED.de.md create mode 100644 pages/extensionpoints/core/PACKAGES_INCLUDED.php create mode 100644 pages/extensionpoints/core/PAGES_PREPARED.de.md create mode 100644 pages/extensionpoints/core/PAGES_PREPARED.php create mode 100644 pages/extensionpoints/core/PAGE_BODY_ATTR.de.md create mode 100644 pages/extensionpoints/core/PAGE_BODY_ATTR.php create mode 100644 pages/extensionpoints/core/PAGE_CHECKED.de.md create mode 100644 pages/extensionpoints/core/PAGE_CHECKED.php create mode 100644 pages/extensionpoints/core/PAGE_HEADER.de.md create mode 100644 pages/extensionpoints/core/PAGE_HEADER.php create mode 100644 pages/extensionpoints/core/PAGE_SIDEBAR.de.md create mode 100644 pages/extensionpoints/core/PAGE_SIDEBAR.php create mode 100644 pages/extensionpoints/core/PAGE_TITLE.de.md create mode 100644 pages/extensionpoints/core/PAGE_TITLE.php create mode 100644 pages/extensionpoints/core/PAGE_TITLE_SHOWN.de.md create mode 100644 pages/extensionpoints/core/PAGE_TITLE_SHOWN.php create mode 100644 pages/extensionpoints/core/PASSWORD_UPDATED.de.md create mode 100644 pages/extensionpoints/core/PASSWORD_UPDATED.php create mode 100644 pages/extensionpoints/core/PROFILE_UPDATED.de.md create mode 100644 pages/extensionpoints/core/PROFILE_UPDATED.php create mode 100644 pages/extensionpoints/core/README.de.md create mode 100644 pages/extensionpoints/core/RESPONSE_SHUTDOWN.de.md create mode 100644 pages/extensionpoints/core/RESPONSE_SHUTDOWN.php create mode 100644 pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.php create mode 100644 pages/extensionpoints/core/REX_FORM_DELETED.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_DELETED.php create mode 100644 pages/extensionpoints/core/REX_FORM_GET.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_GET.php create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.php create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_CLASS.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_CLASS.php create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_TAG.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_INPUT_TAG.php create mode 100644 pages/extensionpoints/core/REX_FORM_SAVED.de.md create mode 100644 pages/extensionpoints/core/REX_FORM_SAVED.php create mode 100644 pages/extensionpoints/core/REX_LIST_GET.de.md create mode 100644 pages/extensionpoints/core/REX_LIST_GET.php create mode 100644 pages/extensionpoints/core/USER_ADDED.de.md create mode 100644 pages/extensionpoints/core/USER_ADDED.php create mode 100644 pages/extensionpoints/core/USER_DELETED.de.md create mode 100644 pages/extensionpoints/core/USER_DELETED.php create mode 100644 pages/extensionpoints/core/USER_UPDATED.de.md create mode 100644 pages/extensionpoints/core/USER_UPDATED.php create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.de.md create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.php create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.de.md create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.php create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.de.md create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.php create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.de.md create mode 100644 pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.php create mode 100644 pages/extensionpoints/mediamanager/README.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_ADDED.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_ADDED.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_DELETED.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_DELETED.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_FORM_ADD.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_FORM_ADD.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_MOVED.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_MOVED.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_TOIMAGE.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_TOIMAGE.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_UPDATED.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_UPDATED.php create mode 100644 pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.de.md create mode 100644 pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.php create mode 100644 pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.de.md create mode 100644 pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.php create mode 100644 pages/extensionpoints/medienpool/README.de.md create mode 100644 pages/extensionpoints/metainfo/ART_META_UPDATED.de.md create mode 100644 pages/extensionpoints/metainfo/ART_META_UPDATED.php create mode 100644 pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.de.md create mode 100644 pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.php create mode 100644 pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.de.md create mode 100644 pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.php create mode 100644 pages/extensionpoints/metainfo/README.de.md create mode 100644 pages/extensionpoints/structure/ART_ADDED.de.md create mode 100644 pages/extensionpoints/structure/ART_ADDED.php create mode 100644 pages/extensionpoints/structure/ART_COPIED.de.md create mode 100644 pages/extensionpoints/structure/ART_COPIED.php create mode 100644 pages/extensionpoints/structure/ART_DELETED.de.md create mode 100644 pages/extensionpoints/structure/ART_DELETED.php create mode 100644 pages/extensionpoints/structure/ART_IS_PERMITTED.de.md create mode 100644 pages/extensionpoints/structure/ART_IS_PERMITTED.php create mode 100644 pages/extensionpoints/structure/ART_MOVED.de.md create mode 100644 pages/extensionpoints/structure/ART_MOVED.php create mode 100644 pages/extensionpoints/structure/ART_PRE_DELETED.de.md create mode 100644 pages/extensionpoints/structure/ART_PRE_DELETED.php create mode 100644 pages/extensionpoints/structure/ART_STATUS.de.md create mode 100644 pages/extensionpoints/structure/ART_STATUS.php create mode 100644 pages/extensionpoints/structure/ART_STATUS_TYPES.de.md create mode 100644 pages/extensionpoints/structure/ART_STATUS_TYPES.php create mode 100644 pages/extensionpoints/structure/ART_TO_CAT.de.md create mode 100644 pages/extensionpoints/structure/ART_TO_CAT.php create mode 100644 pages/extensionpoints/structure/ART_TO_STARTARTICLE.de.md create mode 100644 pages/extensionpoints/structure/ART_TO_STARTARTICLE.php create mode 100644 pages/extensionpoints/structure/ART_UPDATED.de.md create mode 100644 pages/extensionpoints/structure/ART_UPDATED.php create mode 100644 pages/extensionpoints/structure/CAT_ADDED.de.md create mode 100644 pages/extensionpoints/structure/CAT_ADDED.php create mode 100644 pages/extensionpoints/structure/CAT_DELETED.de.md create mode 100644 pages/extensionpoints/structure/CAT_DELETED.php create mode 100644 pages/extensionpoints/structure/CAT_FORM_ADD.de.md create mode 100644 pages/extensionpoints/structure/CAT_FORM_ADD.php create mode 100644 pages/extensionpoints/structure/CAT_FORM_BUTTONS.de.md create mode 100644 pages/extensionpoints/structure/CAT_FORM_BUTTONS.php create mode 100644 pages/extensionpoints/structure/CAT_FORM_EDIT.de.md create mode 100644 pages/extensionpoints/structure/CAT_FORM_EDIT.php create mode 100644 pages/extensionpoints/structure/CAT_IS_PERMITTED.de.md create mode 100644 pages/extensionpoints/structure/CAT_IS_PERMITTED.php create mode 100644 pages/extensionpoints/structure/CAT_MOVED.de.md create mode 100644 pages/extensionpoints/structure/CAT_MOVED.php create mode 100644 pages/extensionpoints/structure/CAT_STATUS.de.md create mode 100644 pages/extensionpoints/structure/CAT_STATUS.php create mode 100644 pages/extensionpoints/structure/CAT_STATUS_TYPES.de.md create mode 100644 pages/extensionpoints/structure/CAT_STATUS_TYPES.php create mode 100644 pages/extensionpoints/structure/CAT_TO_ART.de.md create mode 100644 pages/extensionpoints/structure/CAT_TO_ART.php create mode 100644 pages/extensionpoints/structure/CAT_UPDATED.de.md create mode 100644 pages/extensionpoints/structure/CAT_UPDATED.php create mode 100644 pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.de.md create mode 100644 pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.php create mode 100644 pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.de.md create mode 100644 pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.php create mode 100644 pages/extensionpoints/structure/README.de.md create mode 100644 pages/extensionpoints/structure/URL_REWRITE.de.md create mode 100644 pages/extensionpoints/structure/URL_REWRITE.php create mode 100644 pages/extensionpoints/structure_content/ART_CONTENT.de.md create mode 100644 pages/extensionpoints/structure_content/ART_CONTENT.php create mode 100644 pages/extensionpoints/structure_content/ART_INIT.de.md create mode 100644 pages/extensionpoints/structure_content/ART_INIT.php create mode 100644 pages/extensionpoints/structure_content/ART_SLICES_COPY.de.md create mode 100644 pages/extensionpoints/structure_content/ART_SLICES_COPY.php create mode 100644 pages/extensionpoints/structure_content/ART_SLICES_QUERY.de.md create mode 100644 pages/extensionpoints/structure_content/ART_SLICES_QUERY.php create mode 100644 pages/extensionpoints/structure_content/GENERATE_FILTER.de.md create mode 100644 pages/extensionpoints/structure_content/GENERATE_FILTER.php create mode 100644 pages/extensionpoints/structure_content/MODULE_ADDED.de.md create mode 100644 pages/extensionpoints/structure_content/MODULE_ADDED.php create mode 100644 pages/extensionpoints/structure_content/MODULE_DELETED.de.md create mode 100644 pages/extensionpoints/structure_content/MODULE_DELETED.php create mode 100644 pages/extensionpoints/structure_content/MODULE_UPDATED.de.md create mode 100644 pages/extensionpoints/structure_content/MODULE_UPDATED.php create mode 100644 pages/extensionpoints/structure_content/README.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_ADD.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_ADD.php create mode 100644 pages/extensionpoints/structure_content/SLICE_ADDED.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_ADDED.php create mode 100644 pages/extensionpoints/structure_content/SLICE_DELETE.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_DELETE.php create mode 100644 pages/extensionpoints/structure_content/SLICE_DELETED.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_DELETED.php create mode 100644 pages/extensionpoints/structure_content/SLICE_MOVE.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_MOVE.php create mode 100644 pages/extensionpoints/structure_content/SLICE_OUTPUT.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_OUTPUT.php create mode 100644 pages/extensionpoints/structure_content/SLICE_SHOW.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_SHOW.php create mode 100644 pages/extensionpoints/structure_content/SLICE_UPDATE.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_UPDATE.php create mode 100644 pages/extensionpoints/structure_content/SLICE_UPDATED.de.md create mode 100644 pages/extensionpoints/structure_content/SLICE_UPDATED.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.php create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.de.md create mode 100644 pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.php create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_ADDED.de.md create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_ADDED.php create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_DELETED.de.md create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_DELETED.php create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_UPDATED.md create mode 100644 pages/extensionpoints/structure_content/TEMPLATE_UPDATED.php create mode 100644 pages/extensionpoints/yform/README.de.md create mode 100644 pages/extensionpoints/yrewrite/README.de.md create mode 100644 pages/intro.properties.php delete mode 100644 pages/main.properties.php create mode 100644 pages/system.log.demo_addon.php delete mode 100644 plugins/documentation/LICENSE delete mode 100644 plugins/documentation/README.md delete mode 100644 plugins/documentation/assets/documentation.css delete mode 100644 plugins/documentation/assets/documentation.js delete mode 100644 plugins/documentation/boot.php delete mode 100644 plugins/documentation/docs/de_de/_vorlage.md delete mode 100644 plugins/documentation/docs/de_de/assets/for.png delete mode 100644 plugins/documentation/docs/de_de/assets/for_small.png delete mode 100644 plugins/documentation/docs/de_de/help_faq.md delete mode 100644 plugins/documentation/docs/de_de/help_where.md delete mode 100644 plugins/documentation/docs/de_de/howto_copy.md delete mode 100644 plugins/documentation/docs/de_de/howto_customize.md delete mode 100644 plugins/documentation/docs/de_de/main_folder.md delete mode 100644 plugins/documentation/docs/de_de/main_intro.md delete mode 100644 plugins/documentation/docs/de_de/main_navi.md delete mode 100644 plugins/documentation/lang/de_de.lang delete mode 100644 plugins/documentation/lang/en_gb.lang delete mode 100644 plugins/documentation/lang/es_es.lang delete mode 100644 plugins/documentation/lang/pt_br.lang delete mode 100644 plugins/documentation/lang/sv_se.lang delete mode 100644 plugins/documentation/package.yml delete mode 100644 plugins/documentation/pages/index.php diff --git a/.php_cs.dist b/.php_cs.dist index 9181223..7220563 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -1,8 +1,8 @@ in([__DIR__]); diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e9505c..79b9596 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,52 +1,58 @@ # Changelog -## Version 1.2.0beta1 // 15.03.2020 +## Version 1.2.0beta1 // 22.05.2020 Neu -* Addon-Struktur, Navigation komplett überarbeitet/erweitert -* Addon-Einstellungen (klassisch) erweitert -* Addon-Einstellungen mit rex_config_form -* Demo-Tabelle in install.php und uninstall.php -* Verwaltung der Demo-Tabelle mit rex_list und rex_form - * Klasse demo_addon_rex_form extends rex_form -* Demo-Seite für die Abfrage von Addon-Properties hinzugefügt -* Quelltexte usw. kommentiert und verlinkt auf die REDAXO-Dokumentation +- AddOn-Struktur, Navigation komplett überarbeitet/erweitert +- AddOn-Einstellungen + - klassisch Einstellungs-Seite erweitert + - Einstellungen mit rex_config_form +- Demo-Tabelle in install.php und uninstall.php +- Verwaltung der Demo-Tabelle mit rex_list und rex_form + - Klasse demo_addon_rex_form extends rex_form +- Demo-Seite für die Abfrage von AddOn-Properties hinzugefügt +- EP-Sammlung mit Beispielen im Verzeichnis pages/extensionpoints +- Logfile für Protokollierung von EP's +- Quelltexte usw. kommentiert und verlinkt auf die REDAXO-Dokumentation +- Einbinden von style.css, script.js und eps.js in der boot.php Änderungen -* REDAXO-Version auf min. 5.8 gesetzt -* PHP-Version auf min. 7.3 gesetzt -* README geändert und Sprachversion .de hinzugefügt -* package.yml erweitert und kommentiert -* de_de.lang-Datei erweitert/angepasst/dokumentiert -* $this->i18n geändert in $addon->i18n +- REDAXO-Version auf min. 5.10 gesetzt +- PHP-Version auf min. 7.3 gesetzt +- README geändert und Sprachversion .de hinzugefügt +- package.yml erweitert und kommentiert +- de_de.lang-Datei erweitert/angepasst/dokumentiert +- $this-> geändert in $addon-> + - siehe [https://github.com/redaxo/redaxo/pull/2482](https://github.com/redaxo/redaxo/pull/2482) +- documentation-plugin entfernt ## Version 1.1.0 // xx.xx.2018 Neu -* Übersetzung es_es (Danke an @2062nandes) -* CHANGELOG.md hinzugefügt -* CSRF-Schutz Einstellungen-Seite (pages/config.php) +- Übersetzung es_es (Danke an @2062nandes) +- CHANGELOG.md hinzugefügt +- CSRF-Schutz Einstellungen-Seite (pages/config.php) Änderungen -* REDAXO-Version auf 5.5 gesetzt (CSRF-Schutz) -* README.md angepasst -* documentation-plugin - * Link-Handling optimiert, URL-Änderung jetzt über pushState (vorher window.location), Anpassungen CSS - * Sprachwähler bei mehreren vorhanden Sprachen der Dokumentationen anzeigen. Position oben rechts in der Navigation. - * Image-Handling - * Images in Unterordner assets - * Intgegration von Images aus dem Unterordner möglich - * Externe Links in der Navigation möglich - * Dokumentation Texte angepasst, Beispiel Images in _vorlage.md, Bilder in Unterordner assets +- REDAXO-Version auf 5.5 gesetzt (CSRF-Schutz) +- README.md angepasst +- documentation-plugin + - Link-Handling optimiert, URL-Änderung jetzt über pushState (vorher window.location), Anpassungen CSS + - Sprachwähler bei mehreren vorhanden Sprachen der Dokumentationen anzeigen. Position oben rechts in der Navigation. + - Image-Handling + - Images in Unterordner assets + - Intgegration von Images aus dem Unterordner möglich + - Externe Links in der Navigation möglich + - Dokumentation Texte angepasst, Beispiel Images in _vorlage.md, Bilder in Unterordner assets Bugfixes -* keine +- keine ## Version 1.0.0 // 28.11.2017 -* Erste Veröffentlichung des Addons +- Erste Veröffentlichung des AddOns diff --git a/README.de.md b/README.de.md index c4786da..5d19b86 100644 --- a/README.de.md +++ b/README.de.md @@ -1,30 +1,32 @@ -# Beispiel-Addon für REDAXO 5 +# Beispiel-AddOn für REDAXO 5 -Das Addon `demo_addon` zeigt den Aufbau und Basisfunktionalität von Addons und viele Beispiele von REDAXO-Funktionen zur Verwendung in eigenen Addons. Das Addon oder auch nur Teile davon können/sollen gerne für die Entwicklung eigener Addons verwendet werden. -Erweiterungen des Addons `demo_addon` gerne als PR (Pull-Request) oder Hinweise bzw. Verbesserungen als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). +Das AddOn `demo_addon` zeigt den Aufbau und Basisfunktionalität von AddOns und viele Beispiele von REDAXO-Funktionen zur Verwendung in eigenen AddOns. Das AddOn oder auch nur Teile davon können/sollen gerne für die Entwicklung eigener AddOns verwendet werden. +Erweiterungen des AddOns `demo_addon` gerne als PR (Pull-Request) oder Hinweise bzw. Verbesserungen als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). ## demo_addon in der Kurzübersicht -* dokumentierter Quellcode mit Beispielen -* dokumentierte package.yml -* dokumentierte .lang-Datei -* Addon-Einstellungen (rex_config_form, klassisch) -* Beispiel einer Tabellenverwaltung mit `rex_list` und `rex_form` (inkl. Beispieltabelle) -* Beispiele für Extension Points -* `documentation`-Plugin als Basis für eine Hilfe/Dokumentation für REDAXO-AddOns +- dokumentierter Quellcode mit Beispielen +- dokumentierte `package.yml` +- dokumentierte .lang-Datei +- AddOn-Einstellungen (rex_config_form, klassisch) +- Beispiel einer Tabellenverwaltung mit `rex_list` und `rex_form` (inkl. Beispieltabelle) +- Beispiele für Extension Points +- `documentation`-Plugin als Basis für eine Hilfe/Dokumentation für REDAXO-AddOns ## AddOn-Entwicklung in der REDAXO-Dokumentation -* [Aufbau und Struktur](https://redaxo.org/doku/master/addon-struktur) -* [Package (package.yml)](https://redaxo.org/doku/master/addon-package) -* [Assets (CSS, JavaScript ...)](https://redaxo.org/doku/master/addon-assets) -* [Konfigurations-Formulare](https://redaxo.org/doku/master/konfiguration_form) -* [AddOn Veröffentlichung](https://redaxo.org/doku/master/addon-veroeffentlichung) -* [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) +- [AddOn - Aufbau und Struktur](https://redaxo.org/doku/master/addon-struktur) +- [Package (package.yml)](https://redaxo.org/doku/master/addon-package) +- [AddOn Assets (CSS, JavaScript ...)](https://redaxo.org/doku/master/addon-assets) +- [Konfigurations-Formulare für AddOns](https://redaxo.org/doku/master/konfiguration_form) +- [AddOn Veröffentlichung](https://redaxo.org/doku/master/addon-veroeffentlichung) +- [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) ## Sonstiges -* [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) -* REDAXO [API Dcumentation](https://friendsofredaxo.github.io/phpdoc/) bei Friends Of REDAXO -* Eine Sammlung nützlicher Tricks zu REDAXO CMS ab Version 5 [REDAXO-Tricks der Friends Of REDAXO](https://friendsofredaxo.github.io/tricks) -* Bitte auch den Artikel [Änderungen REDAXO 4 zu 5](https://redaxo.org/doku/master/aenderungen-v4-v5) in der REDAXO-Dokumentation beachten! +- [GitHub Repository des REDAXO Cores](https://github.com/redaxo/redaxo/) +- [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) +- REDAXO [API Dcumentation](https://friendsofredaxo.github.io/phpdoc/) bei Friends Of REDAXO +- FOR-AddOns [FriendsOfREDAXO](https://github.com/FriendsOfREDAXO) +- Eine Sammlung nützlicher Tricks zu REDAXO CMS ab Version 5 [REDAXO-Tricks der Friends Of REDAXO](https://friendsofredaxo.github.io/tricks) +- Bitte auch den Artikel [Änderungen REDAXO 4 zu 5](https://redaxo.org/doku/master/aenderungen-v4-v5) in der REDAXO-Dokumentation beachten! diff --git a/README.md b/README.md index 11d8f23..f02786e 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,32 @@ -# Sample addOn for REDAXO 5 +# Sample AddOn for REDAXO 5 -The addon `demo_addon` shows the structure and basic functionality of addons and many examples of REDAXO functions for use in your own addons. The addon or just parts of it can / should be used for the development of your own addons. -Extensions to the `demo_addon` addon, like PR (pull request) or notes or improvements as an [issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). +The AddOn `demo_addon` shows the structure and basic functionality of AddOns and many examples of REDAXO functions for use in your own AddOns. The addon or just parts of it can / should be used for the development of your own AddOns. +Extensions to the `demo_addon` AddOn, like PR (pull request) or notes or improvements as an [issue](https://github.com/FriendsOfREDAXO/demo_addon/issues). ## demo_addon in the short overview -* Documented source code with examples -* documented package.yml -* documented .lang file -* Addon settings (rex_config_form, classic) -* Example of a table management with `rex_list` and `rex_form` (incl. Example table) -* Examples of extension points -* `documentation` plugin as the basis for help / documentation for REDAXO add-ons +- Documented source code with examples +- documented `package.yml` +- documented .lang file +- AddOn settings (rex_config_form, classic) +- Example of a table management with `rex_list` and `rex_form` (incl. Example table) +- Examples of extension points +- `documentation` plugin as the basis for help / documentation for REDAXO add-ons -## Addon development in the REDAXO documentation +## AddOn development in the REDAXO documentation -* [Structure and structure] (https://redaxo.org/doku/master/addon-struktur) -* [Package (package.yml)] (https://redaxo.org/doku/master/addon-package) -* [Assets (CSS, JavaScript ...)] (https://redaxo.org/doku/master/addon-assets) -* [Configuration forms] (https://redaxo.org/doku/master/konfiguration_form) -* [AddOn publication] (https://redaxo.org/doku/master/addon-veroeffständigung) -* [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) +- [AddOn - Structure and structure](https://redaxo.org/doku/master/addon-struktur) +- [Package (package.yml)](https://redaxo.org/doku/master/addon-package) +- [AddOn Assets (CSS, JavaScript ...)](https://redaxo.org/doku/master/addon-assets) +- [Configuration forms for AddOns](https://redaxo.org/doku/master/konfiguration_form) +- [AddOn publication](https://redaxo.org/doku/master/addon-veroeffständigung) +- [Queries - rex_sql](https://www.redaxo.org/doku/master/datenbank-queries) ## Others -* [REDAXO 5 documentation] (https://redaxo.org/doku/master) -* REDAXO [API Dcumentation] (https://friendsofredaxo.github.io/phpdoc/) at Friends Of REDAXO -* A collection of useful tricks for REDAXO CMS from version 5 [REDAXO tricks of the Friends Of REDAXO] (https://friendsofredaxo.github.io/tricks) -* Please also note the article [Changes to REDAXO 4 to 5] (https://redaxo.org/doku/master/aenderungen-v4-v5) in the REDAXO documentation! +- [GitHub Repository REDAXO Core](https://github.com/redaxo/redaxo/) +- [REDAXO 5 documentation](https://redaxo.org/doku/master) +- REDAXO [API Dcumentation](https://friendsofredaxo.github.io/phpdoc/) at Friends Of REDAXO +- FOR-AddOns [FriendsOfREDAXO](https://github.com/FriendsOfREDAXO) +- A collection of useful tricks for REDAXO CMS from version 5 [REDAXO tricks of the Friends Of REDAXO](https://friendsofredaxo.github.io/tricks) +- Please also note the article [Changes to REDAXO 4 to 5](https://redaxo.org/doku/master/aenderungen-v4-v5) in the REDAXO documentation! diff --git a/assets/css/style.css b/assets/css/style.css index 1e82204..8993538 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,7 +1,50 @@ /* -Demo-Addon -Diese CSS-Datei wird in der boot.php des Addons demo_addon eingebunden (rex_view::addCssFile) +Demo-AddOn +Diese CSS-Datei wird in der `boot.php` des AddOns `demo_addon` im Backend eingebunden (rex_view::addCssFile) +https://redaxo.org/doku/master/addon-assets */ -.demo_addon { +/* externe Links */ + +a.extern:after { + color: #d4d4d4; + text-decoration: none; + font-family: 'FontAwesome'; + font-size: .8em; + content: " \f08e"; +} + +/* Aufklappbarer Text bei der EP-Liste */ + +.demo-addon-section .panel header .folddown { + display: none; +} +.demo-addon-section .panel header.collapsed .folddown { + display: block; +} + +.demo-addon-section .panel header .foldup { + display: block; +} +.demo-addon-section .panel header.collapsed .foldup { + display: none; +} + +.demo-addon-section .panel header .folddown, +.demo-addon-section .panel header .foldup + { + background-color: inherit; + float: right; +} + +/* Textblock mit Inhalt der Markdown-Datei im aufklappbaren Text */ + +.demo-addon-section .readme { + padding: 10px 10px 0px 10px; +} + +/* Textarea-Block mit Codemirror für den PHP-Code im aufklappbaren Text */ + +.demo-addon-section .phpcode { + padding: 10px 10px 10px 10px; } diff --git a/assets/js/eps.js b/assets/js/eps.js new file mode 100644 index 0000000..f7ae6f9 --- /dev/null +++ b/assets/js/eps.js @@ -0,0 +1,33 @@ +/* +Demo-AddOn +Diese JavaScript-Datei wird in der `boot.php` des AddOns `demo_addon` im Backend eingebunden (rex_view::addJsFile) +https://redaxo.org/doku/master/addon-assets +*/ + +// jQuery closure (»Funktionsabschluss«) +// Erzeugt einen Scope, also einen privaten Bereich +// http://molily.de/javascript-core/#closures +(function ($) { + + // rex:ready + // Führt Code aus, sobald der DOM vollständig geladen wurde + // https://redaxo.org/doku/master/addon-assets#rexready + $(document).on('rex:ready', function (event, container) { + + /* EP-Liste - alle öffnen/schliessen */ + $('a.btn-open').on('click', function (event) { + event.preventDefault(); + $('.panel-collapse').collapse('show'); + $('a.btn-open').hide(); + $('a.btn-close').show(); + }); + $('a.btn-close').on('click', function (event) { + event.preventDefault(); + $('.panel-collapse').collapse('hide'); + $('a.btn-close').hide(); + $('a.btn-open').show(); + }); + + }); + +})(jQuery); diff --git a/assets/js/script.js b/assets/js/script.js index 9961326..c7c5bf8 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,6 +1,7 @@ /* -Demo-Addon -Diese JavaScript-Datei wird in der boot.php des Addons demo_addon eingebunden (rex_view::addJsFile) +Demo-AddOn +Diese JavaScript-Datei wird in der `boot.php` des AddOns `demo_addon` im Backend eingebunden (rex_view::addJsFile) +https://redaxo.org/doku/master/addon-assets */ // jQuery closure (»Funktionsabschluss«) @@ -13,7 +14,18 @@ Diese JavaScript-Datei wird in der boot.php des Addons demo_addon eingebunden (r // https://redaxo.org/doku/master/addon-assets#rexready $(document).on('rex:ready', function (event, container) { - console.log('Demo-Addon Konfiguration ... Ausgabe auf der JS-Konsole'); + // externe Links in neuem Fenster öffnen + $('a[href^="http://"], a[href^="https://"]').filter(function () { + // filter out links that have the same domain name as the current page + return this.hostname && this.hostname !== location.hostname; + }) + // add a CSS class of "extern" to each external link (for styling) + .addClass('extern') + // inform visitor that link will open in new window + .attr({ + target: '_blank', + title: function () { return this.title + '' } + }); }); diff --git a/boot.php b/boot.php index bd05963..4f3d87e 100644 --- a/boot.php +++ b/boot.php @@ -1,38 +1,43 @@ 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) +// 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. -// Addonrechte (permissions) registieren +// 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 +// 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 einbinden, nur beim demo_addon +// 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 + // Die `style.css` bei allen Pages und Subpages des AddOns im Backend einbinden rex_view::addCssFile($addon->getAssetsUrl('css/style.css')); - // Die script.js nur auf der Unterseite `config` des Addons einbinden - if ('config' == rex_be_controller::getCurrentPagePart(2)) { - rex_view::addJsFile($addon->getAssetsUrl('js/script.js'), [rex_view::JS_IMMUTABLE => true]); - } + // 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 + // 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]); } @@ -40,3 +45,22 @@ // 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'); +} diff --git a/functions/ep_functions.php b/functions/ep_functions.php new file mode 100644 index 0000000..ecad212 --- /dev/null +++ b/functions/ep_functions.php @@ -0,0 +1,110 @@ +getPath() . 'pages' . DIRECTORY_SEPARATOR . 'extensionpoints' . DIRECTORY_SEPARATOR; + + // Alle Dateien im EP-Ordner ermitteln + $files = rex_finder::factory($epdir)->recursive()->sort(); + + // Dateien verarbeiten + // - include der PHP-Dateien + // - Array für die EP-Auflistung erstellen + foreach ($files as $file) { + if ($file->isDir()) { + $_folder = $file->getFilename(); + } else { + if ('php' == $file->getExtension()) { + ++$epcount; + $_eplist[$_folder][basename($file->getFilename(), '.php')] = $file; + $addon->includeFile($epdir . $_folder . DIRECTORY_SEPARATOR . $file->getFilename()); + } + } + } + + // Ausgabe der Anzahl Extension-Points im Logfile + if (!isset($_SESSION['demo_addon.epinfo'])) { + $rxmode = (rex::isBackend() && rex::getUser()) ? 'Backend' : 'Frontend'; + demo_addon_logger::log($epcount . ' Extension Points in ' . $epdir . '
Mode: ' . $rxmode); + $_SESSION['demo_addon.epinfo'] = true; + } + + // Array mit den EP's als AddOn-Property zwischenspeichern, wird bei der EP-Liste `pages/eps.eplist.php` verwendet + $addon->setProperty('eplist', $_eplist); + } +} + +/* + * Ausgabe der Extension Point Einträge für die Liste + */ + +if (!function_exists('demo_addon_outputEpEntry')) { + function demo_addon_outputEpEntry($dir, $ep, $epdata = []) + { + $addon = rex_addon::get('demo_addon'); + + $template = ' +
+
+ +
+
+{{readme}} +
+
+ +
+
+
+
+'; + + $path = $epdata->getPath() . DIRECTORY_SEPARATOR . $ep . '.md'; + $languagePath = substr($path, 0, -3) . '.' . rex_i18n::getLanguage() . '.md'; + if (is_readable($languagePath)) { + $path = $languagePath; + } + + if (file_exists($path)) { + $readme = rex_markdown::factory()->parse(rex_file::get($path)); + if ('' == $readme) { + $readme = '

' . $ep . '.md no content!

'; + } + } else { + $readme = '

' . $ep . '.md not found!

'; + } + + // PHP-Code des EP's bereitstellen + $epdir = $addon->getPath() . 'pages' . DIRECTORY_SEPARATOR . 'extensionpoints' . DIRECTORY_SEPARATOR; + $path = $epdir . $dir . DIRECTORY_SEPARATOR . $ep . '.php'; + $phpcode = rex_escape(rex_file::get($path)); + + // Template mit Daten füllen + $output = str_replace('{{ep}}', $ep, $template); + $output = str_replace('{{readme}}', $readme, $output); + $output = str_replace('{{dir}}', $dir, $output); + $output = str_replace('{{phpcode}}', $phpcode, $output); + + return $output; + } +} diff --git a/install.php b/install.php index e784a11..22abf2e 100644 --- a/install.php +++ b/install.php @@ -1,12 +1,18 @@ ensurePrimaryIdColumn() ->ensureColumn(new rex_sql_column('anrede', 'tinyint(1)', true, 1)) @@ -19,7 +25,7 @@ ->ensureColumn(new rex_sql_column('status', 'tinyint(1)', true, 1)) ->ensure(); -// Bei Addon-Installation/Reinstallation folgende Beispiel-Daten importieren +// Bei AddOn-Installation/Reinstallation folgende Beispiel-Daten importieren $demodata = [ ['id' => 1, 'anrede' => 1, 'vorname' => 'Max', 'name' => 'Muster', 'strasse' => 'Schönstr. 1', 'plz' => '81333', 'ort' => 'München', 'birthdate' => '1966-01-01', 'status' => 1], ['id' => 2, 'anrede' => 1, 'vorname' => 'Mario', 'name' => 'Neumann', 'strasse' => 'Waldweg 11a', 'plz' => '84405', 'ort' => 'Dorfen', 'birthdate' => '1968-06-06', 'status' => 1], @@ -41,24 +47,26 @@ } $sql->insertOrUpdate(); -// Abhängigkeiten (PHP-Version, PHP-Extensions, Redaxo-Version, andere Addons/Plugins) sollten in die package.yml eingetragen werden. +// Abhängigkeiten (PHP-Version, PHP-Extensions, Redaxo-Version, andere AddOns/Plugins) sollten in die `package.yml` eingetragen werden. // Sie brauchen hier dann nicht mehr überprüft werden! -// Hier können zum Beispiel Konfigurationswerte in der rex_config initialisiert werden. -// Das if-Statement ist notwendig, um bei einem reinstall die Konfiguration nicht zu überschreiben. -if (!$this->hasConfig()) { - $this->setConfig('url', 'https://friendsofredaxo.github.io/'); +// Hier können zum Beispiel Konfigurationswerte in der `rex_config` initialisiert werden. +// Dokumentation Konfiguration https://www.redaxo.org/doku/master/konfiguration +// Das if-Statement ist notwendig, um bei einem reinstall die Konfiguration nicht zu überschreiben, oder bei Erstinstallation Standardwerte zu setzen. +if (!$addon->hasConfig()) { + $addon->setConfig('url', 'https://friendsofredaxo.github.io/'); + $addon->setConfig('text', 'Beispieltext ...'); } -// Mit einer rex_functional_exception kann die Installation mit einer Fehlermeldung abgebrochen werden. +// Mit einer `rex_functional_exception` kann die Installation mit einer Fehlermeldung abgebrochen werden. $somethingIsWrong = false; if ($somethingIsWrong) { throw new rex_functional_exception('Something is wrong'); } -// Alternativ kann ähnlich wie in R4 mit den Properties "install" und "installmsg" die Installation als nicht erfolgreich markiert werden. +// Alternativ kann ähnlich wie in R4 mit den Properties `install` und `installmsg` die Installation als nicht erfolgreich markiert werden. // Im Gegensatz zu R4 muss für eine erfolgreiche Installation keine Property mehr gesetzt werden. if ($somethingIsWrong) { - $this->setProperty('installmsg', 'Something is wrong'); - $this->setProperty('install', false); + $addon->setProperty('installmsg', 'Something is wrong'); + $addon->setProperty('install', false); } diff --git a/lang/de_de.lang b/lang/de_de.lang index 0ec169c..0cfcdc0 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -1,21 +1,21 @@ # Da R5 nur noch mit UTF8 arbeitet, entfällt der "utf8"-Suffix -# Die Keys sollten mit dem Addonnamen (Addon-Präfix) beginnen, da sie so innerhalb des Addons vereinfacht abgefragt werden können -# also hier Addon-Präfix `demo_addon_` +# Die Keys sollten mit dem Addonnamen (AddOn-Präfix) beginnen, da sie so innerhalb des AddOns vereinfacht abgefragt werden können +# also hier AddOn-Präfix `demo_addon_` # Bezeichnung in der REDAXO-Navigation -> translate:navititle in der package.yml -demo_addon_navititle = Demo-Addon +demo_addon_navititle = Demo-AddOn -# Addon-Titel für alle Addon-Seiten, Addon-Präfix (hier `demo_addon_`) + `title` -> `demo_addon_title` -demo_addon_title = REDAXO Demo-Addon +# AddOn-Titel für alle AddOn-Seiten, AddOn-Präfix (hier `demo_addon_`) + `title` -> `demo_addon_title` +demo_addon_title = REDAXO Demo-AddOn # Eigener Block mit Bezeichnung in der REDAXO-Navigation -# in der package.yml des Addons folgendes unter page angeben: `block: demo_addon` +# in der package.yml des AddOns folgendes unter page angeben: `block: demo_addon` # `navigation_` + `addon-Name` hier also `navigation_demo_addon` -navigation_demo_addon = DEMO-Addon +navigation_demo_addon = DEMO-AddOn -# Hauptnavi-Punkte des Addons -demo_addon_main = Demo-Addon +# Hauptnavi-Punkte des AddOns +demo_addon_intro = Demo-AddOn demo_addon_config = Einstellungen demo_addon_tables = Tabellen demo_addon_eps = Extension Points @@ -26,15 +26,15 @@ demo_addon_description = Beschreibung demo_addon_readme = README demo_addon_changelog = CHANGELOG demo_addon_properties = Properties -demo_addon_properties_title = Addon-Properties +demo_addon_properties_title = AddOn-Properties demo_addon_hidden_subpage = Versteckte Unterseite # Reiter Einstellungen demo_addon_config_rex_config_form = mit rex_config_form -demo_addon_config_classic_form = klassisch (Fragmente) +demo_addon_config_classic_form = klassisch (rex_form / rex_list) demo_addon_config_title_rex_config = Einstellungen mit rex_config_form -demo_addon_config_title_classic = Einstellungen klassisch (Fragmente) +demo_addon_config_title_classic = Einstellungen klassisch (rex_form, rex_list, Fragmente) demo_addon_config_legend1 = Einfache Felder demo_addon_config_url = URL @@ -46,11 +46,14 @@ demo_addon_config_multiselect_note = Mehrfachauswahl mit STRG bzw. Rollen > Allgemein` -perm_general_demo_addon[] = Rechte für Demo-Addon -perm_general_demo_addon[config] = Rechte für Demo-Addon-Konfiguration +perm_general_demo_addon[] = Rechte für Demo-AddOn +perm_general_demo_addon[config] = Rechte für Demo-AddOn-Konfiguration diff --git a/lib/README.md b/lib/README.md index f9dc9a3..e93212b 100644 --- a/lib/README.md +++ b/lib/README.md @@ -1,4 +1,6 @@ -Klassen in diesem Verzeichnis werden durch den Autoloader geladen +# lib-Verzeichnis -logger.php extends REDAXO logger -> für die Ausgabe der Beispiele der Extension Points -demo_addon_rex_xform.php extends REDAXO rex_form -> für den Update des Geburtsjahres im Format YYYY-MM-DD +Klassen in diesem Verzeichnis werden automatisch durch den Autoloader geladen + +`demo_addon_logger.php` extends REDAXO `rex_log_file` -> für die Ausgabe der Beispiele der Extension Points +`demo_addon_rex_xform.php` extends REDAXO `rex_form` -> für Update des Geburtsjahres im Format YYYY-MM-DD diff --git a/lib/demo_addon_logger.php b/lib/demo_addon_logger.php new file mode 100644 index 0000000..ae4f9d8 --- /dev/null +++ b/lib/demo_addon_logger.php @@ -0,0 +1,48 @@ +* Demo_Addon *') + { + self::init(); + + $data = [ + $logname, + $logstr, + ]; + + self::$logfile->add($data); + } + + public static function getPath() + { + return rex_path::log('demo_addon.log'); + } + + public static function close() + { + self::$logfile = null; + self::$init = false; + } +} diff --git a/lib/logger.php b/lib/logger.php deleted file mode 100644 index 5845d06..0000000 --- a/lib/logger.php +++ /dev/null @@ -1,22 +0,0 @@ -getProperty($key)` abgefragt werden package: demo_addon # Pflichtfeld -version: '1.2.0beta1' # Pflichtfeld -author: Friends Of REDAXO # Pflichtfeld für FOR-Addons -supportpage: https://github.com/FriendsOfREDAXO/demo_addon # Github-Adresse des Addons +version: "1.2.0beta1" # Pflichtfeld +author: Friends Of REDAXO # Pflichtfeld für FOR-AddOns +supportpage: https://github.com/FriendsOfREDAXO/demo_addon # Github-Adresse des AddOns # Werte die mit `translate:` beginnen, werden anhand der Sprachdatei (lang/sprache.lang) übersetzt. -# Der Addon-Präfix (hier `demo_addon_`) kann weggelassen werden. +# Der AddOn-Präfix (hier `demo_addon_`) kann weggelassen werden. -# Seiten des Addons +# Seiten des AddOns page: - title: 'translate:navititle' # Bezeichnung in der REDAXO Navigation - icon: rex-icon fa-desktop # Icon von Font Awesome - perm: admin # Seite ist nur für Admins erreichbar - pjax: true # Hier kann die Verwendung von PJAX für das eigene Addon gesteuert werden - # mit der Einstellung `prio` kann die Position im Hauptmenü beeinflusst werden - # prio: 10 + title: "translate:navititle" # Bezeichnung in der REDAXO Navigation + icon: rex-icon fa-desktop # Icon von Font Awesome + perm: admin # Seite ist nur für Admins erreichbar + pjax: true # Hier kann die Verwendung von PJAX für das eigene AddOn gesteuert werden + # mit der Einstellung `prio` kann die Position im Hauptmenü beeinflusst werden + #prio: 10 - # Eigener Block in der REDAXO-Navigation - # Bezeichnung in der .lang-Datei mit `navigation_+addon-Id` also hier `navigation_demo_addon` - block: demo_addon + # Eigener Block in der REDAXO-Navigation + # Bezeichnung in der .lang-Datei mit `navigation_+addon-Id` also hier `navigation_demo_addon` + block: demo_addon - # Unterseiten - subpages: - main: - title: 'translate:main' - icon: rex-icon fa-desktop # Icon von Font Awesome - perm: demo_addon[] # Das AddOn stellt ein Benutzerrecht bereit, das aktiviert sein muss, um diese Unterseite zu erreichen. Admins haben alle Rechte. - subpages: # Weitere Subpages der Hauptseite - readme: { title: 'translate:readme', subPath: 'README.md' } # README.md aus Addon-Pfad einbinden - description: { title: 'translate:description', subPath: 'pages/DESCRIPTION.md' } - changelog: {title: 'translate:changelog', subPath: 'CHANGELOG.md' } # Abweichender Titel zur .md-Datei - properties: { title: 'translate:properties' } - hidden: { title: 'translate:hidden_subpage', subPath: 'pages/DESCRIPTION.md', hidden: true } # Versteckte Subpage, nur als Beispiel - config: - title: 'translate:config' - perm: demo_addon[config] # Das noch spezifischere AddOn-Benutzerrecht `config` ist für diese Unterseite erforderlich. Admins haben alle Rechte. - icon: rex-icon fa-wrench # Icon von Font Awesome - subpages: # Weitere Subpages der Seite config - rex_config_form: - title: 'translate:config_rex_config_form' - classic_form: - title: 'translate:config_classic_form' - tables: - title: 'translate:tables' - icon: rex-icon fa-table - subpages: # Weitere Subpages der Seite tables - tables: { title: 'translate:tables', subPath: 'pages/TABLES.md' } - updatetable: { title: 'translate:updatetable' } - eps: - title: 'translate:eps' - icon: rex-icon fa-rocket - subpages: # Weitere Subpages der Seite eps - eps: { title: 'translate:eps', subPath: 'pages/EXTENSIONPOINTS.md' } - eplist: { title: 'translate:eplist' } - hidden: - title: 'translate:hidden_page' - icon: rex-icon fa-ban - subPath: 'pages/DESCRIPTION.md' - hidden: true # Versteckte Page, nur als Beispiel + # Unterseiten + subpages: + intro: + title: "translate:intro" + icon: rex-icon fa-desktop # Icon von Font Awesome + perm: demo_addon[] # Das AddOn stellt ein Benutzerrecht bereit, das aktiviert sein muss, um diese Unterseite zu erreichen. Admins haben alle Rechte. + subpages: # Weitere Subpages der Hauptseite + readme: { title: "translate:readme", subPath: "README.md" } # README.md aus AddOn-Pfad einbinden + description: + { title: "translate:description", subPath: "pages/DESCRIPTION.md" } + properties: { title: "translate:properties" } + changelog: { title: "translate:changelog", subPath: "CHANGELOG.md" } # Abweichender Titel zur .md-Datei + hidden: { + title: "translate:hidden_subpage", + subPath: "pages/DESCRIPTION.md", + hidden: true, + } # Versteckte Subpage, nur als Beispiel + config: + title: "translate:config" + perm: demo_addon[config] # Das noch spezifischere AddOn-Benutzerrecht `config` ist für diese Unterseite erforderlich. Admins haben alle Rechte. + icon: rex-icon fa-wrench # Icon von Font Awesome + subpages: # Weitere Subpages der Seite config + rex_config_form: + title: "translate:config_rex_config_form" + classic_form: + title: "translate:config_classic_form" + tables: + title: "translate:tables" + icon: rex-icon fa-table + subpages: # Weitere Subpages der Seite tables + tables: { title: "translate:tables", subPath: "pages/TABLES.md" } + updatetable: { title: "translate:updatetable" } + eps: + title: "translate:eps" + icon: rex-icon fa-rocket + subpages: # Weitere Subpages der Seite eps + eps: { title: "translate:eps", subPath: "pages/EXTENSIONPOINTS.md" } + eplist: { title: "translate:eplist" } + logfile: { title: "translate:logfile" } + hidden: + title: "translate:hidden_page" + icon: rex-icon fa-ban + subPath: "pages/DESCRIPTION.md" + hidden: true # Versteckte Page, nur als Beispiel + +# Logfile zusätzlich unter `System -> Logdateien` anzeigen +# `system/log/demo_addon` wird automatisch zu `system.log.demo_addon.php` aufgelöst +pages: + system/log/demo_addon: + title: "translate:navititle" + perm: admin[] + +# Eigene Properties siehe https://redaxo.org/doku/master/addon-package#eigene +tableupdate.listEntries: 30 # Eigene Property für die Anzahl List-Einträge in der Tabellen-Verwaltung `tables.updatetable.php` +logfile.listEntries: 300 # Eigene Property für die Anzahl Einträge des Logfiles in `eps.logfile.php` # Abhängigkeiten # Anforderungen ans System oder anderere AddOns, um dieses AddOn installieren oder updaten zu können requires: - redaxo: '^5.8' # benötigt mindestens REDAXO 5.8 - packages: - media_manager: '^2.0.1' # benötigt mindestens das Addon Media Manager 2.0.1 - php: - version: '^7.3' # benötigt mindestens PHP 7.3 - extensions: [gd, xml] # benötigt die PHP-Extensions GDlib und XML + redaxo: "^5.10" # benötigt mindestens REDAXO 5.10 + packages: + media_manager: "^2.0.1" # benötigt mindestens das AddOn Media Manager 2.0.1 + php: + version: "^7.3" # benötigt mindestens PHP 7.3 + extensions: [gd, xml] # benötigt die PHP-Extensions GDlib und XML # Plugins die automatisch installiert werden sollen system_plugins: - - documentation + - documentation # Konflikte # Verhindert die Installation und Updates, wenn AddOns die genannten Anforderungen erfüllen # Siehe auch https://github.com/FriendsOfREDAXO/cache_warmup/pull/55#issuecomment-280906737 conflicts: - packages: - media_manager: '>=3' # Ist Media Manager in Version 3 vorhanden, führt das zum Konflikt mit diesem AddOn + packages: + media_manager: ">=3" # Ist Media Manager in Version 3 vorhanden, führt das zum Konflikt mit diesem AddOn # Installer (ab REX 5.7) # Angabe von Ordnern und Dateien, die vom Installer ausgelassen werden sollen, wenn ein Release veröffentlicht wird # Siehe auch https://github.com/redaxo/redaxo/pull/2352 installer_ignore: - - node_modules - - .env + - node_modules + - .env diff --git a/pages/DESCRIPTION.de.md b/pages/DESCRIPTION.de.md index 5c00fca..05ff6cb 100644 --- a/pages/DESCRIPTION.de.md +++ b/pages/DESCRIPTION.de.md @@ -1,61 +1,65 @@ # Über das demo_addon -Das `demo_addon` soll den Einstieg in die Addon-Entwicklung erleichtern und dient als Inspiration :) +Das `demo_addon` soll den Einstieg in die AddOn-Entwicklung erleichtern und dient als Inspiration :) Der Quellcode (PHP), package.yml und z.B. die .lang-Dateien sind so gut wie möglich dokumentiert und werden von den Friends Of REDAXO geprüft. Im `demo_addon` werden Lösungswege am praktischen Beispiel und "Best practice" gezeigt, unterstützend zur REDAXO-Dokumentation. -* [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) -* [Aufbau und Struktur von Addons](https://redaxo.org/doku/master/addon-struktur) -* [Package (package.yml)](https://redaxo.org/doku/master/addon-package) +- [REDAXO 5 Dokumentation](https://redaxo.org/doku/master) +- [Aufbau und Struktur von AddOns](https://redaxo.org/doku/master/addon-struktur) +- [Package (package.yml)](https://redaxo.org/doku/master/addon-package) -> **Hinweis:** Die Verwendung von REDAXO-Standards hilft Probleme mit den eigenen Addons bei REDAXO-Updates zu vermeiden :) +> **Hinweis:** Die Verwendung von REDAXO-Standards hilft Probleme mit den eigenen AddOns bei REDAXO-Updates zu vermeiden :) ## Einstellungen -Oft benötigen Addons eigene Einstellungen. Hier werden zwei Methoden für die Umsetzung zum speichern der Addon-Einstellungen gezeigt. Einmal die "klassiche" Methode mit Hilfe von REDAXO-Funktionen und Fragmenten. Und zum anderen die aktuelle Methote mit der Verwendung der Klasse `rex_config_form`. +Oft benötigen AddOns eigene Einstellungen. Hier werden zwei Methoden für die Umsetzung zum speichern der AddOn-Einstellungen gezeigt. + +Einmal die "klassiche" Methode mit Hilfe von `rex_form`, `rex_list` und Fragmenten. +Und zum anderen die aktuelle Methote mit der Verwendung der Klasse `rex_config_form`. + Hier am besten mal einen Blick in den Quellcode der beiden Dateien `pages/config.rex_config_form.php` und `pages/config.classic_form.php` werfen. -* [Zu den Einstellungen](?page=demo_addon/config/rex_config_form) +Zu den Einstellungen + +- [Formulare mit rex_form](https://redaxo.org/doku/master/formulare) +- [Listen mit rex_list](https://redaxo.org/doku/master/listen) +- [Konfigurations-Formulare für AddOns](https://redaxo.org/doku/master/konfiguration_form) ## Tabellen Das `demo_addon` zeigt wie mit REDAXO Standards (rex_sql_table) eine Tabelle erstellt, mit Beispiel-Daten gefüllt wird (rex_sql::addRecord), und bringt die dazugehörige dokumentierte Verwaltungsfunktion (rex_list/rex_form) zu dieser Tabelle mit. +Am besten einen Blick in die `install.php` und `pages/tables.updatetable.php` riskieren. -* [Zu den Tabellen](?page=demo_addon/tables/tables) +Zu den Tabellen -## Quellcode +- [Datenbanktabellen in der REDAXO-Dokumentation](https://redaxo.org/doku/master/datenbank-tabellen) -Der Quellcode des Addons ist dokumentiert und es lohnt sich einen Blick darauf zu werfen! -z.B. -* package.yml -* boot.php -* install.php -* uninstall.php -* Markdown-Texte wie README.md und README.de.md -* PHP-Dateien im Verzeichnis ./pages/ -* Verzeichnis ./lib/ +## Extension Points -Alles ist natürlich auch in der [REDAXO-Dokumentation](https://redaxo.org/doku/master) zu finden und kann dort detailliert nachgeschlagen werden. -Im Quellcode sind an den entsprechenden Stellen direkte Links auf die REDAXO-Dokumentation vorhanden. +[Extension Points](https://redaxo.org/doku/master/extension-points) sind Stellen im REDAXO-Programmcode, an denen eigener Code eingeklinkt und ausgeführt werden kann. Dadurch lässt sich auch das Core-System erweitern und anpassen, ohne den Core selbst zu verändern. -## Extension Points +Im Verzeichnis `pages/extensionpoints/` des Demo-AddOns gibt es viele Beispiele für Extension Points und wie diese EP's verwendet werden können. - [Extension Points](https://redaxo.org/doku/master/extension-points) sind Stellen im REDAXO-Programmcode, an denen eigener Code eingeklinkt und ausgeführt werden kann. Dadurch lässt sich auch das Core-System erweitern und anpassen, ohne den Core selbst zu verändern. +Zu den Extension Points -Im Verzeichnis pages/extensionpoints/ gibt es viele Beispiele für Extension Points und wie diese EP's verwendet werden können. +- [Extension Points in der REDAXO-Dokumentation](https://www.redaxo.org/doku/master/extension-points) -* [Zu den Extension-Points](?page=demo_addon/eps/eps) +## Quellcode -## Sonstiges +Der Quellcode des AddOns ist weitgehend dokumentiert und mit hilfreichen Links versehen. Es lohnt sich einen Blick darauf zu werfen! +z.B. -**TODO** +- package.yml +- boot.php +- install.php +- uninstall.php +- Markdown-Texte wie README.md und README.de.md +- PHP-Dateien im Verzeichnis ./pages/ +- Verzeichnisse ./lib/ und ./functions/ -. Validierungen bei den Einstellungen (klassisch und rex_config_form) -. zusätzlichen Menüpunkt einbinden wenn Addon xy installiert ist (siehe auch https://github.com/redaxo/docs/issues/136) -. Beschreibung und Anwendung Permission-Check rex::getUser()->hasPerm('meinaddon[delete]') -. Tabellenverwaltung aktivieren/deaktivieren von Datensätzen per Ajax -. Hinweise bzw. Verbesserungen gerne als [Issue](https://github.com/FriendsOfREDAXO/demo_addon/issues) auf github. +Alles ist natürlich auch in der [REDAXO-Dokumentation](https://redaxo.org/doku/master) zu finden und kann dort detailliert nachgeschlagen werden. +Im Quellcode sind an den entsprechenden Stellen direkte Links auf die REDAXO-Dokumentation vorhanden. ## Credits diff --git a/pages/EPLISTHEADER.de.md b/pages/EPLISTHEADER.de.md new file mode 100644 index 0000000..a2b7da9 --- /dev/null +++ b/pages/EPLISTHEADER.de.md @@ -0,0 +1,5 @@ +> **Hinweis:** Die Sammlung der Extension Points sind nur Beispiele und Kopiervorlagen und müssen an die eigenen Bedürfnisse angepasst werden. Hier können keine Änderungen an den EP's vorgenommen werden. Die Logging-Funktionen müssen entfernt werden da sie nur funktionieren würden wenn das `demo_addon` installiert ist. + +Alle öffnen + +
diff --git a/pages/EPLISTHEADER.md b/pages/EPLISTHEADER.md new file mode 100644 index 0000000..0de252d --- /dev/null +++ b/pages/EPLISTHEADER.md @@ -0,0 +1,7 @@ +EPLISTHEADER.md + +english translation needed + +Open all + +
diff --git a/pages/EXTENSIONPOINTS.de.md b/pages/EXTENSIONPOINTS.de.md index e4d584d..2c14305 100644 --- a/pages/EXTENSIONPOINTS.de.md +++ b/pages/EXTENSIONPOINTS.de.md @@ -1,2 +1,34 @@ -EXTENSIONPOINTS.de.md +# Extension Points +[Extension Points](https://redaxo.org/doku/master/extension-points) sind Stellen im REDAXO-Programmcode, an denen eigener Code eingeklinkt und ausgeführt werden kann. Dadurch lässt sich auch das Core-System erweitern und anpassen, ohne den Core selbst zu verändern. + +Extension Points ermöglichen die Manipulation eines bestimmten Wertes, der von der Funktion zurückgegeben wird, die man am Extension Point ausführen lässt. Extension Points stehen im Frontend und im Backend zur Verfügung. + +Die Funktion bekommt an der Stelle der Codeausführung relevante Parameter als Übergabewerte, die sich von Extension Point zu Extension Point unterscheiden. + +- [Extension Points in der REDAXO-Dokumentation](https://www.redaxo.org/doku/master/extension-points) + +## Beispiele Extension Points im Demo-AddOn + +Im Verzeichnis `pages/extensionpoints/` des Demo-AddOns gibt es viele Beispiele für Extension Points und wie diese EP's verwendet werden können. + +In der Liste der Extension Points kann der PHP-Code zu den einzelnen Beispiel EP's direkt angezeigt und kopiert werden. + +Zur Liste der Extension Points + +Die EP's sind in einzelne Unterordner aufgeteilt. Für jeden Unterorder sollte Eine `README.md` für die Anlistung der EP's vorhanden sein. + +Für jeden Extension Point gibt es im Idealfall 2 Dateien: + +- `EP_NAME.php` - Beispiel-Code für den EP +- `EP_NAME.md` - Eine kurze Beschreibung des EP + +Der Name des EP's wird für die Dateinamen verwendet (**GROSSBUCHSTABEN!**). +Alle Extension Points werden automatisch in der `boot.php` eingebunden und somit auch ausgeführt. +Die Ausgabe im Logfile kann mit z.B. mit `demo_addon_logger::log('Meldung für das Logfile', 'EP_NAME');` im EP-Code erreicht werden. + +Die EP's dienen als Vorlage und sollten nicht wirkich Änderungen vornehmen. Nach Möglichkeit Ausgabe der für den EP wichtigen Felder und Inhalte im Logfile. Dokumentation im Quellcode erwünscht! + +Zum Logfile + +> **Hinweis:** Gerne fehlende EP's per PR hinzufügen :) diff --git a/pages/PROPERTIES.de.md b/pages/PROPERTIES.de.md new file mode 100644 index 0000000..ee2f066 --- /dev/null +++ b/pages/PROPERTIES.de.md @@ -0,0 +1,16 @@ +# AddOn-Properties + +Die AddOn-Properties können über die `package.yml` oder per `setProperty(propertyname, propertyvalue)` gesetzt werden. +Mit `getProperty(propertyname)` können die AddOn-Properties abgefragt werden. + +Hier wird die Verwendung der Properties demonstriert (und das einbinden einer .md-Datei im AddOn, einfach mal in den Quellcode reinschauen). + +> **Hinweis:** Properties sollten in einem eigenen Namespace unabhängig vom Core (rex:) verwendet werden. +Zum Beispiel: +`$addon = rex_addon::get('project');` +`$addon->setProperty($key, $value);` + +Dokumentation: + +- [https://redaxo.org/doku/master/konfiguration#package_yml](https://redaxo.org/doku/master/konfiguration#package_yml) +- [https://redaxo.org/doku/master/eigenschaften#property-methoden](https://redaxo.org/doku/master/eigenschaften#property-methoden) diff --git a/pages/PROPERTIES.md b/pages/PROPERTIES.md new file mode 100644 index 0000000..ce02166 --- /dev/null +++ b/pages/PROPERTIES.md @@ -0,0 +1,3 @@ +PROPERTIES.md + +english translation needed diff --git a/pages/TABLES.de.md b/pages/TABLES.de.md index d3826a5..c3b631e 100644 --- a/pages/TABLES.de.md +++ b/pages/TABLES.de.md @@ -1,30 +1,31 @@ -# Addon-Tabellen +# AddOn-Tabellen ## Demo-Tabelle + Bei der Installation des `demo_addon` wird automatisch die Tabelle `%%demo_addon` angelegt und mit Testdaten gefüllt (siehe `install.php`). **%%** steht hier für den REDAXO Table Prefix für Datenbanktabellen und ist standardmäßig auf `rex_` eingestellt (table_prefix in der config.yml). Die Tabellenverwaltung wurde mit den REDAXO-Klassen `rex_list` und `rex_form` umgesetzt. -Die Klasse `rex_form` wird in dem Beispiel durch die Klasse `demo_addon_rex_form` erweitert (`demo_addon_rex_form.php` im lib-Verzeichnis des Addons). Hier wird die Funktion `preSave()` zum speichern des Feldes Geburtsdatum (`birthdate`) im richtigen Format verwendet. +Die Klasse `rex_form` wird in dem Beispiel durch die Klasse `demo_addon_rex_form` erweitert (`demo_addon_rex_form.php` im lib-Verzeichnis des AddOns). Hier wird die Funktion `preSave()` zum speichern des Feldes Geburtsdatum (`birthdate`) im richtigen Format verwendet. -* [zur Tabellenverwaltung](?page=demo_addon/tables/updatetable) +zur Tabellenverwaltung -> **Hinweis:** In Addons und Modulen **immer** die REDAXO-Funktion `rex::getTable()` verwenden! +> **Hinweis:** In AddOns und Modulen **immer** die REDAXO-Funktion `rex::getTable()` verwenden! > Dadurch wird der richtige Tabellen-Prefix zum Tabellen-Namen hinzugefügt. > Beispiel: `rex::getTable('adressen')` => rex_adressen ## Tabellendefinitionen -Addon-Eigene Tabellen sollten in der `install.php` mit Hilfe der Klasse `rex_sql_table` angelegt bzw. geändert werden. -Beispiel in der `install.php` dieses Addons. Versionsabhängige Änderungen am besten in der `update.php` (siehe Kommentare). Löschen der eigenen Tabellen in der `uninstall.php`. +AddOn-Eigene Tabellen sollten in der `install.php` mit Hilfe der Klasse `rex_sql_table` angelegt bzw. geändert werden. +Beispiel in der `install.php` dieses AddOns. Versionsabhängige Änderungen am besten in der `update.php` (siehe Kommentare). Löschen der eigenen Tabellen in der `uninstall.php`. -> **Hinweis:** Mit dem Addon `adminer` kann eine Tabelle definiert werden und danach der PHP-Quellcode für die eigene install.php generiert werden. (Tabelle auswählen und dann auf den Link `rex_sql_table code` klicken) +> **Hinweis:** Mit dem AddOn `adminer` kann eine Tabelle definiert werden und danach der PHP-Quellcode für die eigene install.php generiert werden. (Tabelle auswählen und dann auf den Link `rex_sql_table code` klicken) -* [Datenbanktabellen in der REDAXO-Dokumentation](https://redaxo.org/doku/master/datenbank-tabellen) +- [Datenbanktabellen in der REDAXO-Dokumentation](https://redaxo.org/doku/master/datenbank-tabellen) ## Best Practices -* Tabellen mit der Klasse `rex_sql_table` anlegen bzw. updaten -* Für Tabellenzugriffe in Addons/Templates/Modulen **immer** die REDAXO-Funktion `getTable()` verwenden! Den Tabellen-Namen nicht fest codieren da es sonst bei Updates oder Portierungen Probleme geben kann! +- Tabellen mit der Klasse `rex_sql_table` anlegen bzw. updaten +- Für Tabellenzugriffe in AddOns/Templates/Modulen **immer** die REDAXO-Funktion `getTable()` verwenden! Den Tabellen-Namen nicht fest codieren da es sonst bei Updates oder Portierungen Probleme geben kann! Beispiel: `rex::getTable('adressen')` => rex_adressen -* Eindeutige Tabellen-Namen durch Verwendung des Addon-Namens. Beispiel: rex_demo_addon, rex_demo_addon_preise usw. +- Eindeutige Tabellen-Namen durch Verwendung des AddOn-Namens. Beispiel: rex_demo_addon, rex_demo_addon_preise usw. diff --git a/pages/config.classic_form.php b/pages/config.classic_form.php index 6e81183..a0b5911 100644 --- a/pages/config.classic_form.php +++ b/pages/config.classic_form.php @@ -1,13 +1,16 @@ isValid()) { echo rex_view::error(rex_i18n::msg('csrf_token_invalid')); } elseif ('1' == rex_post('formsubmit', 'string')) { - $this->setConfig(rex_post('config', [ + $addon->setConfig(rex_post('config', [ ['url', 'string'], ['text', 'string'], ['checkbox', 'string'], ['select', 'string'], ['multiselect', 'array[int]'], ['radio', 'string'], - ['file', 'string'], - ['files', 'string'], + ['media', 'string'], + ['medialist', 'string'], + ['mediacategories', 'array[int]'], ['article', 'string'], - ['articles', 'string'], + ['articlelist', 'string'], ['categories', 'array[int]'], ])); @@ -46,7 +50,7 @@ $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = ''; +$n['field'] = ''; $formElements[] = $n; $fragment = new rex_fragment(); @@ -57,7 +61,7 @@ $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = ''; +$n['field'] = ''; $formElements[] = $n; $fragment = new rex_fragment(); @@ -68,7 +72,7 @@ $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = 'getConfig('checkbox')) && '|1|' == $this->getConfig('checkbox') ? ' checked="checked"' : '') . ' value="|1|" />'; +$n['field'] = 'getConfig('checkbox')) && '|1|' == $addon->getConfig('checkbox') ? ' checked="checked"' : '') . ' value="|1|" />'; $formElements[] = $n; $fragment = new rex_fragment(); @@ -86,7 +90,7 @@ $select->addOption('eins', 1); $select->addOption('zwei', 2); $select->addOption('drei', 3); -$select->setSelected($this->getConfig('select')); +$select->setSelected($addon->getConfig('select')); $n['field'] = $select->get(); $formElements[] = $n; @@ -106,7 +110,7 @@ for ($i = 1; $i <= 10; ++$i) { $select->addOption($i, $i); } -$mselect = $this->getConfig('multiselect'); +$mselect = $addon->getConfig('multiselect'); /* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert, wird nur hier in der Demo benötigt */ if (!is_array($mselect)) { @@ -126,12 +130,12 @@ $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = 'getConfig('radio')) && 'frontend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; +$n['field'] = 'getConfig('radio')) && 'frontend' == $addon->getConfig('radio') ? ' checked="checked"' : '') . ' />'; $formElements[] = $n; $n = []; $n['label'] = ''; -$n['field'] = 'getConfig('radio')) && 'backend' == $this->getConfig('radio') ? ' checked="checked"' : '') . ' />'; +$n['field'] = 'getConfig('radio')) && 'backend' == $addon->getConfig('radio') ? ' checked="checked"' : '') . ' />'; $formElements[] = $n; $fragment = new rex_fragment(); @@ -146,8 +150,8 @@ // 2.1 Media-Widget $formElements = []; $n = []; -$n['label'] = ''; -$n['field'] = rex_var_media::getWidget(1, 'config[file]', $this->getConfig('file')); +$n['label'] = ''; +$n['field'] = rex_var_media::getWidget(1, 'config[media]', $addon->getConfig('media')); $formElements[] = $n; $fragment = new rex_fragment(); @@ -157,37 +161,68 @@ // 2.2 MediaList-Widget $formElements = []; $n = []; -$n['label'] = ''; -$n['field'] = rex_var_medialist::getWidget(1, 'config[files]', $this->getConfig('files')); +$n['label'] = ''; +$n['field'] = rex_var_medialist::getWidget(1, 'config[medialist]', $addon->getConfig('medialist')); +$formElements[] = $n; + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/form.php'); + +// 2.3 Media-Category-Select +$formElements = []; +$n = []; +$n['label'] = ''; + +$category_select = new rex_media_category_select(false, false, false, true); +$category_select->setName('config[mediacategories][]'); +$category_select->setId('demo_addon-config-mediacategories'); +$category_select->setSize('10'); +$category_select->setMultiple(true); +$category_select->setAttribute('style', 'width:100%'); +$mselect = $addon->getConfig('mediacategories'); + +/* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert, wird nur hier in der Demo benötigt */ +if (!is_array($mselect)) { + $mselect = explode('|', $mselect); +} /* Ende FIX */ + +$category_select->setSelected($mselect); +$n['field'] = $category_select->get(); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); -// 2.3 Link-Widget +$content .= '
'; + +// Fieldset 3 +$content .= '
' . $addon->i18n('config_legend3') . ''; + +// 3.1 Link-Widget $formElements = []; $n = []; $n['label'] = ''; -$n['field'] = rex_var_link::getWidget(1, 'config[article]', $this->getConfig('article')); +$n['field'] = rex_var_link::getWidget(1, 'config[article]', $addon->getConfig('article')); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/container.php'); -// 2.4 Linklist-Widget +// 3.2 Linklist-Widget $formElements = []; $n = []; -$n['label'] = ''; -$n['field'] = rex_var_linklist::getWidget(1, 'config[articles]', $addon->getConfig('articles')); +$n['label'] = ''; +$n['field'] = rex_var_linklist::getWidget(1, 'config[articlelist]', $addon->getConfig('articlelist')); $formElements[] = $n; $fragment = new rex_fragment(); $fragment->setVar('elements', $formElements, false); $content .= $fragment->parse('core/form/form.php'); -// 2.5 Kategorienauswahl +// 3.3 Kategorienauswahl $formElements = []; $n = []; $n['label'] = ''; @@ -198,7 +233,7 @@ $category_select->setSize('10'); $category_select->setMultiple(true); $category_select->setAttribute('style', 'width:100%'); -$mselect = $this->getConfig('categories'); +$mselect = $addon->getConfig('categories'); /* FIX für Multiselect da rex_config_form in Pipe-Schreibweise speichert, wird nur hier in der Demo benötigt */ if (!is_array($mselect)) { diff --git a/pages/config.rex_config_form.php b/pages/config.rex_config_form.php index aecb6e8..ae895ef 100644 --- a/pages/config.rex_config_form.php +++ b/pages/config.rex_config_form.php @@ -1,13 +1,15 @@ addFieldset($addon->i18n('config_legend2')); // 2.1 Media-Widget -$field = $form->addMediaField('file'); -$field->setLabel($addon->i18n('config_file')); +$field = $form->addMediaField('media'); +$field->setLabel($addon->i18n('config_media')); // 2.2 MediaList-Widget -$field = $form->addMediaListField('files'); -$field->setLabel($addon->i18n('config_files')); +$field = $form->addMediaListField('medialist'); +$field->setLabel($addon->i18n('config_medialist')); + +// 2.3 Media-Category-Select +$field = $form->addSelectField('mediacategories', null, ['class' => 'form-control']); +$field->setLabel($addon->i18n('config_mediacategories')); +$field->setSelect(new rex_media_category_select()); +$category_select = $field->getSelect(); +$category_select->setSize('10'); +$category_select->setAttribute('multiple', 'multiple'); +$category_select->setAttribute('class', 'form-control'); + +// Fieldset 3 +$form->addFieldset($addon->i18n('config_legend3')); -// 2.3 Link-Widget +// 3.1 Link-Widget $field = $form->addLinkmapField('article'); $field->setLabel($addon->i18n('config_article')); -// 2.4 Linklist-Widget -$field = $form->addLinklistField('articles'); -$field->setLabel($addon->i18n('config_articles')); +// 3.2 Linklist-Widget +$field = $form->addLinklistField('articlelist'); +$field->setLabel($addon->i18n('config_articlelist')); -// 2.5 Kategorienauswahl +// 3.3 Kategorienauswahl $field = $form->addSelectField('categories', null, ['class' => 'form-control']); $field->setLabel($addon->i18n('config_categories')); $field->setSelect(new rex_category_select(false, false, false, true)); diff --git a/pages/eps.eplist.php b/pages/eps.eplist.php index 8d3f593..6e0b389 100644 --- a/pages/eps.eplist.php +++ b/pages/eps.eplist.php @@ -1,3 +1,63 @@ -eps.eplist.php includeFile(__DIR__.'/install.php'); + +$addon = rex_addon::get('demo_addon'); + +$content = ''; + +// Beschreibung aus `EPLISTHEADER.md` ausgeben +// Wenn eine Markdown-Datei in der aktuellen Backendsprache vorhanden ist wird diese verwendet. +$path = __DIR__ . DIRECTORY_SEPARATOR . 'EPLISTHEADER.md'; +$languagePath = substr($path, 0, -3) . '.' . rex_i18n::getLanguage() . '.md'; +if (is_readable($languagePath)) { + $path = $languagePath; +} + +// Parse der Markdown-Datei und ausgeben mit fragment docs.php +$content = rex_markdown::factory()->parse(rex_file::get($path)); +$fragment = new rex_fragment(); +$fragment->setVar('content', $content, false); +$content = $fragment->parse('core/page/docs.php'); + +// Verzeichnis mit den Extension Points +$epdir = $addon->getPath() . 'pages' . DIRECTORY_SEPARATOR . 'extensionpoints' . DIRECTORY_SEPARATOR; + +// Array der Extension Points, wird in der boot.php ermittelt +$_eplist = $addon->getProperty('eplist'); + +// Ausgabe Toggle-Buttons +$content .= ''; + +// Ausgabe der Extension Point Liste +foreach ($_eplist as $dir => $eps) { + // README.md aus jedem Verzeichnis parsen und ausgeben + $path = $epdir . $dir . DIRECTORY_SEPARATOR . 'README.md'; + $languagePath = substr($path, 0, -3) . '.' . rex_i18n::getLanguage() . '.md'; + if (is_readable($languagePath)) { + $path = $languagePath; + } + + if (file_exists($path)) { + $cont = rex_markdown::factory()->parse(rex_file::get($path)); + } else { + $cont = rex_markdown::factory()->parse('## ' . $dir . ' (README.md not found!)'); + } + $content .= $cont; + + // Ausgabe der Extension Points (Beschreibung + Code) + foreach ($eps as $ep => $epdata) { + $content .= demo_addon_outputEpEntry($dir, $ep, $epdata); + } +} + +$formElements = []; + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$content .= $fragment->parse('core/form/container.php'); + +$fragment = new rex_fragment(); +$fragment->setVar('title', $addon->i18n('demo_addon_eplist_title')); +$fragment->setVar('body', $content, false); + +$output = $fragment->parse('core/page/section.php'); +echo $output; diff --git a/pages/eps.logfile.php b/pages/eps.logfile.php new file mode 100644 index 0000000..fbc9a30 --- /dev/null +++ b/pages/eps.logfile.php @@ -0,0 +1,113 @@ + + + + ' . rex_i18n::msg('demo_addon_log_timestamp') . ' + ' . rex_i18n::msg('demo_addon_logid') . ' + ' . rex_i18n::msg('demo_addon_log_message') . ' + + + '; + +$file = new rex_log_file($logFile); + +// Anzahl der anzuzeigenden Zeilen aus der `package.yml`, falls nicht vorhanden Standard 200 +// https://redaxo.org/doku/master/addon-package#eigene +foreach (new LimitIterator($file, 0, $addon->getProperty('logfile.listEntries', 200)) as $entry) { + /** @var rex_log_entry $entry */ + $data = $entry->getData(); + $class = 'notice'; + + $content .= ' + + ' . $entry->getTimestamp('%d.%m.%Y %H:%M:%S') . ' + ' . $data[0] . ' + ' . $data[1] . ' + '; +} + +$content .= ' + + '; + +$formElements = []; + +$n = []; +$n['field'] = ''; +$formElements[] = $n; + +if ($url = rex_editor::factory()->getUrl($logFile, 0)) { + $n = []; + $n['field'] = '' . rex_i18n::msg('system_editor_open_file', basename($logFile)) . ''; + $formElements[] = $n; +} + +if (file_exists($logFile)) { + $url = rex_url::currentBackendPage(['func' => 'download']); + $n = []; + $n['field'] = '' . rex_i18n::msg('syslog_download', basename($logFile)) . ''; + $formElements[] = $n; +} + +$fragment = new rex_fragment(); +$fragment->setVar('elements', $formElements, false); +$buttons = $fragment->parse('core/form/submit.php'); + +$fragment = new rex_fragment(); +$fragment->setVar('title', rex_i18n::msg('syslog_title', $logFile), false); +$fragment->setVar('content', $content, false); +$fragment->setVar('buttons', $buttons, false); +$content = $fragment->parse('core/page/section.php'); + +$content = ' +
+ + ' . $content . ' +
'; + +echo $message; +echo $content; diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.de.md b/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.de.md new file mode 100644 index 0000000..59d2c29 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_AFTER_DB_EXPORT` wird nach der Erstellung eines Datenbank-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: NULL +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.php b/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.php new file mode 100644 index 0000000..59add46 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_DB_EXPORT.php @@ -0,0 +1,8 @@ +' . $var . '', $ep->getName()); + demo_addon_logger::log('Datenbank-Backup wurde erstellt. Keine Übergabewerte!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.de.md b/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.de.md new file mode 100644 index 0000000..a75c096 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.de.md @@ -0,0 +1,11 @@ + +**Beschreibung:** Der EP `BACKUP_AFTER_DB_IMPORT` wird nach dem Import eines Datenbank-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: rex_i18n::msg('backup_database_imported'); +Parameter: ['content' => $content, 'filename' => $filename, 'filesize' => $filesize] +``` + +> **Hinweis:** $content enthält den kompletten Inhalt der SQL-Import-Datei diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.php b/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.php new file mode 100644 index 0000000..b6ac0ea --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_DB_IMPORT.php @@ -0,0 +1,12 @@ +getSubject(); // Subject, hier die Nachricht + $params = $ep->getParams(); // Array aller EP-Parameter + $content = $ep->getParam('content'); // Datei-Inhalt des SQL-Imports + $filename = $ep->getParam('filename'); // Dateiname des SQL-Imports + $filesize = $ep->getParam('filesize'); // Dateigröße des SQL-Imports + $logcontent = nl2br(substr($content, 0, 600)) . ' ...'; // gekürzte Ausgabe $content für das Logfile + + demo_addon_logger::log('Subject: ' . $subject . 'Filename: ' . $filename . '
Filesize: ' . $filesize . '
Content:
' . $logcontent, $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.de.md b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.de.md new file mode 100644 index 0000000..acf3685 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_AFTER_FILE_EXPORT` wird nach dem Export eines Datei-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: $tar (rex_backup_tar) +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.php b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.php new file mode 100644 index 0000000..738705d --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_EXPORT.php @@ -0,0 +1,6 @@ +getSubject(); // Subject, hier ein Objekt der Klasse rex_backup_tar + demo_addon_logger::log('Datei-Backup wurde erstellt. Keine Parameter!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.de.md b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.de.md new file mode 100644 index 0000000..acc0967 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_AFTER_FILE_IMPORT` wird nach dem Import eines Datei-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: $tar (rex_backup_tar) +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.php b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.php new file mode 100644 index 0000000..3c54d2b --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_AFTER_FILE_IMPORT.php @@ -0,0 +1,6 @@ +getSubject(); // Subject, hier ein Objekt der Klasse rex_backup_tar + demo_addon_logger::log('Datei-Backup wurde importiert. Keine Parameter!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.de.md b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.de.md new file mode 100644 index 0000000..3c9d748 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_BEFORE_DB_EXPORT` wird vor der Erstellung eines Datenbank-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: NULL +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.php b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.php new file mode 100644 index 0000000..ab1d997 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_EXPORT.php @@ -0,0 +1,8 @@ +' . $var . '', $ep->getName()); + demo_addon_logger::log('Datenbank-Backup wird erstellt. Keine Übergabewerte!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.de.md b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.de.md new file mode 100644 index 0000000..f12b490 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.de.md @@ -0,0 +1,11 @@ + +**Beschreibung:** Der EP `BACKUP_BEFORE_DB_IMPORT` wird vor dem Import eines Datenbank-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: leer +Parameter: ['content' => $content, 'filename' => $filename, 'filesize' => $filesize] +``` + +> **Hinweis:** $content enthält den kompletten Inhalt der SQL-Import-Datei diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.php b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.php new file mode 100644 index 0000000..99b0cfb --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_DB_IMPORT.php @@ -0,0 +1,12 @@ +getSubject(); + $params = $ep->getParams(); // Array aller EP-Parameter + $content = $ep->getParam('content'); // Datei-Inhalt des SQL-Imports + $filename = $ep->getParam('filename'); // Dateiname des SQL-Imports + $filesize = $ep->getParam('filesize'); // Dateigröße des SQL-Imports + $logcontent = nl2br(substr($content, 0, 600)) . ' ...'; // gekürzte Ausgabe $content für das Logfile + + demo_addon_logger::log('Subject: ' . $subject . 'Filename: ' . $filename . '
Filesize: ' . $filesize . '
Content:
' . $logcontent, $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.de.md b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.de.md new file mode 100644 index 0000000..4678341 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_BEFORE_FILE_EXPORT` wird vor dem Export eines Datei-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: $tar (rex_backup_tar) +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.php b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.php new file mode 100644 index 0000000..73d0b69 --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_EXPORT.php @@ -0,0 +1,6 @@ +getSubject(); // Subject, hier ein Objekt der Klasse rex_backup_tar + demo_addon_logger::log('Datei-Backup wird erstellt. Keine Parameter!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.de.md b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.de.md new file mode 100644 index 0000000..2e6335b --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `BACKUP_BEFORE_FILE_IMPORT` wird vor dem Import eines Datei-Backups im Backend aufgerufen. + +**Übergabewerte** + +``` +Subject: $tar (rex_backup_tar) +Parameter: keine +``` diff --git a/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.php b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.php new file mode 100644 index 0000000..66819fd --- /dev/null +++ b/pages/extensionpoints/backup/BACKUP_BEFORE_FILE_IMPORT.php @@ -0,0 +1,6 @@ +getSubject(); // Subject, hier ein Objekt der Klasse rex_backup_tar + demo_addon_logger::log('Datei-Backup wird importiert. Keine Parameter!', $ep->getName()); +}); diff --git a/pages/extensionpoints/backup/README.de.md b/pages/extensionpoints/backup/README.de.md new file mode 100644 index 0000000..26c0dec --- /dev/null +++ b/pages/extensionpoints/backup/README.de.md @@ -0,0 +1,3 @@ +## Backup Extension Points + +Extension Points des `backup` AddOns diff --git a/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.de.md b/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.de.md new file mode 100644 index 0000000..a85dd14 --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `BE_STYLE_PAGE_CONTENT` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.php b/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.php new file mode 100644 index 0000000..d76ea4a --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_PAGE_CONTENT.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.de.md b/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.de.md new file mode 100644 index 0000000..5877503 --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `BE_STYLE_SCSS_COMPILE` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.php b/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.php new file mode 100644 index 0000000..263c6dc --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_SCSS_COMPILE.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.de.md b/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.de.md new file mode 100644 index 0000000..f4dc66e --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `BE_STYLE_SCSS_FILES` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.php b/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.php new file mode 100644 index 0000000..a8886f1 --- /dev/null +++ b/pages/extensionpoints/be_style/BE_STYLE_SCSS_FILES.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/be_style/README.de.md b/pages/extensionpoints/be_style/README.de.md new file mode 100644 index 0000000..3ef05ea --- /dev/null +++ b/pages/extensionpoints/be_style/README.de.md @@ -0,0 +1,3 @@ +## BE Style Extension Points + +Extension Points des `be_style` AddOns diff --git a/pages/extensionpoints/core/CACHE_DELETED.de.md b/pages/extensionpoints/core/CACHE_DELETED.de.md new file mode 100644 index 0000000..5335153 --- /dev/null +++ b/pages/extensionpoints/core/CACHE_DELETED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `CACHE_DELETED` wird nach dem löschen des REDAXO Caches aufgerufen (im Backend oder mit der Funktion `rex_delete_cache`). Die Meldung kann mit `$ep->setSubject()` angepasst werden. + +**Übergabewerte** + +``` +Subject: rex_i18n::msg('delete_cache_message'); +Parameter: keine +``` diff --git a/pages/extensionpoints/core/CACHE_DELETED.php b/pages/extensionpoints/core/CACHE_DELETED.php new file mode 100644 index 0000000..a1931c8 --- /dev/null +++ b/pages/extensionpoints/core/CACHE_DELETED.php @@ -0,0 +1,8 @@ +getSubject(); + demo_addon_logger::log('Subject: ' . $message, $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_ADDED.de.md b/pages/extensionpoints/core/CLANG_ADDED.de.md new file mode 100644 index 0000000..874fb72 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_ADDED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_ADDED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_ADDED.php b/pages/extensionpoints/core/CLANG_ADDED.php new file mode 100644 index 0000000..7cea147 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_ADDED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_DELETED.de.md b/pages/extensionpoints/core/CLANG_DELETED.de.md new file mode 100644 index 0000000..0a3244a --- /dev/null +++ b/pages/extensionpoints/core/CLANG_DELETED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_DELETED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_DELETED.php b/pages/extensionpoints/core/CLANG_DELETED.php new file mode 100644 index 0000000..61ad723 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_DELETED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_FORM_ADD.de.md b/pages/extensionpoints/core/CLANG_FORM_ADD.de.md new file mode 100644 index 0000000..2ce3fcf --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_ADD.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_FORM_ADD` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_FORM_ADD.php b/pages/extensionpoints/core/CLANG_FORM_ADD.php new file mode 100644 index 0000000..424e732 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_ADD.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_FORM_BUTTONS.de.md b/pages/extensionpoints/core/CLANG_FORM_BUTTONS.de.md new file mode 100644 index 0000000..1e8f87b --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_BUTTONS.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_FORM_BUTTONS` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_FORM_BUTTONS.php b/pages/extensionpoints/core/CLANG_FORM_BUTTONS.php new file mode 100644 index 0000000..f449264 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_BUTTONS.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_FORM_EDIT.de.md b/pages/extensionpoints/core/CLANG_FORM_EDIT.de.md new file mode 100644 index 0000000..c695e3e --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_EDIT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_FORM_EDIT` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_FORM_EDIT.php b/pages/extensionpoints/core/CLANG_FORM_EDIT.php new file mode 100644 index 0000000..76ce369 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_FORM_EDIT.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/CLANG_UPDATED.de.md b/pages/extensionpoints/core/CLANG_UPDATED.de.md new file mode 100644 index 0000000..0058d44 --- /dev/null +++ b/pages/extensionpoints/core/CLANG_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `CLANG_UPDATED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/CLANG_UPDATED.php b/pages/extensionpoints/core/CLANG_UPDATED.php new file mode 100644 index 0000000..f2c31ce --- /dev/null +++ b/pages/extensionpoints/core/CLANG_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.de.md b/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.de.md new file mode 100644 index 0000000..17276a1 --- /dev/null +++ b/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `COMPLEX_PERM_REMOVE_ITEM` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.php b/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.php new file mode 100644 index 0000000..d78044e --- /dev/null +++ b/pages/extensionpoints/core/COMPLEX_PERM_REMOVE_ITEM.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.de.md b/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.de.md new file mode 100644 index 0000000..223f798 --- /dev/null +++ b/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `COMPLEX_PERM_REPLACE_ITEM` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.php b/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.php new file mode 100644 index 0000000..8cc88b7 --- /dev/null +++ b/pages/extensionpoints/core/COMPLEX_PERM_REPLACE_ITEM.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/EDITOR_URL.de.md b/pages/extensionpoints/core/EDITOR_URL.de.md new file mode 100644 index 0000000..0fa677f --- /dev/null +++ b/pages/extensionpoints/core/EDITOR_URL.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `EDITOR_URL` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/EDITOR_URL.php b/pages/extensionpoints/core/EDITOR_URL.php new file mode 100644 index 0000000..5e58466 --- /dev/null +++ b/pages/extensionpoints/core/EDITOR_URL.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/FE_OUTPUT.de.md b/pages/extensionpoints/core/FE_OUTPUT.de.md new file mode 100644 index 0000000..7332a46 --- /dev/null +++ b/pages/extensionpoints/core/FE_OUTPUT.de.md @@ -0,0 +1,12 @@ + +**Beschreibung:** Der EP `FE_OUTPUT` wird vor dem EP `OUTPUT_FILTER` nur im Frontend aufgerufen. Es wird ein leeres Subject übergeben und es gibt keine Übergabeparameter. Der EP wird vom *structure content* Plugin für die Ausgabe der Webseite verwendet. +Durch setSubject kann hier noch vor Ausgabe der Webseite eine Ausgabe generiert werden. + +> **Hinweis:** Da der REDAXO Core selbst keine Ausgabe erstellt wird in der frontend.php dieser EP bereitgestellt. Auch auf [http://traduko.redaxo.org/](http://traduko.redaxo.org/) wird für die Ausgabe der Webseite dieser EP verwendet. + +**Übergabewerte** + +``` +Subject: Content +Parameter: keine +``` diff --git a/pages/extensionpoints/core/FE_OUTPUT.php b/pages/extensionpoints/core/FE_OUTPUT.php new file mode 100644 index 0000000..13b52d3 --- /dev/null +++ b/pages/extensionpoints/core/FE_OUTPUT.php @@ -0,0 +1,10 @@ +' . $var . '', $ep->getName()); + + $content = $ep->getSubject(); + demo_addon_logger::log(strlen($content) . ' Bytes Subject', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.de.md b/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.de.md new file mode 100644 index 0000000..c57f87b --- /dev/null +++ b/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `I18N_MISSING_TRANSLATION` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.php b/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.php new file mode 100644 index 0000000..6d2b530 --- /dev/null +++ b/pages/extensionpoints/core/I18N_MISSING_TRANSLATION.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/META_NAVI.de.md b/pages/extensionpoints/core/META_NAVI.de.md new file mode 100644 index 0000000..c142373 --- /dev/null +++ b/pages/extensionpoints/core/META_NAVI.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Über den EP `META_NAVI` kann die Meta-Navigation im Backend (oben rechts mit dem abmelden Link) geändert werden. + +**Übergabewerte** + +``` +Subject: $list_items +Parameter: keine +``` diff --git a/pages/extensionpoints/core/META_NAVI.php b/pages/extensionpoints/core/META_NAVI.php new file mode 100644 index 0000000..58786f8 --- /dev/null +++ b/pages/extensionpoints/core/META_NAVI.php @@ -0,0 +1,9 @@ +getSubject(); // Array mit den Meta Navi Links + + // Aufbereiten für die Ausgabe im Logfile + $var = rex_escape(var_export($content, true)); + demo_addon_logger::log('
' . $var . '
', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/OUTPUT_FILTER.de.md b/pages/extensionpoints/core/OUTPUT_FILTER.de.md new file mode 100644 index 0000000..b4541e3 --- /dev/null +++ b/pages/extensionpoints/core/OUTPUT_FILTER.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `OUTPUT_FILTER` wird sowohl im Backend als auch im Frontend aufgerufen. Er liefert den gesamten HTML-Code vor der Ausgabe an den Browser. Der HTML-Code kann über den EP noch vor der Ausgabe geändert und mit `setSubject` zurückgegeben werden. + +**Übergabewerte** + +``` +Subject: $content (HTML) +Parameter: keine +``` diff --git a/pages/extensionpoints/core/OUTPUT_FILTER.php b/pages/extensionpoints/core/OUTPUT_FILTER.php new file mode 100644 index 0000000..b08c30f --- /dev/null +++ b/pages/extensionpoints/core/OUTPUT_FILTER.php @@ -0,0 +1,29 @@ +getSubject()) . ' Bytes - Mode: ' . $rxmode . '
URL: ' . $url, $ep->getName()); + + // Ausgabe der Übergabewerte im Logfile + //$var = rex_escape(var_export($ep, true)); + //demo_addon_logger::log('
' . $var . '
', $ep->getName()); + + // Ersetzung im HTML-Code durchführen und zurückliefern + $search = ''; + $replace = ''; + + // Mit setSubject wird der veränderte HTML-Code zurückgeschrieben + $ep->setSubject(str_replace($search, $replace, $ep->getSubject())); +}); diff --git a/pages/extensionpoints/core/PACKAGES_INCLUDED.de.md b/pages/extensionpoints/core/PACKAGES_INCLUDED.de.md new file mode 100644 index 0000000..2e51610 --- /dev/null +++ b/pages/extensionpoints/core/PACKAGES_INCLUDED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `PACKAGES_INCLUDED` wird nach dem Laden aller AddOns im Backend und Frontend aufgerufen. + +**Übergabewerte** + +``` +Subject: NULL +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PACKAGES_INCLUDED.php b/pages/extensionpoints/core/PACKAGES_INCLUDED.php new file mode 100644 index 0000000..eaf4f50 --- /dev/null +++ b/pages/extensionpoints/core/PACKAGES_INCLUDED.php @@ -0,0 +1,12 @@ +' . $var . '', $ep->getName()); + + // Modus und URL für die Logfile-Ausgabe + $rxmode = (rex::isBackend() && rex::getUser()) ? 'Backend' : 'Frontend'; + $url = " - $_SERVER[REQUEST_URI]"; + demo_addon_logger::log('Mode: ' . $rxmode . '
URL: ' . $url, $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGES_PREPARED.de.md b/pages/extensionpoints/core/PAGES_PREPARED.de.md new file mode 100644 index 0000000..6bc3abe --- /dev/null +++ b/pages/extensionpoints/core/PAGES_PREPARED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGES_PREPARED` + +**Übergabewerte** + +``` +Subject: rex_be_controller::getPages() +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PAGES_PREPARED.php b/pages/extensionpoints/core/PAGES_PREPARED.php new file mode 100644 index 0000000..f03a9fc --- /dev/null +++ b/pages/extensionpoints/core/PAGES_PREPARED.php @@ -0,0 +1,11 @@ +' . $var . '', $ep->getName()); + + $pages = $ep->getSubject(); // rex_be_controller::getPages() + demo_addon_logger::log('Count pages: ' . count($pages), $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_BODY_ATTR.de.md b/pages/extensionpoints/core/PAGE_BODY_ATTR.de.md new file mode 100644 index 0000000..ba262c3 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_BODY_ATTR.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_BODY_ATTR` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/PAGE_BODY_ATTR.php b/pages/extensionpoints/core/PAGE_BODY_ATTR.php new file mode 100644 index 0000000..966d427 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_BODY_ATTR.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_CHECKED.de.md b/pages/extensionpoints/core/PAGE_CHECKED.de.md new file mode 100644 index 0000000..034b7ed --- /dev/null +++ b/pages/extensionpoints/core/PAGE_CHECKED.de.md @@ -0,0 +1,11 @@ + +**Beschreibung:** `PAGE_CHECKED` + +**Übergabewerte** + +``` +Subject: $page +Parameter: ['pages' => $pages] +``` + +> **Hinweis:** Der Wert ist schreibgeschützt. Parameter $pages enthält das Array aus rex_be_controller::getPages() \ No newline at end of file diff --git a/pages/extensionpoints/core/PAGE_CHECKED.php b/pages/extensionpoints/core/PAGE_CHECKED.php new file mode 100644 index 0000000..7c55f7d --- /dev/null +++ b/pages/extensionpoints/core/PAGE_CHECKED.php @@ -0,0 +1,11 @@ +' . $var . '', $ep->getName()); + + $pages = $ep->getParam('pages'); // rex_be_controller::getPages() + demo_addon_logger::log('Count pages: ' . count($pages), $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_HEADER.de.md b/pages/extensionpoints/core/PAGE_HEADER.de.md new file mode 100644 index 0000000..01ae4c1 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_HEADER.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_HEADER` + +**Übergabewerte** + +``` +Subject: $content +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PAGE_HEADER.php b/pages/extensionpoints/core/PAGE_HEADER.php new file mode 100644 index 0000000..44ed447 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_HEADER.php @@ -0,0 +1,9 @@ +getSubject(); // Array mit den Meta Navi Links + + // Ausgabe der Übergabewerte im Logfile + $var = nl2br(rex_escape($content)); + demo_addon_logger::log('PAGE_HEADER Subject:
' . $var, $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_SIDEBAR.de.md b/pages/extensionpoints/core/PAGE_SIDEBAR.de.md new file mode 100644 index 0000000..9a44b90 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_SIDEBAR.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_SIDEBAR` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/PAGE_SIDEBAR.php b/pages/extensionpoints/core/PAGE_SIDEBAR.php new file mode 100644 index 0000000..ecb1412 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_SIDEBAR.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_TITLE.de.md b/pages/extensionpoints/core/PAGE_TITLE.de.md new file mode 100644 index 0000000..e815241 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_TITLE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_TITLE` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PAGE_TITLE.php b/pages/extensionpoints/core/PAGE_TITLE.php new file mode 100644 index 0000000..bbdf746 --- /dev/null +++ b/pages/extensionpoints/core/PAGE_TITLE.php @@ -0,0 +1,11 @@ +' . $var . '', $ep->getName()); + + // Der Seitentitel kann hier per setSubject angepasst werden + $title = $ep->getSubject(); + demo_addon_logger::log('Seitentitel: ' . $title, $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PAGE_TITLE_SHOWN.de.md b/pages/extensionpoints/core/PAGE_TITLE_SHOWN.de.md new file mode 100644 index 0000000..8c75f7a --- /dev/null +++ b/pages/extensionpoints/core/PAGE_TITLE_SHOWN.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_TITLE_SHOWN` + +**Übergabewerte** + +``` +Subject: leer +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PAGE_TITLE_SHOWN.php b/pages/extensionpoints/core/PAGE_TITLE_SHOWN.php new file mode 100644 index 0000000..a2124dd --- /dev/null +++ b/pages/extensionpoints/core/PAGE_TITLE_SHOWN.php @@ -0,0 +1,9 @@ +' . $var . '', $ep->getName()); + + demo_addon_logger::log('Keine Übergabewerte!', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PASSWORD_UPDATED.de.md b/pages/extensionpoints/core/PASSWORD_UPDATED.de.md new file mode 100644 index 0000000..b7e058f --- /dev/null +++ b/pages/extensionpoints/core/PASSWORD_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PASSWORD_UPDATED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/PASSWORD_UPDATED.php b/pages/extensionpoints/core/PASSWORD_UPDATED.php new file mode 100644 index 0000000..0ca98e9 --- /dev/null +++ b/pages/extensionpoints/core/PASSWORD_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/PROFILE_UPDATED.de.md b/pages/extensionpoints/core/PROFILE_UPDATED.de.md new file mode 100644 index 0000000..4d727fe --- /dev/null +++ b/pages/extensionpoints/core/PROFILE_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PROFILE_UPDATED` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/core/PROFILE_UPDATED.php b/pages/extensionpoints/core/PROFILE_UPDATED.php new file mode 100644 index 0000000..44ca0c8 --- /dev/null +++ b/pages/extensionpoints/core/PROFILE_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/README.de.md b/pages/extensionpoints/core/README.de.md new file mode 100644 index 0000000..a09350e --- /dev/null +++ b/pages/extensionpoints/core/README.de.md @@ -0,0 +1,3 @@ +## Core Extension Points + +Extension Points des **REDAXO Core** diff --git a/pages/extensionpoints/core/RESPONSE_SHUTDOWN.de.md b/pages/extensionpoints/core/RESPONSE_SHUTDOWN.de.md new file mode 100644 index 0000000..703abb0 --- /dev/null +++ b/pages/extensionpoints/core/RESPONSE_SHUTDOWN.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** Der EP `RESPONSE_SHUTDOWN` ist der letzte Extension Point vor der Ausgabe der Seite an den Browser. Subject ist der finale HTML-Output (evtl. durch andere EP's verändert). Der Output kann nicht mehr geändert werden (readonly). + +**Übergabewerte** + +``` +Subject: $content (HTML) +Parameter: keine +``` diff --git a/pages/extensionpoints/core/RESPONSE_SHUTDOWN.php b/pages/extensionpoints/core/RESPONSE_SHUTDOWN.php new file mode 100644 index 0000000..b76e9f1 --- /dev/null +++ b/pages/extensionpoints/core/RESPONSE_SHUTDOWN.php @@ -0,0 +1,10 @@ +getSubject()) . ' Bytes - Mode: ' . $rxmode . '
URL: ' . $url, $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.de.md b/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.de.md new file mode 100644 index 0000000..3a7ab32 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_CONTROL_FIELDS` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.php b/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.php new file mode 100644 index 0000000..06f2948 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_CONTROL_FIELDS.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_DELETED.de.md b/pages/extensionpoints/core/REX_FORM_DELETED.de.md new file mode 100644 index 0000000..cb4fd45 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_DELETED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_DELETED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_DELETED.php b/pages/extensionpoints/core/REX_FORM_DELETED.php new file mode 100644 index 0000000..5f2452e --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_DELETED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_GET.de.md b/pages/extensionpoints/core/REX_FORM_GET.de.md new file mode 100644 index 0000000..d64e1d4 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_GET.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_GET` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_GET.php b/pages/extensionpoints/core/REX_FORM_GET.php new file mode 100644 index 0000000..18715a1 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_GET.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.de.md b/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.de.md new file mode 100644 index 0000000..97ede73 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_INPUT_ATTRIBUTES` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.php b/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.php new file mode 100644 index 0000000..4be8d54 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_ATTRIBUTES.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.de.md b/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.de.md new file mode 100644 index 0000000..5733d63 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_INPUT_CLASS` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.php b/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.php new file mode 100644 index 0000000..8e08b7a --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_CLASS.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_TAG.de.md b/pages/extensionpoints/core/REX_FORM_INPUT_TAG.de.md new file mode 100644 index 0000000..3522c7a --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_TAG.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_INPUT_TAG` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_INPUT_TAG.php b/pages/extensionpoints/core/REX_FORM_INPUT_TAG.php new file mode 100644 index 0000000..871afd6 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_INPUT_TAG.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_FORM_SAVED.de.md b/pages/extensionpoints/core/REX_FORM_SAVED.de.md new file mode 100644 index 0000000..6169246 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_SAVED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_FORM_SAVED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_FORM_SAVED.php b/pages/extensionpoints/core/REX_FORM_SAVED.php new file mode 100644 index 0000000..0548280 --- /dev/null +++ b/pages/extensionpoints/core/REX_FORM_SAVED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/REX_LIST_GET.de.md b/pages/extensionpoints/core/REX_LIST_GET.de.md new file mode 100644 index 0000000..f6c5412 --- /dev/null +++ b/pages/extensionpoints/core/REX_LIST_GET.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `REX_LIST_GET` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/core/REX_LIST_GET.php b/pages/extensionpoints/core/REX_LIST_GET.php new file mode 100644 index 0000000..b5d0371 --- /dev/null +++ b/pages/extensionpoints/core/REX_LIST_GET.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/USER_ADDED.de.md b/pages/extensionpoints/core/USER_ADDED.de.md new file mode 100644 index 0000000..c9a6d77 --- /dev/null +++ b/pages/extensionpoints/core/USER_ADDED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `USER_ADDED` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/core/USER_ADDED.php b/pages/extensionpoints/core/USER_ADDED.php new file mode 100644 index 0000000..df7e325 --- /dev/null +++ b/pages/extensionpoints/core/USER_ADDED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/USER_DELETED.de.md b/pages/extensionpoints/core/USER_DELETED.de.md new file mode 100644 index 0000000..30b5f36 --- /dev/null +++ b/pages/extensionpoints/core/USER_DELETED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `USER_DELETED` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/core/USER_DELETED.php b/pages/extensionpoints/core/USER_DELETED.php new file mode 100644 index 0000000..6891dbb --- /dev/null +++ b/pages/extensionpoints/core/USER_DELETED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/core/USER_UPDATED.de.md b/pages/extensionpoints/core/USER_UPDATED.de.md new file mode 100644 index 0000000..fa4b845 --- /dev/null +++ b/pages/extensionpoints/core/USER_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `USER_UPDATED` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/core/USER_UPDATED.php b/pages/extensionpoints/core/USER_UPDATED.php new file mode 100644 index 0000000..be24eed --- /dev/null +++ b/pages/extensionpoints/core/USER_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.de.md b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.de.md new file mode 100644 index 0000000..8e05980 --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_MANAGER_AFTER_SEND` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.php b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.php new file mode 100644 index 0000000..796c4e7 --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_AFTER_SEND.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.de.md b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.de.md new file mode 100644 index 0000000..d9128ef --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_MANAGER_BEFORE_SEND` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.php b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.php new file mode 100644 index 0000000..204baa5 --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_BEFORE_SEND.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.de.md b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.de.md new file mode 100644 index 0000000..d947293 --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_MANAGER_FILTERSET` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.php b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.php new file mode 100644 index 0000000..1dab83c --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_FILTERSET.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.de.md b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.de.md new file mode 100644 index 0000000..d43cc8f --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_MANAGER_URL` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.php b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.php new file mode 100644 index 0000000..0afe1b9 --- /dev/null +++ b/pages/extensionpoints/mediamanager/MEDIA_MANAGER_URL.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/mediamanager/README.de.md b/pages/extensionpoints/mediamanager/README.de.md new file mode 100644 index 0000000..beef325 --- /dev/null +++ b/pages/extensionpoints/mediamanager/README.de.md @@ -0,0 +1,3 @@ +## Media Manager Extension Points + +Extension Points des `media_manager` AddOns \ No newline at end of file diff --git a/pages/extensionpoints/medienpool/MEDIA_ADDED.de.md b/pages/extensionpoints/medienpool/MEDIA_ADDED.de.md new file mode 100644 index 0000000..614f9d8 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_ADDED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_ADDED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_ADDED.php b/pages/extensionpoints/medienpool/MEDIA_ADDED.php new file mode 100644 index 0000000..8caf567 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_ADDED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.de.md b/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.de.md new file mode 100644 index 0000000..8dc3c2b --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_CATEGORY_IS_IN_USE` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.php b/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.php new file mode 100644 index 0000000..31394ac --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_CATEGORY_IS_IN_USE.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_DELETED.de.md b/pages/extensionpoints/medienpool/MEDIA_DELETED.de.md new file mode 100644 index 0000000..041839c --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_DELETED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_DELETED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_DELETED.php b/pages/extensionpoints/medienpool/MEDIA_DELETED.php new file mode 100644 index 0000000..6e4248f --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_DELETED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.de.md b/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.de.md new file mode 100644 index 0000000..1166f69 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_DETAIL_SIDEBAR` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.php b/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.php new file mode 100644 index 0000000..153a43a --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_DETAIL_SIDEBAR.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.de.md b/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.de.md new file mode 100644 index 0000000..96f7852 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_FORM_ADD` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.php b/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.php new file mode 100644 index 0000000..bb3a0c2 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_FORM_ADD.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.de.md b/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.de.md new file mode 100644 index 0000000..5e56332 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_FORM_EDIT` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.php b/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.php new file mode 100644 index 0000000..0f7f95f --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_FORM_EDIT.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.de.md b/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.de.md new file mode 100644 index 0000000..66664f7 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_IS_IN_USE` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.php b/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.php new file mode 100644 index 0000000..1374d1c --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_IS_IN_USE.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.de.md b/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.de.md new file mode 100644 index 0000000..6203256 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_IS_PERMITTED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.php b/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.php new file mode 100644 index 0000000..76697b1 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_IS_PERMITTED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.de.md b/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.de.md new file mode 100644 index 0000000..629a37f --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_LIST_FUNCTIONS` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.php b/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.php new file mode 100644 index 0000000..2927429 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_FUNCTIONS.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.de.md b/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.de.md new file mode 100644 index 0000000..87bdfb2 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_LIST_QUERY` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.php b/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.php new file mode 100644 index 0000000..51eade4 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_QUERY.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.de.md b/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.de.md new file mode 100644 index 0000000..6febf9d --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_LIST_TOOLBAR` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.php b/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.php new file mode 100644 index 0000000..1787f1d --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_LIST_TOOLBAR.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_MOVED.de.md b/pages/extensionpoints/medienpool/MEDIA_MOVED.de.md new file mode 100644 index 0000000..441c8f8 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_MOVED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_MOVED` + +**Übergabewerte** + +``` +Subject: $title +Parameter: keine +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_MOVED.php b/pages/extensionpoints/medienpool/MEDIA_MOVED.php new file mode 100644 index 0000000..03c3430 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_MOVED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.de.md b/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.de.md new file mode 100644 index 0000000..54b8acc --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_TOIMAGE` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.php b/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.php new file mode 100644 index 0000000..a29c197 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_TOIMAGE.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_UPDATED.de.md b/pages/extensionpoints/medienpool/MEDIA_UPDATED.de.md new file mode 100644 index 0000000..e549d93 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_UPDATED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_UPDATED.php b/pages/extensionpoints/medienpool/MEDIA_UPDATED.php new file mode 100644 index 0000000..45b14bf --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.de.md b/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.de.md new file mode 100644 index 0000000..2f95535 --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `MEDIA_URL_REWRITE` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.php b/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.php new file mode 100644 index 0000000..6f6eaeb --- /dev/null +++ b/pages/extensionpoints/medienpool/MEDIA_URL_REWRITE.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.de.md b/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.de.md new file mode 100644 index 0000000..1ef12d6 --- /dev/null +++ b/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `PAGE_MEDIAPOOL_HEADER` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.php b/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.php new file mode 100644 index 0000000..329f0b7 --- /dev/null +++ b/pages/extensionpoints/medienpool/PAGE_MEDIAPOOL_HEADER.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/medienpool/README.de.md b/pages/extensionpoints/medienpool/README.de.md new file mode 100644 index 0000000..09d869f --- /dev/null +++ b/pages/extensionpoints/medienpool/README.de.md @@ -0,0 +1,3 @@ +## Medienpool Extension Points + +Extension Points des `mediapool` AddOns \ No newline at end of file diff --git a/pages/extensionpoints/metainfo/ART_META_UPDATED.de.md b/pages/extensionpoints/metainfo/ART_META_UPDATED.de.md new file mode 100644 index 0000000..b9fc9b2 --- /dev/null +++ b/pages/extensionpoints/metainfo/ART_META_UPDATED.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `ART_META_UPDATED` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/metainfo/ART_META_UPDATED.php b/pages/extensionpoints/metainfo/ART_META_UPDATED.php new file mode 100644 index 0000000..5f220d3 --- /dev/null +++ b/pages/extensionpoints/metainfo/ART_META_UPDATED.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.de.md b/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.de.md new file mode 100644 index 0000000..5ce8b22 --- /dev/null +++ b/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `METAINFO_CUSTOM_FIELD` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.php b/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.php new file mode 100644 index 0000000..4936362 --- /dev/null +++ b/pages/extensionpoints/metainfo/METAINFO_CUSTOM_FIELD.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.de.md b/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.de.md new file mode 100644 index 0000000..c136faf --- /dev/null +++ b/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.de.md @@ -0,0 +1,9 @@ + +**Beschreibung:** `METAINFO_TYPE_FIELDS` + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.php b/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.php new file mode 100644 index 0000000..006fb45 --- /dev/null +++ b/pages/extensionpoints/metainfo/METAINFO_TYPE_FIELDS.php @@ -0,0 +1,7 @@ +' . $var . '', $ep->getName()); +}); diff --git a/pages/extensionpoints/metainfo/README.de.md b/pages/extensionpoints/metainfo/README.de.md new file mode 100644 index 0000000..45d8f1c --- /dev/null +++ b/pages/extensionpoints/metainfo/README.de.md @@ -0,0 +1 @@ +## Metainfo Extension Points diff --git a/pages/extensionpoints/structure/ART_ADDED.de.md b/pages/extensionpoints/structure/ART_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_ADDED.php b/pages/extensionpoints/structure/ART_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_COPIED.de.md b/pages/extensionpoints/structure/ART_COPIED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_COPIED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_COPIED.php b/pages/extensionpoints/structure/ART_COPIED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_DELETED.de.md b/pages/extensionpoints/structure/ART_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_DELETED.php b/pages/extensionpoints/structure/ART_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_IS_PERMITTED.de.md b/pages/extensionpoints/structure/ART_IS_PERMITTED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_IS_PERMITTED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_IS_PERMITTED.php b/pages/extensionpoints/structure/ART_IS_PERMITTED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_MOVED.de.md b/pages/extensionpoints/structure/ART_MOVED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_MOVED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_MOVED.php b/pages/extensionpoints/structure/ART_MOVED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_PRE_DELETED.de.md b/pages/extensionpoints/structure/ART_PRE_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_PRE_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_PRE_DELETED.php b/pages/extensionpoints/structure/ART_PRE_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_STATUS.de.md b/pages/extensionpoints/structure/ART_STATUS.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_STATUS.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_STATUS.php b/pages/extensionpoints/structure/ART_STATUS.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_STATUS_TYPES.de.md b/pages/extensionpoints/structure/ART_STATUS_TYPES.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_STATUS_TYPES.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_STATUS_TYPES.php b/pages/extensionpoints/structure/ART_STATUS_TYPES.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_TO_CAT.de.md b/pages/extensionpoints/structure/ART_TO_CAT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_TO_CAT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_TO_CAT.php b/pages/extensionpoints/structure/ART_TO_CAT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_TO_STARTARTICLE.de.md b/pages/extensionpoints/structure/ART_TO_STARTARTICLE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_TO_STARTARTICLE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_TO_STARTARTICLE.php b/pages/extensionpoints/structure/ART_TO_STARTARTICLE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/ART_UPDATED.de.md b/pages/extensionpoints/structure/ART_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/ART_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/ART_UPDATED.php b/pages/extensionpoints/structure/ART_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_ADDED.de.md b/pages/extensionpoints/structure/CAT_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_ADDED.php b/pages/extensionpoints/structure/CAT_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_DELETED.de.md b/pages/extensionpoints/structure/CAT_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_DELETED.php b/pages/extensionpoints/structure/CAT_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_FORM_ADD.de.md b/pages/extensionpoints/structure/CAT_FORM_ADD.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_FORM_ADD.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_FORM_ADD.php b/pages/extensionpoints/structure/CAT_FORM_ADD.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_FORM_BUTTONS.de.md b/pages/extensionpoints/structure/CAT_FORM_BUTTONS.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_FORM_BUTTONS.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_FORM_BUTTONS.php b/pages/extensionpoints/structure/CAT_FORM_BUTTONS.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_FORM_EDIT.de.md b/pages/extensionpoints/structure/CAT_FORM_EDIT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_FORM_EDIT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_FORM_EDIT.php b/pages/extensionpoints/structure/CAT_FORM_EDIT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_IS_PERMITTED.de.md b/pages/extensionpoints/structure/CAT_IS_PERMITTED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_IS_PERMITTED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_IS_PERMITTED.php b/pages/extensionpoints/structure/CAT_IS_PERMITTED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_MOVED.de.md b/pages/extensionpoints/structure/CAT_MOVED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_MOVED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_MOVED.php b/pages/extensionpoints/structure/CAT_MOVED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_STATUS.de.md b/pages/extensionpoints/structure/CAT_STATUS.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_STATUS.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_STATUS.php b/pages/extensionpoints/structure/CAT_STATUS.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_STATUS_TYPES.de.md b/pages/extensionpoints/structure/CAT_STATUS_TYPES.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_STATUS_TYPES.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_STATUS_TYPES.php b/pages/extensionpoints/structure/CAT_STATUS_TYPES.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_TO_ART.de.md b/pages/extensionpoints/structure/CAT_TO_ART.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_TO_ART.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_TO_ART.php b/pages/extensionpoints/structure/CAT_TO_ART.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/CAT_UPDATED.de.md b/pages/extensionpoints/structure/CAT_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/CAT_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/CAT_UPDATED.php b/pages/extensionpoints/structure/CAT_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.de.md b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.php b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.de.md b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.php b/pages/extensionpoints/structure/PAGE_STRUCTURE_HEADER_PRE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure/README.de.md b/pages/extensionpoints/structure/README.de.md new file mode 100644 index 0000000..ba03c43 --- /dev/null +++ b/pages/extensionpoints/structure/README.de.md @@ -0,0 +1,3 @@ +## Structure Extension Points + +Extension Points des structure-AddOns diff --git a/pages/extensionpoints/structure/URL_REWRITE.de.md b/pages/extensionpoints/structure/URL_REWRITE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure/URL_REWRITE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure/URL_REWRITE.php b/pages/extensionpoints/structure/URL_REWRITE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/ART_CONTENT.de.md b/pages/extensionpoints/structure_content/ART_CONTENT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/ART_CONTENT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/ART_CONTENT.php b/pages/extensionpoints/structure_content/ART_CONTENT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/ART_INIT.de.md b/pages/extensionpoints/structure_content/ART_INIT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/ART_INIT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/ART_INIT.php b/pages/extensionpoints/structure_content/ART_INIT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/ART_SLICES_COPY.de.md b/pages/extensionpoints/structure_content/ART_SLICES_COPY.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/ART_SLICES_COPY.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/ART_SLICES_COPY.php b/pages/extensionpoints/structure_content/ART_SLICES_COPY.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/ART_SLICES_QUERY.de.md b/pages/extensionpoints/structure_content/ART_SLICES_QUERY.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/ART_SLICES_QUERY.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/ART_SLICES_QUERY.php b/pages/extensionpoints/structure_content/ART_SLICES_QUERY.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/GENERATE_FILTER.de.md b/pages/extensionpoints/structure_content/GENERATE_FILTER.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/GENERATE_FILTER.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/GENERATE_FILTER.php b/pages/extensionpoints/structure_content/GENERATE_FILTER.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/MODULE_ADDED.de.md b/pages/extensionpoints/structure_content/MODULE_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/MODULE_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/MODULE_ADDED.php b/pages/extensionpoints/structure_content/MODULE_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/MODULE_DELETED.de.md b/pages/extensionpoints/structure_content/MODULE_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/MODULE_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/MODULE_DELETED.php b/pages/extensionpoints/structure_content/MODULE_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/MODULE_UPDATED.de.md b/pages/extensionpoints/structure_content/MODULE_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/MODULE_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/MODULE_UPDATED.php b/pages/extensionpoints/structure_content/MODULE_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/README.de.md b/pages/extensionpoints/structure_content/README.de.md new file mode 100644 index 0000000..f837ff2 --- /dev/null +++ b/pages/extensionpoints/structure_content/README.de.md @@ -0,0 +1 @@ +## Structure Content Extension Points diff --git a/pages/extensionpoints/structure_content/SLICE_ADD.de.md b/pages/extensionpoints/structure_content/SLICE_ADD.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_ADD.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_ADD.php b/pages/extensionpoints/structure_content/SLICE_ADD.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_ADDED.de.md b/pages/extensionpoints/structure_content/SLICE_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_ADDED.php b/pages/extensionpoints/structure_content/SLICE_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_DELETE.de.md b/pages/extensionpoints/structure_content/SLICE_DELETE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_DELETE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_DELETE.php b/pages/extensionpoints/structure_content/SLICE_DELETE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_DELETED.de.md b/pages/extensionpoints/structure_content/SLICE_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_DELETED.php b/pages/extensionpoints/structure_content/SLICE_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_MOVE.de.md b/pages/extensionpoints/structure_content/SLICE_MOVE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_MOVE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_MOVE.php b/pages/extensionpoints/structure_content/SLICE_MOVE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_OUTPUT.de.md b/pages/extensionpoints/structure_content/SLICE_OUTPUT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_OUTPUT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_OUTPUT.php b/pages/extensionpoints/structure_content/SLICE_OUTPUT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_SHOW.de.md b/pages/extensionpoints/structure_content/SLICE_SHOW.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_SHOW.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_SHOW.php b/pages/extensionpoints/structure_content/SLICE_SHOW.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_UPDATE.de.md b/pages/extensionpoints/structure_content/SLICE_UPDATE.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_UPDATE.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_UPDATE.php b/pages/extensionpoints/structure_content/SLICE_UPDATE.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/SLICE_UPDATED.de.md b/pages/extensionpoints/structure_content/SLICE_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/SLICE_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/SLICE_UPDATED.php b/pages/extensionpoints/structure_content/SLICE_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_AFTER_SLICES.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_ARTICLE_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_BEFORE_SLICES.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_HEADER.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_MODULE_SELECT.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SIDEBAR.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_MENU.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.de.md b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.php b/pages/extensionpoints/structure_content/STRUCTURE_CONTENT_SLICE_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/TEMPLATE_ADDED.de.md b/pages/extensionpoints/structure_content/TEMPLATE_ADDED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/TEMPLATE_ADDED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/TEMPLATE_ADDED.php b/pages/extensionpoints/structure_content/TEMPLATE_ADDED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/TEMPLATE_DELETED.de.md b/pages/extensionpoints/structure_content/TEMPLATE_DELETED.de.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/TEMPLATE_DELETED.de.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/TEMPLATE_DELETED.php b/pages/extensionpoints/structure_content/TEMPLATE_DELETED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/structure_content/TEMPLATE_UPDATED.md b/pages/extensionpoints/structure_content/TEMPLATE_UPDATED.md new file mode 100644 index 0000000..11519d7 --- /dev/null +++ b/pages/extensionpoints/structure_content/TEMPLATE_UPDATED.md @@ -0,0 +1,10 @@ + +**Beschreibung:** ... + + +**Übergabewerte** + +``` +Subject: ... +Parameter: ... +``` diff --git a/pages/extensionpoints/structure_content/TEMPLATE_UPDATED.php b/pages/extensionpoints/structure_content/TEMPLATE_UPDATED.php new file mode 100644 index 0000000..e69de29 diff --git a/pages/extensionpoints/yform/README.de.md b/pages/extensionpoints/yform/README.de.md new file mode 100644 index 0000000..1d8da20 --- /dev/null +++ b/pages/extensionpoints/yform/README.de.md @@ -0,0 +1,3 @@ +## yform Extension Points + +Extension Points des `yform` AddOns diff --git a/pages/extensionpoints/yrewrite/README.de.md b/pages/extensionpoints/yrewrite/README.de.md new file mode 100644 index 0000000..dbfd280 --- /dev/null +++ b/pages/extensionpoints/yrewrite/README.de.md @@ -0,0 +1,3 @@ +## yrewrite Extension Points + +Extension Points des `yrewrite` AddOns diff --git a/pages/index.php b/pages/index.php index 30a4e5e..784809a 100644 --- a/pages/index.php +++ b/pages/index.php @@ -12,5 +12,5 @@ $subpage = rex_be_controller::getCurrentPagePart(2); // Subpages können über diese Methode eingebunden werden. So ist sichergestellt, dass auch Subpages funktionieren, -// die von anderen Addons/Plugins hinzugefügt wurden +// die von anderen AddOns/Plugins hinzugefügt wurden rex_be_controller::includeCurrentPageSubPath(); diff --git a/pages/intro.properties.php b/pages/intro.properties.php new file mode 100644 index 0000000..371fb6e --- /dev/null +++ b/pages/intro.properties.php @@ -0,0 +1,66 @@ +parseWithToc(rex_file::get($path)); +$fragment = new rex_fragment(); +$fragment->setVar('content', $content, false); +$fragment->setVar('toc', $toc, false); +$content = $fragment->parse('core/page/docs.php'); + +// Ausgabe mit Fragment section +$fragment = new rex_fragment(); +$fragment->setVar('title', $addon->i18n('properties_title'), false); +$fragment->setVar('body', $content, false); +echo $fragment->parse('core/page/section.php'); + +// Im AddOn-Scope können die Properties über $this->getProperty($key) abgefragt werden +// Empfohlen ist aber die Verwendung über rex_addon::get('addonname')->getProperty('varname')) +// siehe https://github.com/redaxo/redaxo/pull/2482 + +echo '$this->getProperty(\'package\');'; +dump($this->getProperty('package')); + +echo '$this->getProperty(\'version\');'; +dump($this->getProperty('version')); + +echo '$this->getProperty(\'supportpage\');'; +dump($this->getProperty('supportpage')); + +echo '$this->getProperty(\'page\');'; +dump($this->getProperty('page')); + +// In Templates/Modulen oder anderen AddOns können die Porperties des demo-AddOns +// über rex_addon::get('addonname')->getProperty('varname')) abgefragt werden + +echo 'rex_addon::get(\'demo_addon\')->getProperty(\'package\');'; +dump(rex_addon::get('demo_addon')->getProperty('package')); + +echo 'rex_addon::get(\'demo_addon\')->getProperty(\'version\');'; +dump(rex_addon::get('demo_addon')->getProperty('version')); + +echo 'rex_addon::get(\'demo_addon\')->getProperty(\'supportpage\');'; +dump(rex_addon::get('demo_addon')->getProperty('supportpage')); + +echo 'rex_addon::get(\'demo_addon\')->getProperty(\'page\');'; +dump(rex_addon::get('demo_addon')->getProperty('page')); + +// Alternativ AddOn-Objekt zwischenspeichern ... +$addon = rex_addon::get('demo_addon'); +$package = $addon->getProperty('package'); +$version = $addon->getProperty('version'); + +// AddOn-Properties können auch gesetzt werden +//$addon->setProperty('myProperty', 'myValue'); diff --git a/pages/main.properties.php b/pages/main.properties.php deleted file mode 100644 index b845c88..0000000 --- a/pages/main.properties.php +++ /dev/null @@ -1,37 +0,0 @@ -getProperty($key) abgefragt werden -// Empfohlen ist aber die Verwendung über rex_addon::get('addonname')->getProperty('varname')) -// siehe https://github.com/redaxo/redaxo/pull/2482 - -echo 'dump($this->getProperty(\'package\'));'; -dump($this->getProperty('package')); - -echo 'dump($this->getProperty(\'version\'));'; -dump($this->getProperty('version')); - -echo 'dump($this->getProperty(\'supportpage\'));'; -dump($this->getProperty('supportpage')); - -echo 'dump($this->getProperty(\'page\'));'; -dump($this->getProperty('page')); - -// In Templates/Modulen oder anderen Addons können die Porperties -// über rex_addon::get('addonname')->getProperty('varname')) abgefragt werden - -echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'package\'));'; -dump(rex_addon::get('demo_addon')->getProperty('package')); - -echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'version\'));'; -dump(rex_addon::get('demo_addon')->getProperty('version')); - -echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'supportpage\'));'; -dump(rex_addon::get('demo_addon')->getProperty('supportpage')); - -echo 'dump(rex_addon::get(\'demo_addon\')->getProperty(\'page\'));'; -dump(rex_addon::get('demo_addon')->getProperty('page')); - -// Alternativ Addon-Objekt zwischenspeichern ... -$addon = rex_addon::get('demo_addon'); -$package = $addon->getProperty('package'); -$version = $addon->getProperty('version'); diff --git a/pages/system.log.demo_addon.php b/pages/system.log.demo_addon.php new file mode 100644 index 0000000..b4f8a88 --- /dev/null +++ b/pages/system.log.demo_addon.php @@ -0,0 +1,6 @@ + Logdateien` +// Siehe Eintrag in der `package.yml` unter `pages:` + +require __DIR__ . '/eps.logfile.php'; diff --git a/pages/tables.updatetable.php b/pages/tables.updatetable.php index 4f54083..1e0bbd4 100644 --- a/pages/tables.updatetable.php +++ b/pages/tables.updatetable.php @@ -3,7 +3,7 @@ $addon = rex_addon::get('demo_addon'); // Custom-Function zum prüfen des Geburtsdatums -// Diese function kann auch in der boot.php des Addons notiert werden +// Diese function kann auch in der boot.php des AddOns notiert werden // Return `false` wenn das Datum ungültig ist, `true` wenn das Datum gültig ist function demoAddon_checkBirthdate($date) { @@ -34,7 +34,7 @@ function demoAddon_checkBirthdate($date) if (-1 == $start) { $start = rex_request('Demo-Liste_start', 'int', 0); } -rex_addon::get('demo_addon')->setProperty('list_start', $start); +$addon->setProperty('list_start', $start); // Bei vorhandener Funktion (add/edit/delete) eine rex_sql-Instanz erstellen // https://www.redaxo.org/doku/master/datenbank-queries @@ -135,13 +135,14 @@ function demoAddon_checkBirthdate($date) $field->setLabel($addon->i18n('thead_birthdate')); $field->setAttribute('style', 'width: 150px;'); $field->setAttribute('maxlength', '10'); - // MySQL-Datum in deutsches Datum umformatieren + // MySQL-Datum für die Ausgabe in deutsches Datum umformatieren // gespeichert wird im Format YYYY-MM-DD, angezeigt im Format tt.mm.jjjj if ($field->getValue()) { $field->setValue(date('d.m.Y', strtotime($field->getValue()))); } $field->getValidator()->add('notEmpty', 'Das Feld Geburtsdatum darf nicht leer sein.'); // Custom-Function `demoAddon_checkBirthdate` für die Prüfung des Geburtsdatums + // Die Function ist oben am Anfang definiert $field->getValidator()->add('custom', 'Geburtsdatum ungültig', 'demoAddon_checkBirthdate'); // Select Status @@ -160,6 +161,8 @@ function demoAddon_checkBirthdate($date) $fragment->setVar('body', $content, false); $content = $fragment->parse('core/page/section.php'); echo $content; + + // Exit - da sonst noch die Liste nach dem Formular generiert wird exit; } @@ -171,7 +174,7 @@ function demoAddon_checkBirthdate($date) // Alle ausgewählten Felder des Queries werden als Spalten in der Liste angezeigt // Die einzelnen Spalten können noch verändert/erweitert werden ... siehe weiter unten -// Mit dem Parameter $rowsPerPage (hier 30) kann die Anzahl der Listeinträge festgelegt werden +// Mit dem Parameter $rowsPerPage kann die Anzahl der Listeinträge festgelegt werden // Sind mehr Datensätze vorhanden wird automatisch eine Pagination ausgegeben $list = rex_list::factory( ' @@ -179,7 +182,7 @@ function demoAddon_checkBirthdate($date) FROM ' . rex::getTable('demo_addon') . ' ORDER by `name` ASC, `vorname` ASC ', - 3, 'Demo-Liste', false); + $addon->getProperty('tableupdate.listEntries', 30), 'Demo-Liste', false); // Spalten können mit removeColumn('columnname') entfernt werden //$list->removeColumn('id'); @@ -196,7 +199,7 @@ function demoAddon_checkBirthdate($date) // Spalte mit Editier-Icon am Zeilen-Anfang hinzufügen (Parameter 3 bei addColumn = 0) // $thIcon: Icon für die Überschriftenzeile mit Link 'func=add' // $tdIcon: Icon für die Datenzeilen mit Link 'func=edit' -// zum ändern des Icons 'rex-icon-editmode' durch das gewünschte Icon ersetzen +// zum ändern des Icons: 'rex-icon-editmode' durch das gewünschte Icon ersetzen $thIcon = 'i18n('list_create_new_entry'), 'add') . ' title="' . $addon->i18n('create_new_entry') . '">'; $tdIcon = ''; $list->addColumn($thIcon, $tdIcon, 0, ['###VALUE###', '###VALUE###']); @@ -241,6 +244,10 @@ function demoAddon_checkBirthdate($date) return $str; }); +// Spalte Vorname + Name, Felder klickbar zum editieren +$list->setColumnParams('vorname', ['func' => 'edit', 'id' => '###id###']); +$list->setColumnParams('name', ['func' => 'edit', 'id' => '###id###']); + // Spalte Geburtsdatum (birthdate) anpassen // In der Tabelle wird das Datum im Format YYYY-MM-DD gespeichert // Hier wird für die Anzeige auf das deutsche Datumsformat tt.mm.jjjj umgewandelt diff --git a/plugins/documentation/LICENSE b/plugins/documentation/LICENSE deleted file mode 100644 index 07a5775..0000000 --- a/plugins/documentation/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Friends Of REDAXO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/plugins/documentation/README.md b/plugins/documentation/README.md deleted file mode 100644 index 861a421..0000000 --- a/plugins/documentation/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Plugin "Dokumentation-Dummy" für REDAXO5-AddOns - -Das Plugin `dummy_documentation` dient als Basis für eine Hilfe/Dokumentation für REDAXO5-AddOns bei denen eine einfache README nicht ausreicht. -Für weitere Informationen zu diesem Plugin siehe [docs/de_de/main_navi.md](docs/de_de/main_navi.md) - ---- - -Inhaltsverzeichnis: [docs/de_de/main_navi.md](docs/de_de/main_navi.md) - -Vorlage zur Formatierung: [docs/de_de/_vorlage.md](docs/de_de/_vorlage.md) diff --git a/plugins/documentation/assets/documentation.css b/plugins/documentation/assets/documentation.css deleted file mode 100644 index 47932cf..0000000 --- a/plugins/documentation/assets/documentation.css +++ /dev/null @@ -1,184 +0,0 @@ -.addon_documentation h1 { - font-size: 22px; - margin-top: 5px; - margin-bottom: 20px; -} - -.addon_documentation h2 { - font-size: 16px; - margin-top: 40px; - text-transform: uppercase; - margin-bottom: 20px; - letter-spacing: 0.02em; - border-bottom: 1px solid #ccc; - padding: 13px 15px 10px; - background: #eee; -} - -.addon_documentation h3 { - margin-top: 40px; - margin-bottom: 5px; -} - -.addon_documentation blockquote { - margin: 20px 0; - background: #f3f6fb; -} - -.addon_documentation blockquote h2 { - margin: -10px -20px 20px; - background: transparent; - border-top: 1px #ccc; -} - -.addon_documentation ol { - padding-left: 18px; -} - -.addon_documentation ul { - margin-bottom: 10px; - padding-bottom: 5px; - padding-left: 16px; -} - -.addon_documentation ul li { - list-style-type: square; - list-style-position: outside; -} - -.addon_documentation ul ul { - padding-top: 5px; -} - -.addon_documentation ul ul li { - list-style-type: circle; - list-style-position: outside; - padding-bottom: 0; -} - -.addon_documentation p, -.addon_documentation li { - font-size: 14px; - line-height: 1.6; -} - -.addon_documentation hr { - margin-top: 40px; - border-top: 1px solid #ddd; -} - -/* Listen */ - -.addon_documentation ul ul, -.addon_documentation ul ul ul, -.addon_documentation ul ul ul ul { - margin-bottom: 0; -} - -/* Tabellen */ - -.addon_documentation table { - width: 100%; - max-width: 100%; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 20px 0 30px; -} - -.addon_documentation th { - background: #eee; - border-collapse: separate; -} - -.addon_documentation th, -.addon_documentation td { - border: 1px solid #ddd; - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - font-size: 13px; -} - -.addon_documentation tr:nth-child(even) { - background: #f7f7f7; -} - -.addon_documentation table tr:hover { - background: #dff5ee; -} - -/* Navigation */ - -.addon_documentation-navi ul { - margin-bottom: 10px; - padding-left: 0; -} - -.addon_documentation-navi ul li { - list-style-type: none; - background: #eee; - padding: 0 15px; - line-height: 40px; -} - -.addon_documentation-navi ul { - background: #fff; - margin-left: -15px; - margin-right: -15px; -} - -.addon_documentation-navi ul li li { - list-style-type: none; - background: #fff; - line-height: 30px; -} - -.addon_documentation-navi ul li li:before { - font-family: FontAwesome; - content: "\f0a9"; - margin-right: 10px; -} - -.addon_documentation-navi ul li li.current:before { - color: #2674b2; -} - -.addon_documentation-navi a.current { - font-weight: bold; -} - -.addon_documentation-navi a:focus { - text-decoration: none; -} - -/* externe Links */ - -.addon_documentation a.extern { - margin-right: 5px; -} - -.addon_documentation a.extern:after { - font-family: FontAwesome; - content: "\f08e"; - margin-left: 5px; -} - -.addon_documentation a[href^="http://"], -.addon_documentation a[href^="https://"] { - margin-right: 5px; -} - -.addon_documentation a[href^="http://"] sup, -.addon_documentation a[href^="https://"] sup { - font-size: 0.8em; -} - -/* Sprachwähler */ - -.addon_documentation #doclang { - width: 70px; - position: absolute; - right: 20px; - top: 6px; - padding: 5px 0; -} diff --git a/plugins/documentation/assets/documentation.js b/plugins/documentation/assets/documentation.js deleted file mode 100644 index 2606448..0000000 --- a/plugins/documentation/assets/documentation.js +++ /dev/null @@ -1,143 +0,0 @@ -// Url-Parameter bereitstellen -function getUrlParameter(sParam, url) { - var sPageURL = window.location.search.substring(1); - if (url) sPageURL = url; - var sURLVariables = sPageURL.split("&"); - for (var i = 0; i < sURLVariables.length; i++) { - var sParameterName = sURLVariables[i].split("="); - if (sParameterName[0] == sParam) { - return sParameterName[1]; - } - } - return ""; -} - -// Back/Next Browser Button -window.onpopstate = function (e) { - var character = e.state; - if (character == null) { - $document = getUrlParameter("document_file", document.location.href); - if ($document == "") { - elem = document.createElement("a"); - elem.setAttribute( - "href", - document.location.href + "&document_file=main_intro.md" - ); - load_doc(elem, false); - } - } else { - elem = document.createElement("a"); - elem.setAttribute("href", document.location.href); - load_doc(elem, false); - } -}; - -// Dokument per Ajax laden -function load_doc(elem, dopush) { - $("div.addon_documentation-navi li").removeClass("current"); - $("div.addon_documentation-navi a").removeClass("current"); - $(elem).addClass("current"); - $(elem).parent().addClass("current"); - $("html, body").animate({ - scrollTop: 0 - }, 200); - - $url = $(elem).attr("href") + "&ajax=true"; - $target = $("div.addon_documentation-content").find("div.panel-body"); - $doctitle = $("div.addon_documentation-content").find("#doc-file-name"); - $document = getUrlParameter("document_file", $url); - $($doctitle).html($document); - - $($target).html( - '
' - ); - - $.ajax({ - type: "GET", - url: $url, - cache: true, - dataType: "html", - success: function (response) { - $($target).html(response); - // Externe Links in neuem Fenster - $("section.addon_documentation") - .find("a") - .each(function () { - var a = new RegExp("/" + window.location.host + "/"); - if (!a.test(this.href) && this.href) { - $(this).addClass("extern"); - $(this).click(function (event) { - event.preventDefault(); - event.stopPropagation(); - window.open(this.href, "_blank"); - }); - } - }); - // Bei internen Links Dokument laden - $("div.addon_documentation-content a.doclink").on("click", function ( - event, - container - ) { - if (!$(this).hasClass("extern")) { - load_doc($(this), true); - } - event.preventDefault(); - return false; - }); - // Link in der Navigaton hervorheben - $("div.addon_documentation-navi") - .find('a[href$="' + $document + '"]') - .each(function () { - if ($(this).html() != "") { - $(this).addClass("current"); - $(this).parent().addClass("current"); - } - }); - if (dopush) { - history.pushState($document, $document, $(elem).attr("href")); - } - } - }).fail(function (jqXHR, textStatus) { - $($target).html( - '
AJAX-Error: ' + textStatus + '
' + $url + "
" - ); - }); -} - -$(document).on("rex:ready", function (event, container) { - // Externe Links in neuem Fenster - $("section.addon_documentation") - .find("a") - .each(function () { - var a = new RegExp("/" + window.location.host + "/"); - if (!a.test(this.href) && this.href) { - $(this).addClass("extern"); - $(this).click(function (event) { - event.preventDefault(); - event.stopPropagation(); - window.open(this.href, "_blank"); - }); - } - }); - - // Links in der Navigation, interne Links in Dokumenten - $( - "div.addon_documentation-navi a, div.addon_documentation-content a.doclink" - ).on("click", function (event, container) { - if (!$(this).hasClass("extern")) { - load_doc($(this), true); - } - event.preventDefault(); - return false; - }); - // Link in Navigation hervorheben - $("div.addon_documentation-navi a.current").each(function () { - $(this).parent().addClass("current"); - }); - - // Language select - $("#doclang").change(function () { - this.form.submit(); - }); - -}); // end rex:ready diff --git a/plugins/documentation/boot.php b/plugins/documentation/boot.php deleted file mode 100644 index 987e06f..0000000 --- a/plugins/documentation/boot.php +++ /dev/null @@ -1,8 +0,0 @@ -getProperty('package')) { - rex_view::addCssFile($this->getAssetsUrl('documentation.css')); - rex_view::addJsFile($this->getAssetsUrl('documentation.js')); - } -} diff --git a/plugins/documentation/docs/de_de/_vorlage.md b/plugins/documentation/docs/de_de/_vorlage.md deleted file mode 100644 index 093cc89..0000000 --- a/plugins/documentation/docs/de_de/_vorlage.md +++ /dev/null @@ -1,201 +0,0 @@ -# Markdown-Vorlage - Seitenüberschrift - -- [Kopfbereich](#kopfbereich) -- [Überschriften](#ueberschriften) -- [Links](#links) -- [Listen](#listen) -- [Tabellen](#tabellen) -- [Code](#code) -- [Hinweise](#hinweise) -- [Anker 3](#anker-3) - - [Anker 3a](#anker-3a) - - [Anker 3b](#anker-3b) - - [Anker 3c](#anker-3c) -- [Anker 4](#anker-4) - ---- - - - -## Kopfbereich - -1. Seitenüberschrift als h1 auszeichnen -2. TOC Liste mit Anker erstellen, Die erste Ebene wird im Text mit `h2`, die zweite Ebene mit `h3` ausgezeichnet. - -### Beispiel Kopfbereich - - # Seitenüberschrift - - - [Überschrift](#anker-zur-ueberschrift) - - [Anker 2](#anker-2) - - [Anker 2a](#anker2a) - - [Anker 3](#anker-3) - - [Anker 3a](#anker-3a) - - [Anker 3b](#anker-3b) - - [Anker 3c](#anker-3c) - - [Anker 4](#anker-4) - - - -## Überschriften mit Anker setzen - -Die Sprunganker müssen an der betreffenden Stelle gesetzt werden. - -### Beispiel Sprunganker - - - ## Überschrift - ---- - - - -## Links - -Der verlinkte Text wird in eckige Klammern gesetzt, der Link dahinter in runden Klammern. - -### Beispiel Link - - [Linktitel](markdown-datei.md) - -### Ausgabe Link - -[Linktitel](markdown-datei.md) - ---- - - - -## Listen - -### Beispiel Liste - - - Listenpunkt 1 - - Listenpunkt 2 - - Listenpunkt 3 - - Listenpunkt 4 - -### Ausgabe Liste - -- Listenpunkt 1 -- Listenpunkt 2 -- Listenpunkt 3 -- Listenpunkt 4 - -**Beispiel numerierte Liste** (wichtig ist die Zahl mit Punkt, es kann aber auch ordentlich durchnumeriert werden) - - 1. Listenpunkt 1 - 1. Listenpunkt 2 - 1. Listenpunkt 3 - 1. Listenpunkt 4 - - oder - - 1. Listenpunkt 1 - 2. Listenpunkt 2 - 3. Listenpunkt 3 - 4. Listenpunkt 4 - -### Ausgabe Liste - -1. Listenpunkt 1 -2. Listenpunkt 2 -3. Listenpunkt 3 -4. Listenpunkt 4 - ---- - - - -## Tabellen - -### Beispiel Tabelle - -``` -Alt | Neu ------- | ------ -`$REX['SERVERNAME']` | `rex::getServername()` -``` - -### Ausgabe Tabelle - -| Alt | Neu | -| -------------------- | ---------------------- | -| `$REX['SERVERNAME']` | `rex::getServername()` | - ---- - - - -## Code - -### Beispiel Code Block - -```php - - -## Hinweise - -Für Hinweise könnten wir die Blockquote-Formatierung verwenden. - -### Beispiel Hinweis - - > **Hinweis:** Aliquam arcu lectus, imperdiet sollicitudin vehicula ultricies, pellentesque at nunc. Pellentesque ut consectetur nisl. In finibus efficitur turpis, posuere facilisis dui tristique ac. - -### Ausgabe Hinweis - -> **Hinweis:** Aliquam arcu lectus, imperdiet sollicitudin vehicula ultricies, pellentesque at nunc. Pellentesque ut consectetur nisl. In finibus efficitur turpis, posuere facilisis dui tristique ac. - ---- - -## Kennzeichnung von offenen Punkten bzw. in Arbeit - -### Beispiel - - - Hilfe / FAQ - - [Wo finde ich Hilfe?](help_where.md) (in Arbeit) - - [FAQ-Liste](help_faq.md) (offen) - -**Ausgabe ** - -- Hilfe / FAQ - - [Wo finde ich Hilfe?](help_where.md) (in Arbeit) - - [FAQ-Liste](help_faq.md) (offen) - -## Images - -Images werden wie folgt in Markdown-Dateien eingebunden: - -![Alt-Text](bilddatei.png) - -### Beispiel - -![FriendsOfREDAXO](assets/for.png) - -### Ausgabe - -![FriendsOfREDAXO](assets/for.png) - ---- - -## Markdown-Referenz - -[Daring Fireball: Markdown Syntax Documentation](https://daringfireball.net/projects/markdown/syntax) -[markdown.de · Markdown Syntax-Dokumentation](http://markdown.de/) -[Mastering Markdown · GitHub Guides](https://guides.github.com/features/mastering-markdown/) diff --git a/plugins/documentation/docs/de_de/assets/for.png b/plugins/documentation/docs/de_de/assets/for.png deleted file mode 100644 index 0f30e1df983594df87a2d7341bf6da8837e5b43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7549 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 TFm>d-00000NkvXXu0mjfKvcCz diff --git a/plugins/documentation/docs/de_de/assets/for_small.png b/plugins/documentation/docs/de_de/assets/for_small.png deleted file mode 100644 index 42ab91acd5ba8f544a9cd71dd6c73406312ea8ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12246 zcmV;{FDcN8P)#(4EAb|dt z|A-6gE79E6g-us|043Emkm$Oarj2_)m9EnjO4V&|jr@95sk_OpO1pFz`xHrPN@+$n z{ae@Red&w=r&Wf`KkMf6TU7}u`n_RDI2MS(WtGqwOu?eapwD4Au3>@4ih)=f3;j0i z?TKSmsT2EqW2p365u~-aZE9X5sg(`J(p5IAT6ZEU*ToL)TBPk9wCzvXtQRtxk@=JfZ{>36C}+ky%C$YA^vmoM^vqJV(T=z56$)S~G)q{z}9 z!eBQovWY&>Nj#DUEm%I~I&@p+9|G9~n&>EqM{l(ev5J!!y`p6(v8X?qS=<#)El#BM znn+5oNNajYTDDr#=>%dsA4T}}$Kbu~%Sas@Uca%_`te16`Of%}u8O&B%ht%%j+x(E8gEdG1$89@_((+Xq*EA-V#|B~ORqFK$_=e{N%?`@i^e z?@vIos7Mm2HY=%&zCQFF+=WQ#a@hSv@Y_tW=YzFRhW@v>(DtO)uG|yP=*siQhS3p9 z;KC{|@~kQWp_^AEtwow)IRUynDd9uWl)+MwR2Au%MOI?(bcL&r2NM2RT31+F7<|TE zmYMjH03vr^aVQET#ftd89SFbpTj;SMB&!3GBM%aRWR(phHQo7CbMXFXT3=V=w|#*m zFK)a)0U32eiv_GWBFPMT0x5WltwPs&$oBY17qdMgBJX+XNbud}!Nhvj(}xFQ=!vAT zxypyye7gXR!IN_ODf`Omh`7GqXSd+8MSh{@j|@c7I-Ec>t(mH89M+bscIfdiLfe0d z_}(1^j4Hq|GAYOm2>qRfz zh3_G!!9|AJZBeki#9^!~ac(=@A74*zgpCXU8CyKnJcyMgE^Msu!bXNVtr_FmA)WLa z1HZ7yiG_u3a!67*(jODx4AIXy2ZE(mvN@1yJAlx$ze1+BP5c`<(D*vuB1jejBpDmI zKC9KvQ0js|92|P>+NHj~ArI!TiA z+BQU9dz7Rh1Ig|@zK)ANu2!b>4f(W4p)n8Q#x;j5;hP zDE6UP<}Y765&m*8p;a?Tr*glIxN|U?#-oP@gj!lw=sXP+mX6S1A0GIZufR@VSnYP$ z98NgsXOG7VyW0ar%|ri*RwP>9g-jA4S*)k?i)ux>;|Kze{5yO%eg?A32ZOw?oStMR zpP_|eANMR8+_%N=HTzh2scnYB?-HdAy;^qKuLEU6<*h=2ivsXNM`Yay9Zu) zt26p34jyG`=Ag*)L2yN=AG)}nA)-S>%PMiBqLBMSj$|s4@C2gC3-=5ePd?fl`}5JE z)CH`QReAdU3cuAsH<>8WkRtm~zhM&!$`(M&q^G=If~0D6Jd{pn@RcwAZ`3WSMlzWa zUY8ac!0_+CE8>&W>SyuH=4bJZ7rTuc-S3_L|o(pclk3bFe zAwJNH*z1oXvhz={7FEDew+4tQWta9l*uOcoqtTtrv`Z4{fFSs*rK7-?$mC zJ@E((B08(e@g!q$?Lz$am-pdY_x=#~|M%~NI=yhiT9#@Tf2gT_=4IH)`79tiW`bN|YfuItx*uzT1V`x3J z9|zxj1xI(kB|bME7{YLqYWnmiKL)$qhX4CdpG8}HC;s@SXK>XO7m2@@6c^&A8?M3+ zfBFEt9=CZb*1Tk6ICjwq6!)f^O_x|d2@0tz*tavCZ{ zQPH$s-x5z;MV`<#eUbFWSX$4^r6X8Wm2ve8yHZvp$x|8r-Mvr?{j?wpiYuy7TD=IX zw_HvtB26(v5JSD4=swnjuBLgik#0LWjZDlf}TQFj{r#8ZD4AVWwF#L!AfF2n_Cf_FlGBPzt zr;;Pw?QpwMSyDQ}H-L{XOV!KZc&pcJ#M(A!zX-;VnnX;fKZLAto^}*l`@q zd)~p}ciuqf@fM2uHCWt!p#t4*AH@z{NEAQh`+Znd=7H0qASLoH64?$N%N8%fb1hLM zQyFnztJRL1KJ#Tf)2^fENEc$sG#oYyO0NAR^!9dQI-O#Xl#mD^74)+<*p2x9m*H4- z=?LZdg`AE-il@@!WfW!w$P4#>j~*Ut`WtWgs#;nDMK{JKtc{i;Ho|=7Kw>-KD=kL>Nz!sA9{oNZ4j>i@izqw5QTw5zc;~uLnsk#Q;h4h7%OUrw}D>7p`j7J(jZs>>G~bv7rza<=X`?MJ`fh zBqgUY83&H^D=xM*kbAqL*ojC=Lq{ly7DA{iOw5tigr}!uuPsT+7{$bYBNf@xG>{lK zy)!$b&M9f)^2Fg?u(y)yx2VzdC`P%TOnluibu$}VempCQxYpBxz+*oWU@)f|=_LD? zh?BiY#-p@=l4(7lB63|a24X4f>W-j!FeW&zv80ghq{B&SE6*vR%4LUMY@_Sz7>;Mq zPrz`7crcbmn25<~ds*fxBT33&oRfoCQ|3lvsatq!Da{y{vC>(i!(P+ULKl`6I7Owj zEtnw5ih~>*PRp~69UIWnk2YEA86xS;%oQLy-AFtSaZKd(KSHfo$_z!n(*@zV3TLN) z&ux|Av8(XgE$}%M6gaKeu1Ar+`SVcdy+(>eo(ya<7D0iMhMhbomX@j9YAX?t(<6I& zLO9qT73mU%e&@Bx$ah%8v*=ld$Z;nVw>-~^3Xe@l8Gk02)C52sLt%ssD~6*9!QtCm z12{4e6SbB_eupSmYZFA8;y&40jK`*8b!i?}7P|$baC*NrkPzVWv#?6z%anVpz4b-* zalxJyAa<7%Ml{MkBNE-Muuu$9+jt&4iY96oTuXLSD9#Zx=a8&N~$#ey(Dd z1(gMP(2wkdZ$UNu%a);QFo<5_?k2V5<$AA`T747aSQL6OIq^{I{Q;!S;TdJ={p ze1HfTO`35-B5k0EBxVzFVYSajE^d6n1v3y#2Qcq#gkigu=^^np2eK8S%gHml8 z&Lm^Q##<()u#myu_TzhT*SG!?4ds3;Bj*+1ha zWT~w3+5{~Qk>q)7a)@a&lLFSHfK-+gDSLy~jdHaMmo3dlp~p(7Yg6W!xPyaL0;kH? zmE{rVd4vwmm0!o}HsPa<2=Y#67@b5MwjHB^7#)R|x-H`-6({9tvR&o1OAw@h^mq4t z8z2AjznEk+G@*jHYlcBc<<#`d6W4-SWYQ*W!MLzvSJoCR_B-U4XP~hrPcH834%h7O z4xN7<8Ou7aMfmuq5{Dz;(b-g+-GQNuf>M7TZeCfAi)#xh;8KVaahhkvT+V8U4I@_r zA3rjPE)shV`o_!nvNW=KEO46kVGcJMiQ$e?;-B&5TE~63*N%&$4@g zrJGgrOKkx>*))hsFFP2vVoB^eK7=Fv5oCn>IeGG# zIgsn+BJDmyHqNEwIXlq0e>ZkMxlO3yi*LRY@o4yr606Kqo#Ya~bUc9eU=j_*E-duf z5l(9BO5KX0vUZ&dm38ds@e9hVQgQ3PV~7L;h?4&w4dq^gg800cWGseMA}%6uPJ>9a z_?NjMz+x3duu?$C6+64jB`SDMcOF!S8=dZIq>Afc%k#m?-q;kG-kkkl6*m*lWwc@` zU$jIpmxZ3|nFsHOzo-l=H(g516q%6X6UhuGI9aN8wui8*D=dCyCx_i>Q3BA6CDF9L z&>~AMbCNny4?NrThiA7Z!{LZ6m57lvq(=%&!lxIJutc1%lK9)j&z$DA(7#zd#p4Nt z;tbM&@Tw#tHpc-%#c^_wRGh_Mf>iYi*cPvawY(0J-92HZmq}CNwqmv=QVudpNJ6Zn zR!v&#c=RXVg}0yx3sc>Mq5J3|4E1)AWKpcrdjd&1 zW4m8~T38NSO(SfzYhWp@F)MSV77Z;;f@26Lp>UM_V9=Q<7+_NkN+RVUOY%w8npLkx zR`Lo;%i+l{M4-P%Fi(=6|Do@H6V>&Ng5fwm;`i&iCgKk9%AX%O$&HOiU|+HUnYGs- zk;;hYV(=K0H58xZh|j-^r;YOqozgaKE&wSiDrnuZdE;+h*#7D@%g^78Rhus+0CHSp zau5@uZq<4``HKzs8+v>n`s zu4Byz4D=w`eiX42O;F!_3f7Wp*lSl4IIE!+S3@UhDsm7YUN_xS7P%tMi$#LN2oCho z_1Z-`pH-^UQm8~_OV;^F5m+237Lf#}GWv*piKg_8Lvd}|>33-| zY&!GL;b3? zSnk%)+185wjy6Hm;9x&uWY0J$DO3q}C^9FH_5_LWEDdbWEOsZYiELju3>O8y1qFUo zRFt8yz83wKB5Xg>2PHx(HarA9G7LQ#7nug3x)M>?maK>G`n$z7xlon!{@9+}+E6S4 z=3KyPRyNVMz@s*h-5ba~)8)19*-1!uPakYn>rlh8y2qm7@ZA$71anEi#tSb-)slKV z{lL%h`qPi$>1TJ~nyW7%Ad+YrFu^c$ce>Eme2VHC8T>`d8?m@?t+-BTcz{4@LEE8y z0;K-q&4@m?5ASUM4PK@ACXqDzqoka=B7lWm}YYIu&Tvq@mx!O*b15O8>P6zyMJGLGO zVu9a*O_i?Gp8e0wLF{Z95Z#l8mi4a4QHdXX4O%1sNBsq+WQY=OdQ5EOqByIu)P>9h z4q|^q+dxut=79L~975#RG}OJ`ndx~umCmf6(vu;>$XveVx|=cBxeoU{-HIX2DncTW zyyH}Zp3MhklX-gf-~7PlYc?&TXY}Q@p2%r{@V$P!cMzk)ATAdqTlOHn_eIlY+;F#OoEr^BPC8bXdPHJ1 zIYG2a9@qJE5{K*>Fxgp#Q?FRs@VK5yub);N%fu!T4_du=uDO>Y^2Df~XlX>ArBjlM zr~lqeRtmR@U2akbPaW29=Sm;^4)xSU<9j*LpU*6B>KWnEX1jxtA@ZJ3PkSW$04-5u?6Ozk|Tu4umSR>(4QaaY< zm~Ga89Hm9@*-Q%_j%O;42jbI8B{Q-1_Jn7ZHJ$3cITh*PAl&EQ0EL^YC+K?A=zR?Y zMm}eWr}5m0w0^!hUUvpIWJQTXs0|+f+R+*+>maV@VNcs6eMT%1oM2-KnQQ6DsQ`8g z9y>UUjTLS@O0O>;4~rbq=Q#OyQ}nc9N*YqjG$*#`S@-e<+lG@hl4_1N5AWED zUsAB-FDXZHRSn7()}eIaB9xR@ASgR=A}$G_B#|}Mvi+{}qrVjS%wcEMTkf$5>Bs@V z9#oCrj@_hsjZwg{bYuoQkZL;!_lE1nq)$edqPf}OspcUppzE$JbEAsDRSX8i*hqNS z&|8{k1xQ1&LjZDcP+O>FA_zY73(+!Zs5X&n>TEfJUEKC!u_DjwgW@Yj+E)%+$wH__ z6;QlIVu}?6q{t0TV@~629;}jFq|`58kf}{^+`Hn?>qyUTU0&y zV|vua1BTT%H`P^o?V@N^?Xx!!{%d9p$f3cM7_{l=?5-Vp_&*_a9)jXnlp@Z3Wkx*r(HruyudLw?IC)6 ziKvT6N_a+Ig_$wd0=+_AxwqVo=|sr6)clEHLR^Q`VDaiw*QzUO-CJh`h$q}BW-JPu zp4(QG>MIDk@>V31NmYzBXA43(h0Xv$QO2fEA^{4r29Rpqi`cGbVXba}bLAHC%Ec!E zjINy%K)8Ov?WA@2j&XBPEG@**aCCD2moD;Hv3H+`k)!~#a+#3$X*WRdjs_I_q%?hB zZGrXKS=$h=5r?9supr;{Blng~KZ(T?EBpEfZ|LsnyK!(RusWGcDJ(APXmCc?qPgEy zRz?6yHot@9(Os|uxG=0YrdUHryKVjIDEs2j_wc6FBGOJpTw_m^S zVAGxb{R2zvHrvEbFW0MW=B!4tWw$uh;z~G{vpU-d#a}GkW*(543)eYA*J2}HL0(TX zqfZj!NTP|3>oD=5LE!Dj#EuSDU!ibNX5uY!T(i2|`QjC|-fgS~EwVB{fQ)uY7?@N# z4F{o=@Atmzr}INMfAGgY{OPZs-GA`NYKOxyWt5jwXPJR6gkSs(qHjF~`{H$QtYCFk z%TxYY?@XW7W3u61QS3$|1%Igtzz~gm7MrMiHt*eqeXqWNrd@9$5gHPIvlLfB$;+R% zz00Y@zgS&#Z)u)oT0AvpJ2^->&x#h#vwLJ~2EOv8yFdEr&wcIra3osBb?s?gC#%kQ z+&K2`b0Y3xug0-rin9m>;(`eGyby@nF!`~z~5D@ZKG zprwMvbv1|n@e6l-^xOCT=o0_({(Mqrr9xV! zQfKUtaCY}HQdJh&9A}V3bDudj&22=7-rkA5Bn_?m-$g7KFr|U_KFKmshFsnJ@(L{6 zcnLaFNhs5_8|?00zs&b_YOX$^xkALLm?TJM4u5bS94<3-S z9gmZKUQ0ug)sul2t20YhoelRO^3p@(2s{lN&$X|(2-fn&rbMMqS7*6Kic1#yDDqa3 zh77yYjx?#)&SOoY>H5%HuVSFHUA&VU|G0l^tgY09RNQ>mKOj?4gA@BYps4b+Y{$k* z_rtaM_8r`bGTkQbdD(o1TS-MX2^rBuB7@5=zTm+Fhng1te%n*uB=2nE`9e}d7LtO@ zP>-1dI|V!*rzW-*#E+BLlQ{4iEEP*kbym9?vePq0o$+V^@2%CaARlQ%LbSgZyLLT; z{ja_#Hl<0$VnQX^CbDs~h7_saYySE(SiE*4x(0?tp({JYJE=EE?@NDlRl&dU=){~2 zeaqJvpCOfcMT3U>6f8&eaqV-ii{D&t$#ceyMt({a4@3iCp@K+H(@G`fiNfK16R7plx&e*s-*f$*r7m%6Z_!hwUk-@)EjUL*s(Q*=4X zqG!u?nlzloYUw<27k%*Wh@lp)KDSvemL|8g5uF3mNrPulvr~hYi%)QED z*N!AaG_PeJS{A$iDEQ)?@B9zk^1vt;~N!@F`5&=J7>Ki`gyW6h#HiJ64U1=EV=<1th& zTZwD``ff4o!yP7E<0x@i(HBW!q5=a;hubR0Ke49pyS!~-N;S?MAPfd?QDL)M5DW%| z${Ld!^SYDweC_jhe(j#`J$Lv>%W76%Vi6Sex-Yy5R-W=rn9T>yRhL4h05SOF&!DFg zB9}C&cgCRcNh&LG;1whfy@pO6Fv>QETP)UTuY+e^T>b*w`k60@F$x~D$Q|sh?dy$B z_*t&ue{hNSmsMW-{#a_}F8Z8q&tznSDwYN^b(CrHk?3vC^_zV)&Sx5{i4Er0f;;@Lvr$DF^|O) zsHv_v^!d;H^_@108q>(5@?8EG<`#RWNEF8+wyJvMf9Q)MjXzQSVZxH)EDj#8xb%*{ z#L5e{AQ6p>QB7uJoC5y@eOPR~H&(cRQQ}scc^6a;M#nqnU1jluCX-3zdE8jFq8=QX zXEGB9ZZ4MtciwTsi>i_Sn}2_O;I}G8;-bTRyle9YG9}f>zx|5{Jo*Eqds2 z(0I`mxa8J51u)}j04~)QyRGPsB*%co@lBCa?Z0xd_dZU_T9w)Hx_Tz|f`UD9TC6@? ze91-FxM3~)KCk$@ZHmv^tuksayQ$Zm?$8O0Nt2)~8H%?U{@eaR><*D?+i&ivHJ2&* zL>y(cOL60;J}36pGA2mNbKuJpQhR%(Q=)PM7cKStq}pda5f=$WY5oCW5Hj?zJZZ#T z<@NPTu#sHcWy_Wl*OQy8L8MNmj8nKyA58nd`%>4B(wU5GokoWW+Ys5|f&Z4zBlyJ6 z5kK;VF#2=is*@MxaC?Li=K&uEXX2!4){ap0pUG}j&eBnur*>Rk=lL=Bt!c)5?n)}g z#8?`V!c!?NDaPU@btDbzP+II4(@g0!@2aDX)DWgp?VM8h#oK-Vay*c%cUz|~+MGjT zZ_9h*-H@JfBDVWQb63$b*od7+-FOt@y1)G#D(aSH?Z)KlIcGe3>Sym1F7Qs z-|G8!vDNr28Qa{rhB)=oI|V4=mmfCc5LuZa7!fSrxCK{y_^(7DIBh2etfFj?dLrUG zORit$`#u3Q%#C?x`mG6*0#Z?Waxg}0wnFy7)G#yWMoBXFkRny}{kA}I5lJooF#qxu|w^XJ$Ol2=z&y%;y%^@Z%n!1Ps(h)0|j zp?ZtGmP1uO>;LR*4^O*&_R2c%>;UNtCoxw?wnx}i>{wIlp3L!8^XW{LN^6&_nOp3&!qPLs_Ib_D0Pv5j5x z_F($91HGxOxt=8>yQ`2n>ShS3NoE1!MGC+OxLC$~HG$K``?%XYlO2B(8?CkMLGbY( zLy8WIsauX$l)M6{g$qRKmE##Tzl=cfLMP{-fN;BUu~%&2G}GpAetNPYyRKO5y1=2z zshNC!b(w2+5|WrB)JHEO-=RG0u}O~%#QRa!0Dj6}@BnF4Na%}R?*Dyt`^V^@!YO_km$Bk0o{ z9(wzE6|VaYLr#T~bJry^se~LIOk%DNmXbhRU$(0=v6E=+m1Y4dq?6y0GZr{QYM+KRSc_lR*-tK4j$$ba?B*8J@FNSv}$T>sB{M-_qB-*&csFmFI7oL~M&r zYkaFCjNRSgtlE@L1JFUi@2$&=L<8MqsSk6L8L4$`g?+U}L1;EvlBI?A*-3~pdR%#q zPhLoc$MR%}Tm4mf9_Qcq+PuikRbFyY3xvaP>Q;jsq=r)&ywMq&a%`Ew@;j8r36zj1 zoftDeXB`+0MlPkLOKcBTPDzjuqnBVFQ3lK~f){Jj%t}hguB#$OM?>xSt(y`8O zm-lIBfJe2@Iy*p^Th1DB2$Y@e@gKGgr|-5X(pkH&_>vlOMUM@~#TKu@glRW+-3|TyeoODx%>9~JtA2PcZ25)NuGs-{B9J=!Tq<+?qpf?hBf)zy zJI=nGARCvMTZixL2#If3xV$#+7N1?-HWylaZTT#1h<*-c$+@27cgpXS<|+4ehB9Ba z%%kecWr;^NO3P-9H3K8{7~YLRm5o=5TEwJ>C`kk-*EU1| z@a8qS3S=g`3$~X1K9nk-?WL>ge4iu9*ez21hH+LlpO_R7+qtl+qtwZgLfgZnwjQA< z{#J`DokDaI3L{7Kj7jt;5t_e|M-ZM~d5^Dn%B(D=bz|gP6-I+6Vi9^}H{WYh0~;${ zUtf@C{gL0HXq?kJi(%0eeOdas-H(J_-(^L%ue}Tb-$L~kvUh&m9s=wCm{NGhxh_Zx}MLW_H3$he{pr0>p}iz90vAW zv7$OvuIF4IOzia)&i{C5KW^&^Wg2-lrTvdTSL)>fR$ zRZj|t(<g&+U(&DYZ=RO6Rif(F?2HpRe@V9%qkA?2~Am`?ac5 zanXC>;2z?2<*p|#sqsAc!m-fDT(e{pUXQ9s+S&!KA6{PT{W=-=AU8)F1_0?jvD7If z#G>H6aAiAng7*qzS#A=F+rHX65z2b!{=4Fzh3FJ{y5J@0bb_4VYJT(koO`pMJO7- zusU!12bOq${@9`6yIiAGS1!O?QQ~}Tb9LV5RRzcRtGzkEI~Vnpxlf&_@6AQFx z;GUiBk!#5VtK_(Z13a%??Y_7s?@Q|!m;qiSWzL*S?++}d280*&UOh;icHi2N|Bau# z(f11*tzu2N>(@&P?f+QlRC~;C^1=J^n0(u7Nq)~hI1~JeMcxPY^~N`qy49x_`Rxz$ kcj}(D5&rw^`2PY70Q5*|6qz **Hinweis:** -> Solltest Du noch keinen Zugang zu **Slack** haben kannst Du dich [hier](http://www.redaxo.org/slack/) selbst einladen. -> -> **Hinweis:** -> Plugin `documentation` auf Github -> [github.com/FriendsOfREDAXO/demo_addon](https://github.com/FriendsOfREDAXO/demo_addon) - ---- - -» Weiter zur **[FAQ-Liste](help_faq.md)** diff --git a/plugins/documentation/docs/de_de/howto_copy.md b/plugins/documentation/docs/de_de/howto_copy.md deleted file mode 100644 index debe99e..0000000 --- a/plugins/documentation/docs/de_de/howto_copy.md +++ /dev/null @@ -1,23 +0,0 @@ -# Plugin `documentation` in ein eigenes Addon integrieren - ---- - -1. Download des [demo-Addons](https://github.com/FriendsOfREDAXO/demo_addon) von Github. Das Addon findest Du [hier](https://github.com/FriendsOfREDAXO/demo_addon) oder im Installer -2. Im eigenen Addon das Verzeichnis **plugins** anlegen (falls noch nicht vorhanden) -3. Das plugin `documentation` vom `demo_addon` in das Verzeichnis **plugins** des eigenen Addons kopieren -4. Anpassen der `package.yml`, siehe [Anpassungen](howto_customize.md) -5. die eigene Dokumentation schreiben, alle Dateien z.B. im Verzeichnis `/docs/de_de/` - ja richtig gelesen ... *DOKUMENTIEREN* ;-) -6. Plugin `documentation` deines Addons installieren -7. Nochmal alles gegenchecken ... -8. Fertig! - ---- - -Die hier bestehende Dokumentation kann sehr gut als Basis für die eigene Dokumentation verwendet werden. - -> **Hinweis:** -> Vor dem installieren des plugins `documentation` muss auf jeden Fall der Eintrag **package** in der `package.yml` angepasst werden, da sonst das installieren nicht klappt. - ---- - -» Weiter zu **[Anpassungen](howto_customize.md)** diff --git a/plugins/documentation/docs/de_de/howto_customize.md b/plugins/documentation/docs/de_de/howto_customize.md deleted file mode 100644 index c229e22..0000000 --- a/plugins/documentation/docs/de_de/howto_customize.md +++ /dev/null @@ -1,80 +0,0 @@ -# Anpassungen - -* [Anpassen der `package.yml`](#package) -* [Anpassen der `README.md`](#readme) -* [Dokumentation](#dokumentation) - - - -## Anpassen der `package.yml` - -Beispiel: - - package: demo_addon/documentation - version: '1.0.0' - author: 'Friends Of REDAXO' - supportpage: github.com/FriendsOfREDAXO/demo_addon - - documentationlang: 'de_de' - defaultnavi: 'main_navi.md' - defaultintro: 'main_intro.md' - - page: - title: 'translate:documentation_menu_entry' - icon: rex-icon fa-book - perm: admin[] - -> **Hinweis:** -> Die `package.yml` sollte komplett an dein Addon und deine Dokumentation angepasst sein. Wichtig ist es den Eintrag **package** anzupassen da sonst die Installation des Plugins nicht funktioniert! - -Eintrag|Beschreibung ------- | ------ -package|`demo_addon/documentation` muss angepasst werden in `DeinAddonName/documentation` da sonst die Installation des Plugins in der Addon-Verwaltung nicht funktioniert. -version|Versionsnummer deiner Dokumentation -author|Angaben über den Autor -supportpage|Supportpage für dein Addon -documentationlang|Sprache der Dokumentation _(optional)_ Standardmässig wird die bei dem Benutzer eingestellte Backendsprache verwendet. Bei mehreren vorhandenen Sprachen wird ein Sprachwähler angezeigt. Wenn es die Dokumentation aber nur in einer Sprache gibt dann sollte hier die Sprache angegeben werden. -defaultnavi|Default-Dateiname für die Navigation. Default ist `main_navi.md` wenn nichts angegeben wird -defaultintro|Default-Dateiname für die Einstiegsseite. Default ist `main_intro.md` wenn nichts angegeben wird -page: title|Dieser Text wird im Reiter deiner Addon-Navigation angezeigt - ---- - - - -## Anpassen der `README.md` - -> **Hinweis:** -> Die `README.md` wird auf Github und in der Addon-Verwaltung bei Klick auf das Fragezeichen angezeigt. - -Beispiel: - - # Plugin "Dokumentation-Dummy" für REDAXO5-AddOns - - Das Plugin `dummy_documentation` dient als Basis für eine Hilfe/Dokumentation für REDAXO5-AddOns bei denen eine einfache README nicht ausreicht. - Für weitere Informationen zu diesem Plugin siehe [docs/de_de/main_navi.md](docs/de_de/main_navi.md) - - --- - - Inhaltsverzeichnis: [docs/de_de/main_navi.md](docs/de_de/main_navi.md) - - Vorlage zur Formatierung: [docs/de_de/_vorlage.md](docs/de_de/_vorlage.md) - ---- - - - -## Dokumentation - -Jetzt geht es ans eingemachte. Im Verzeichnis `/docs/de_de/` kann diese bestehende Dokumentation vom Plugin `documentation` als Basis verwendet und entsprechend angepasst werden. - -Weitere nützliche Informationen findest Du evtl. noch unter [Hilfe / FAQ](help_where.md) oder in der [Markdown-Vorlage](_vorlage.md). - -Viel Spass !! - -> **Hinweis:** -> Alle Dateien der Dokumentation liegen in _einem_ Verzeichnis z.B. `/docs/de_de/`. Bei der Namensvergabe für die Dateien empfiehlt es sich die zusammengehörigen Dateien zu gruppieren z.B. `main_*.md` ... `howto_*.md`. - ---- - -» Weiter zu **[Hilfe / FAQ](help_where.md)** diff --git a/plugins/documentation/docs/de_de/main_folder.md b/plugins/documentation/docs/de_de/main_folder.md deleted file mode 100644 index 86f287f..0000000 --- a/plugins/documentation/docs/de_de/main_folder.md +++ /dev/null @@ -1,50 +0,0 @@ -# Ordner-Struktur - -## Struktur - -- assets - - documentation.css - - documentation.js -- docs - - `de_de` - - `main_intro.md` - - `main_navi.md` - - ... - - en_gb -- lang - - de_de.lang - - en_gb.lang -- pages - - index.php -- boot.php -- `package.yml` -- `README.md` - -> **Hinweis:** -> Die für die Dokumentation wichtigen bzw. anzupassenden Verzeichnisse und Dateien sind `hervorgehoben`. - -Verzeichnis / Datei|Beschreibung ------- | ------ -**assets**|Verzeichnis für die Addon-Ressourcen -- documentation.css|CSS für die Dokumentation im REDAXO-Backend -- documentation.js|JavaScript für die Dokumentation im REDAXO-Backend -**docs**|Verzeichnis für die Dokumentationen in verschiedenen Sprachen, die Namen der Unterordner müssen den REDAXO-Backendsprachen entsprechen (z.B. de_de, en_gb) -`de_de`|Verzeichnis Dokumentation in deutsch, hier liegen alle Markdown-Dateien und Bilder der Dokumentation -- `main_intro.md`|Einstiegsseite der Dokumentation, diese Datei wird beim ersten Aufruf der Dokumentation im Backend angezeigt (default, kann in der package.yml angepasst werden) -- `main_navi.md`|Navigation der Dokumentation (default, kann in der package.yml angepasst werden) -**en_gb**|Verzeichnis Dokumentation in englisch -**lang**|Verzeichnis Sprachdateien des Addons -- de_de.lang|Addon-Texte in deutsch -- en_gb.lang|Addon-Texte in englisch -**pages**|Verzeichnis Seiten des Addons -- index.php|Hier spielt die Musik, parsen der Markdown-Dateien, anpassen für das REDAXO-Backend und Ausgabe -boot.php|Laden der Addon-Ressourcen -`package.yml`|Addon-Konfiguration, hier können auch die Default-Dateinamen angepasst werden -`README.md`|Readme-Datei die auf Github und im REDAXO-Backend (Addon-Hilfe) angezeigt wird - -> **Hinweis:** -> Alle Dateien der Dokumentation liegen in _einem_ Verzeichnis z.B. `/docs/de_de/`. Bei der Namensvergabe für die Dateien empfiehlt es sich die zusammengehörigen Dateien zu gruppieren z.B. `main_*.md` ... `howto_*.md`. - ---- - -» Weiter zur **[Plugin-Integration](howto_copy.md)** diff --git a/plugins/documentation/docs/de_de/main_intro.md b/plugins/documentation/docs/de_de/main_intro.md deleted file mode 100644 index b8fd885..0000000 --- a/plugins/documentation/docs/de_de/main_intro.md +++ /dev/null @@ -1,29 +0,0 @@ -# Plugin "Dokumentation-Dummy" für REDAXO5-AddOns - -Das Plugin `documentation` dient als Basis für eine Hilfe/Dokumentation für REDAXO5-AddOns bei denen eine einfache README nicht ausreicht. - -`documentation` basiert auf dem documentation-Plugin des Addons [search_it](https://github.com/tyrant88/search_it) von @tyrant88 (Norbert Micheel) und erfunden hat's der @dergel (Jan Kristinus) für die [Dokumentation](https://github.com/yakamara/redaxo_yform_docs) zum [YForm-Addon](https://github.com/yakamara/redaxo_yform). - -## Features - -- einfache [Integration](howto_copy.md) in eigene Addons -- Markdown Syntax, die Dokumentation ist auch auf Github verfügbar -- Automatische Verlinkung der Dateien im REDAXO-Backend -- Anzeige von Bildern im REDAXO-Backend, z.B. Screenshots -- Externe Links werden im REDAXO-Backend in einem neuen Fenster geöffnet - -## Systemvoraussetzungen - -- `PHP >= 5.6` -- `MySQL >= 5.0` -- `REDAXO >= 5.0` - ---- - -» Weiter zur **[Ordner-Struktur](main_folder.md)** - -

- -![FriendsOfREDAXO](assets/for.png) - -

diff --git a/plugins/documentation/docs/de_de/main_navi.md b/plugins/documentation/docs/de_de/main_navi.md deleted file mode 100644 index afdaecf..0000000 --- a/plugins/documentation/docs/de_de/main_navi.md +++ /dev/null @@ -1,31 +0,0 @@ -# Dokumentation-Dummy - -* Plugin `documentation` - * [Einführung](main_intro.md) - * [Ordner-Struktur](main_folder.md) -* Plugin-Integration - * [Plugin integrieren](howto_copy.md) - * [Anpassungen](howto_customize.md) -* Hilfe / FAQ - * [Wo finde ich Hilfe?](help_where.md) - * [FAQ-Liste](help_faq.md) -* Sonstiges - * [Markdown Vorlage](_vorlage.md) - ---- - -## Credits - -@dergel (Jan Kristinus) -@tyrant88 (Norbert Micheel) -@alexplusde (Alexander Walther) -@aeberhard (Andreas Eberhard) -@FriendsOfREDAXO - -

- -![demo_addon @FriendsOfREDAXO](assets/for_small.png) - -

- -[demo_addon @FriendsOfREDAXO](https://github.com/FriendsOfREDAXO/demo_addon) diff --git a/plugins/documentation/lang/de_de.lang b/plugins/documentation/lang/de_de.lang deleted file mode 100644 index 94e20e1..0000000 --- a/plugins/documentation/lang/de_de.lang +++ /dev/null @@ -1,9 +0,0 @@ -documentation_menu_entry = Dokumentation - -documentation_navigation_title = Navigation [ main_navi.md ] -documentation_content_title = Inhalt [ {0} ] - -documentation_noparser = Kein Markdown-Parser vorhanden! Bitte zuerst einen Parser installieren (Addon markitup oder textile) - -documentation_navinotfound = Navigations-Datei {0} wurde nicht gefunden!
Diese Datei ist zwingend erforderlich! -documentation_filenotfound = Datei {0} wurde nicht gefunden. Inhalt existiert (noch) nicht.

Wir freuen uns über Mithilfe: {1} diff --git a/plugins/documentation/lang/en_gb.lang b/plugins/documentation/lang/en_gb.lang deleted file mode 100644 index cec1a16..0000000 --- a/plugins/documentation/lang/en_gb.lang +++ /dev/null @@ -1,9 +0,0 @@ -documentation_menu_entry = Documentation - -documentation_navigation_title = Navigation [ main_navi.md ] -documentation_content_title = Contents [ {0} ] - -documentation_noparser = No Markdown Parser available! Please install a parser first (AddOn markitup or textile) - -documentation_navinotfound = Navigation-File {0} not found!
This file is required! -documentation_filenotfound = File {0} not found. Contents does not exist (yet).

We're happy if you want to help: {1} diff --git a/plugins/documentation/lang/es_es.lang b/plugins/documentation/lang/es_es.lang deleted file mode 100644 index 9147065..0000000 --- a/plugins/documentation/lang/es_es.lang +++ /dev/null @@ -1,9 +0,0 @@ -documentation_menu_entry = Documentación - -documentation_navigation_title = Navegación [main_navi.md] -documentation_content_title = Contenido [ {0} ] - -documentation_noparser = ¡No hay ningún Markdown parser disponible! Instale primero un analizador (addon markitup o textil) - -documentation_navinotfound = ¡No se encontró el archivo de navegación {0}!
¡Este archivo es obligatorio! -documentation_filenotfound = No se encontró el archivo {0}. El contenido no existe (aún).

Estamos entusiasmados con la ayuda: {1} diff --git a/plugins/documentation/lang/pt_br.lang b/plugins/documentation/lang/pt_br.lang deleted file mode 100644 index fed2d11..0000000 --- a/plugins/documentation/lang/pt_br.lang +++ /dev/null @@ -1,9 +0,0 @@ -documentation_menu_entry = Documentação - -documentation_navigation_title = Navegação [ main_navi.md ] -documentation_content_title = Conteúdo [ {0} ] - -documentation_noparser = Nenhum analisador Markdown disponível! Instale primeiro um analisador (AddOn markitup or textile) - -documentation_navinotfound = Arquivo de navegação {0} não localizado!
Este arquivo é necessário! -documentation_filenotfound = Arquivo {0} não localizado. Conteúdos não existem (ainda)

Ficaríamos felizes se você quisesse ajudar: {1} diff --git a/plugins/documentation/lang/sv_se.lang b/plugins/documentation/lang/sv_se.lang deleted file mode 100644 index 5c28e2a..0000000 --- a/plugins/documentation/lang/sv_se.lang +++ /dev/null @@ -1,9 +0,0 @@ -documentation_menu_entry = Dokumentation - -documentation_navigation_title = Navigation [ main_navi.md ] -documentation_content_title = Innehåll [ {0} ] - -documentation_noparser = Ingen Markdown Parser tillgänglig! Var god installera en parser först (AddOn markitup eller textil) - -documentation_navinotfound = Navigationsfilen {0} hittades inte!
Den här filen är obligatorisk! -documentation_filenotfound = Filen {0} hittades inte. Innehållet finns inte (ännu).

Vi är glada om du vill hjälpa till: {1} diff --git a/plugins/documentation/package.yml b/plugins/documentation/package.yml deleted file mode 100644 index c777e4b..0000000 --- a/plugins/documentation/package.yml +++ /dev/null @@ -1,13 +0,0 @@ -package: demo_addon/documentation -version: '1.0.0' -author: 'Friends Of REDAXO' -supportpage: https://github.com/FriendsOfREDAXO/demo_addon - -documentationlang: 'de_de' -defaultnavi: 'main_navi.md' -defaultintro: 'main_intro.md' - -page: - title: 'translate:documentation_menu_entry' - icon: rex-icon fa-book - perm: admin[] diff --git a/plugins/documentation/pages/index.php b/plugins/documentation/pages/index.php deleted file mode 100644 index 62d88d8..0000000 --- a/plugins/documentation/pages/index.php +++ /dev/null @@ -1,220 +0,0 @@ -getProperty('defaultnavi'); -if (!$default_navi) { - $default_navi = 'main_navi.md'; -} - -// Default Intro aus package.yml -$default_intro = $plugin->getProperty('defaultintro'); -if (!$default_intro) { - $default_intro = 'main_intro.md'; -} - -// User-Backend-Sprache -$lang = rex::getUser()->getLanguage(); -// Feste Sprache der Dokumentation aus package.yml -if ($plugin->getProperty('documentationlang')) { - $lang = $plugin->getProperty('documentationlang'); - if (!rex_session('addon_documentation[doclang]', 'string', '')) { - rex_set_session('addon_documentation[doclang]', $lang); - } -} - -// Bei mehreren verfügbaren Sprachen Sprachwähler aufbauen -$path = rex_path::plugin($addon, $docplugin , 'docs/'); -$docs = []; -foreach (glob($path . '*', GLOB_ONLYDIR) as $dir) { - if (file_exists($path . basename($dir) . '/' . $default_navi)) { - $docs[basename($dir)] = basename($dir); - } -} - -if (count($docs) > 1) { - if ($doclang) { - $lang = $doclang; - } - if (rex_session('addon_documentation[doclang]', 'string', '')) { - $lang = rex_session('addon_documentation[doclang]', 'string', ''); - } - $sel_lang = new rex_select(); - $sel_lang->setStyle('class="form-control"'); - $sel_lang->setName('doclang'); - $sel_lang->setId('doclang'); - $sel_lang->setSize(1); - $sel_lang->setSelected($lang); - foreach ($docs as $l) { - $sel_lang->addOption($l, $l); - } - $langselect = ' -
- - ' . $sel_lang->get() . ' -
- '; -} - -// Pfad zusammenbauen aus Addon + Plugin + Sprache -$path = rex_path::plugin($addon, $docplugin , 'docs/' . $lang . '/'); - -// vorhandene Dateien ermitteln -if ($ajax <> 'true') { - $files = []; - $filetypes = ['*.md', '*.gif', '*.png', '*.jpg', '*.jpeg']; - $search = [$path, "\\"]; - $replace = ['', '/']; - foreach ($filetypes as $mask) { - foreach (docsGlobRecursive($path . $mask, GLOB_BRACE) as $filename) { - $filename = str_replace($search, $replace, $filename); - $files[$filename] = $filename; - } - } - rex_set_session('addon_documentation[files]', $files); -} else { - $files = rex_session('addon_documentation[files]', 'array', null); -} - -// Bild ausgeben wenn Parameter document_image gesetzt ist und die Datei existiert -$docimage = rex_request('document_image', 'string', ''); -if ($docimage != '' && isset($files[$docimage])) { - while (ob_get_length()) { - ob_end_clean(); - } - - $filename = rex_request('document_image', 'string'); - $file_extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); - - $ctype = ''; - switch( $file_extension ) { - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpeg": - case "jpg": $ctype="image/jpeg"; break; - default: - } - if ($ctype) { - header('Content-type: ' . $ctype); - } - - rex_response::sendfile($path . rex_request('document_image', 'string'), $ctype); - exit; -} - -// Navigation aus $default_navi -if ($ajax <> 'true') { - $navi = trim(rex_file::get($path . $default_navi)); - if ($navi == '') { - $navi = rex_view::error(rex_i18n::rawMsg('documentation_navinotfound', $lang . '/' . $default_navi)); - } -} - -// Content aus Parameter document_file, sonst aus $default_intro -$file = rex_request('document_file', 'string', $default_intro); -$content = trim(rex_file::get($path . basename($file))); -if ($content == '') { - $content = rex_view::warning(rex_i18n::rawMsg('documentation_filenotfound', $lang . '/' . $file, $this->getProperty('supportpage'))); -} - -// Images im Inhalt ersetzen -// ![Alt-Text](bildname.png) -// ![Ein Screenshot](screenshot.png) -foreach ($files as $i_file) { - $search = '#\!\[(.*)\]\((' . $i_file . ')\)#'; - $replace = '$1'; - $content = preg_replace($search, $replace, $content); - $navi = preg_replace($search, $replace, $navi); -} - -// Parse Navigation & Content -if (class_exists('rex_markdown')) { - $parser = rex_markdown::factory(); - $navi = $parser->parse($navi); - $content = $parser->parse($content); -} else if (class_exists('Parsedown')) { - $parser = new Parsedown(); - $navi = $parser->text($navi); - $content = $parser->text($content); -} else { - $navi = ''; - $content = rex_view::error(rex_i18n::rawMsg('documentation_noparser')); -} - -// Links in Navigation ersetzen -if ($ajax <> 'true') { - foreach ($files as $i_file) { - $file = rex_request('document_file', 'string', $default_intro); - $current = ($i_file == $file) ? ' current' : ''; - $search = '#href="(' . $i_file . ')"#'; - $replace = 'href="index.php?page=' . $addon . '/' . $docplugin . '&document_file=$1"'; - $navi = preg_replace($search, $replace, $navi); - $navi = str_replace('document_file=' . $i_file .'"', 'document_file=' . $i_file .'" class="doclink' . $current . '"', $navi); - } -} - -// Links im Inhalt ersetzen -foreach ($files as $i_file) { - $search = '#href="(' . $i_file . ')"#'; - $replace = 'href="index.php?page=' . $addon . '/' . $docplugin . '&document_file=$1"'; - $content = preg_replace($search, $replace, $content); - $content = str_replace('document_file=' . $i_file .'"', 'document_file=' . $i_file .'" class="doclink"', $content); -} - -// Bei Parameter ajax=true nur den Inhalt ausgeben -if ($ajax == 'true') { - while (ob_get_length()) { - ob_end_clean(); - } - echo $content; - exit; -} - -// Navigation -$fragment = new rex_fragment(); -$fragment->setVar('title', rex_i18n::rawMsg('documentation_navigation_title'), false); -$fragment->setVar('body', $navi, false); -$navi = $fragment->parse('core/page/section.php'); - -// Inhalt -$fragment = new rex_fragment(); -$fragment->setVar('title', rex_i18n::rawMsg('documentation_content_title', $file), false); -$fragment->setVar('body', $content, false); -$content = $fragment->parse('core/page/section.php'); - -// Navigation und Inhalt ausgeben -echo ' -
-
-
' . $langselect . $navi . ' -
-
' . $content . ' -
-
-
- -'; diff --git a/uninstall.php b/uninstall.php index edad24f..d6dce6c 100644 --- a/uninstall.php +++ b/uninstall.php @@ -2,15 +2,17 @@ // Diese Datei ist keine Pflichtdatei mehr. -// Addon-Objekt bereitstellen und Data-Verzeichnis löschen (redaxo\data\addons\demo_addon\) -// Im addon-Kontext wäre auch $this->getDataPath() möglich +// AddOn-Objekt bereitstellen und Data-Verzeichnis löschen (redaxo/data/addons/demo_addon/) +// Im AddOn-Kontext wäre auch $this->getDataPath() möglich + $addon = rex_addon::get('demo_addon'); + rex_dir::delete($addon->getDataPath()); -// SQL-Anweisungen können auch weiterhin über die uninstall.sql ausgeführt werden. -// Empfohlen wird aber die SQL-Anweisungen in der uninstall.php auszuführen +// SQL-Anweisungen können auch weiterhin über die `uninstall.sql` ausgeführt werden. +// Empfohlen wird aber die SQL-Anweisungen in der `uninstall.php` auszuführen // Siehe auch https://redaxo.org/doku/master/datenbank-tabellen -// Die Tabelle des Demo-Addons wird hier gelöscht +// Die Tabelle des Demo-AddOns wird hier gelöscht rex_sql_table::get(rex::getTable('demo_addon'))->drop(); // Mit einer rex_functional_exception kann die Deistallation mit einer Fehlermeldung abgebrochen werden. @@ -19,9 +21,9 @@ throw new rex_functional_exception('Something is wrong'); } -// Alternativ kann ähnlich wie in R4 mit den Properties "install" und "installmsg" die Deinstallation als nicht erfolgreich markiert werden. +// Alternativ kann ähnlich wie in R4 mit den Properties `install` und `installmsg` die Deinstallation als nicht erfolgreich markiert werden. // Im Gegensatz zu R4 muss für eine erfolgreiche Deinstallation keine Property mehr gesetzt werden. if ($somethingIsWrong) { - $this->setProperty('installmsg', 'Something is wrong'); - $this->setProperty('install', true); + $addon->setProperty('installmsg', 'Something is wrong'); + $addon->setProperty('install', true); } diff --git a/update.php b/update.php index b766b93..c40c79c 100644 --- a/update.php +++ b/update.php @@ -1,12 +1,12 @@ getVersion(), '1.1', '<')) { // Änderungen für Nutzer die von Versionen kleiner 1.1 kommen } @@ -16,7 +16,7 @@ } // DB-Anpassungen: -// rex_sql_table::get(rex::getTable('my_table')) +// rex_sql_table::get(rex::getTable('demo_addon')) // ->ensureColumn(new rex_sql_column('new_column', 'varchar(255)')) // ->alter() // ;