From ee2051eba62fe64bf81ea9e6c940b9e4548d7edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Szab=C3=B3?= Date: Tue, 27 Jun 2017 20:43:12 +0200 Subject: [PATCH] Feature/page types events (#1105) * Add function which replaces types and modularTypes * Replace Pages statics with AdminPlugin statics * Use Event's built-in items rather than data member * Add configration for hiding page types --- admin.php | 50 +++++++++++++++++++++++++ blueprints.yaml | 10 +++++ blueprints/admin/pages/modular_new.yaml | 2 +- blueprints/admin/pages/modular_raw.yaml | 2 +- blueprints/admin/pages/new.yaml | 2 +- blueprints/admin/pages/raw.yaml | 2 +- 6 files changed, 64 insertions(+), 4 deletions(-) diff --git a/admin.php b/admin.php index 60634e8b..b1a4fcab 100644 --- a/admin.php +++ b/admin.php @@ -823,4 +823,54 @@ class AdminPlugin extends Plugin $admin->addPermissions($permissions); } + /** + * Helper function to replace Pages::Types() + * and to provide an event to manipulate the data + * + * Dispatches 'onAdminPageTypes' event + * with 'types' data member which is a + * reference to the data + */ + public static function pagesTypes() + { + $types = Pages::types(); + + // First filter by configuration + $hideTypes = Grav::instance()['config']->get('plugins.admin.hide_page_types', []); + foreach ($hideTypes as $type) { + unset($types[$type]); + } + + // Allow manipulating of the data by event + $e = new Event(['types' => &$types]); + Grav::instance()->fireEvent('onAdminPageTypes', $e); + + return $types; + } + + /** + * Helper function to replace Pages::modularTypes() + * and to provide an event to manipulate the data + * + * Dispatches 'onAdminModularPageTypes' event + * with 'types' data member which is a + * reference to the data + */ + public static function pagesModularTypes() + { + $types = Pages::modularTypes(); + + // First filter by configuration + $hideTypes = Grav::instance()['config']->get('plugins.admin.hide_modular_page_types', []); + foreach ($hideTypes as $type) { + unset($types[$type]); + } + + // Allow manipulating of the data by event + $e = new Event(['types' => &$types]); + Grav::instance()->fireEvent('onAdminModularPageTypes', $e); + + return $types; + } + } diff --git a/blueprints.yaml b/blueprints.yaml index 8cc36b1d..e4914e2c 100644 --- a/blueprints.yaml +++ b/blueprints.yaml @@ -207,6 +207,16 @@ form: type: bool help: Ask the user confirmation when deleting a page + hide_page_types: + type: array + label: Hide page types in Admin + value_only: true + + hide_modular_page_types: + type: array + label: Hide modular page types in Admin + value_only: true + Dashboard: type: section title: Dashboard diff --git a/blueprints/admin/pages/modular_new.yaml b/blueprints/admin/pages/modular_new.yaml index 5cc7d192..85aa7b08 100644 --- a/blueprints/admin/pages/modular_new.yaml +++ b/blueprints/admin/pages/modular_new.yaml @@ -38,7 +38,7 @@ form: label: PLUGIN_ADMIN.MODULAR_TEMPLATE help: PLUGIN_ADMIN.PAGE_FILE_HELP default: default - data-options@: '\Grav\Common\Page\Pages::modularTypes' + data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes' validate: required: true diff --git a/blueprints/admin/pages/modular_raw.yaml b/blueprints/admin/pages/modular_raw.yaml index 5e7af1e6..ed055eb4 100644 --- a/blueprints/admin/pages/modular_raw.yaml +++ b/blueprints/admin/pages/modular_raw.yaml @@ -86,7 +86,7 @@ form: classes: fancy label: PLUGIN_ADMIN.MODULAR_TEMPLATE default: default - data-options@: '\Grav\Common\Page\Pages::modularTypes' + data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes' validate: required: true diff --git a/blueprints/admin/pages/new.yaml b/blueprints/admin/pages/new.yaml index 04ee1576..d62c6aed 100644 --- a/blueprints/admin/pages/new.yaml +++ b/blueprints/admin/pages/new.yaml @@ -39,7 +39,7 @@ form: classes: fancy label: PLUGIN_ADMIN.PAGE_FILE help: PLUGIN_ADMIN.PAGE_FILE_HELP - data-options@: '\Grav\Common\Page\Pages::types' + data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes' data-default@: '\Grav\Plugin\Admin\Admin::getLastPageName' validate: required: true diff --git a/blueprints/admin/pages/raw.yaml b/blueprints/admin/pages/raw.yaml index e1d1502e..0c1bb358 100644 --- a/blueprints/admin/pages/raw.yaml +++ b/blueprints/admin/pages/raw.yaml @@ -87,7 +87,7 @@ form: label: PLUGIN_ADMIN.DISPLAY_TEMPLATE help: PLUGIN_ADMIN.DISPLAY_TEMPLATE_HELP default: default - data-options@: '\Grav\Common\Page\Pages::types' + data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes' validate: required: true