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() . + ' +', + ); + } + } }