diff --git a/boot.php b/boot.php
index 1207e25..35f64d8 100644
--- a/boot.php
+++ b/boot.php
@@ -6,14 +6,10 @@
use rex_addon;
use rex_api_function;
use rex_cronjob_manager;
-use rex_csrf_token;
use rex_extension;
use rex_plugin;
-use rex_url;
use rex_yform_manager_dataset;
-use function count;
-
/**
* Tabellen in YForm mit eigener Model-Class.
*/
@@ -53,9 +49,6 @@
}
if (rex::isBackend()) {
- $addon = rex_addon::get('neues');
- $pages = $addon->getProperty('pages');
-
/**
* Individualiserte Liste für Enries.
*/
@@ -63,23 +56,6 @@
/**
* Plus(Add)-Button im Hauptmenü-Punkt des Addon bereitstellen.
- *
- * RexStan: Using $_REQUEST is forbidden, use rex_request::request() or rex_request() instead.
- * Kommentar: Für diese Nutzung ist keine rex-Alternative verfügbar
- * @phpstan-ignore-next-line
*/
- if (0 < count($_REQUEST)) {
- $_csrf_key = Entry::table()->getCSRFKey();
-
- $params = rex_csrf_token::factory($_csrf_key)->getUrlParams();
-
- $params['table_name'] = Entry::table()->getTableName(); // Tabellenname anpassen
- $params['rex_yform_manager_popup'] = '0';
- $params['func'] = 'add';
-
- $href = rex_url::backendPage('neues/entry', $params);
-
- $pages['neues']['title'] .= ' +';
- $addon->setProperty('pages', $pages);
- }
+ rex_extension::register('PAGES_PREPARED', Neues::epPagesPrepared(...));
}
diff --git a/lib/neues.php b/lib/neues.php
index 04f5642..7445085 100644
--- a/lib/neues.php
+++ b/lib/neues.php
@@ -2,9 +2,15 @@
namespace FriendsOfRedaxo\Neues;
+use rex;
+use rex_be_controller;
+use rex_be_page;
+use rex_csrf_token;
+use rex_extension_point;
use rex_fragment;
use rex_pager;
use rex_sql;
+use rex_url;
use const ENT_QUOTES;
@@ -62,9 +68,45 @@ public static function getEntry(int $postId): string
return $fragment->parse('neues/entry.php');
}
- /* Hilfsklasse für JSON-LD Fragmente */
- public static function htmlEncode($value)
+ /**
+ * Hilfsklasse für JSON-LD Fragmente.
+ *
+ * @api
+ */
+ public static function htmlEncode(string $value): string
{
return htmlentities($value, ENT_QUOTES, 'UTF-8');
}
+
+ /**
+ * EP-Callback für PAGES_PREPARED.
+ *
+ * Ergänzt den Backend-Menüpunkt um einen Plus-Button. Dies aber nur dann,
+ * wenn die Instanz nicht via Redaxo-Konsole aufgerufen wurde.
+ * (Prüfung zeitverzögert im EP, da die Konsole während der boot.php noch
+ * nicht initialisiert ist).
+ *
+ * @api
+ * @param rex_extension_point> $ep
+ */
+ public static function epPagesPrepared(rex_extension_point $ep): void
+ {
+ if (null === rex::getConsole()) {
+ $_csrf_key = Entry::table()->getCSRFKey();
+
+ $params = rex_csrf_token::factory($_csrf_key)->getUrlParams();
+
+ $params['table_name'] = Entry::table()->getTableName(); // Tabellenname anpassen
+ $params['rex_yform_manager_popup'] = '0';
+ $params['func'] = 'add';
+
+ $href = rex_url::backendPage('neues/entry', $params);
+
+ $neues = rex_be_controller::getPageObject('neues');
+ $neues->setTitle(
+ $neues->getTitle() .
+ ' +',
+ );
+ }
+ }
}