From 68ab221639cef19aab1a8d7ecc12e35a571be85e Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 7 Sep 2018 16:13:07 -0600 Subject: [PATCH] Move Scheduler to Tools --- admin.php | 15 ++++++++++++++- classes/admin.php | 6 +++++- languages/en.yaml | 3 ++- .../partials/tools-scheduler-titlebar.html.twig | 6 ++++++ .../templates/partials/tools-scheduler.html.twig | 13 +++++++++++++ themes/grav/templates/tools.html.twig | 11 +++++++++++ 6 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 themes/grav/templates/partials/tools-scheduler-titlebar.html.twig create mode 100644 themes/grav/templates/partials/tools-scheduler.html.twig diff --git a/admin.php b/admin.php index e6fae3b4..a0e475d2 100644 --- a/admin.php +++ b/admin.php @@ -607,6 +607,7 @@ class AdminPlugin extends Plugin 'onAdminRegisterPermissions' => ['onAdminRegisterPermissions', 0], 'onOutputGenerated' => ['onOutputGenerated', 0], 'onAdminAfterSave' => ['onAdminAfterSave', 0], + 'onAdminData' => ['onAdminData', 0], ]); // Autoload classes @@ -838,10 +839,22 @@ class AdminPlugin extends Plugin */ public function onAdminTools(Event $event) { - $event['tools'] = array_merge($event['tools'], [$this->grav['language']->translate('PLUGIN_ADMIN.DIRECT_INSTALL')]); + $event['tools'] = array_merge($event['tools'], [ + $this->grav['language']->translate('PLUGIN_ADMIN.DIRECT_INSTALL'), + $this->grav['language']->translate('PLUGIN_ADMIN.SCHEDULER') + ]); + return $event; } + public function onAdminData(Event $e) + { + $type = $e['type'] ?? null; + if ($type === 'tools/scheduler') { + $e['data_type'] = 'config/scheduler'; + } + } + public function onAdminDashboard() { $this->grav['twig']->plugins_hooked_dashboard_widgets_top[] = ['template' => 'dashboard-maintenance']; diff --git a/classes/admin.php b/classes/admin.php index b8e110e7..2f790e00 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -601,7 +601,11 @@ class Admin // Check to see if a data type is plugin-provided, before looking into core ones $event = $this->grav->fireEvent('onAdminData', new Event(['type' => &$type])); if ($event && isset($event['data_type'])) { - return $event['data_type']; + if (is_string($event['data_type'])) { + $type = $event['data_type']; + } else { + return $event['data_type']; + } } /** @var UniformResourceLocator $locator */ diff --git a/languages/en.yaml b/languages/en.yaml index 7663ddc2..c01a0d1e 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -724,7 +724,8 @@ PLUGIN_ADMIN: STRICT_YAML_COMPAT_HELP: "Falls back to Symfony 2.4 YAML parser if Native or 3.4 parser fails" STRICT_TWIG_COMPAT: "Twig Compatibility" STRICT_TWIG_COMPAT_HELP: "Enables deprecated Twig autoescape setting. When disabled, |raw filter is required to output HTML as Twig will autoescape output" - SCHEDULER_SETUP: Scheduler Setup + SCHEDULER: "Scheduler" + SCHEDULER_SETUP: "Scheduler Setup" SCHEDULER_INSTRUCTIONS: "The Grav Scheduler allow you to create and schedule custom jobs. It also provides a method for Grav plugins to integrate programatically and dynamically add jobs to be run periodically." SCHEDULER_POST_INSTRUCTIONS: "To enable the Scheduler's functionality, you must add the Grav Scheduler to your system's crontab file. Run the command above from the terminal to add it automatically. Once saved, refresh this page to see the status Ready." SCHEDULER_JOBS: "Custom Scheduler Jobs" diff --git a/themes/grav/templates/partials/tools-scheduler-titlebar.html.twig b/themes/grav/templates/partials/tools-scheduler-titlebar.html.twig new file mode 100644 index 00000000..49964f8d --- /dev/null +++ b/themes/grav/templates/partials/tools-scheduler-titlebar.html.twig @@ -0,0 +1,6 @@ +
+ {{ "PLUGIN_ADMIN.BACK"|tu }} + +
+

{{ "PLUGIN_ADMIN.SCHEDULER"|tu }}

+ diff --git a/themes/grav/templates/partials/tools-scheduler.html.twig b/themes/grav/templates/partials/tools-scheduler.html.twig new file mode 100644 index 00000000..984df67b --- /dev/null +++ b/themes/grav/templates/partials/tools-scheduler.html.twig @@ -0,0 +1,13 @@ +
+ + {% set data = admin.data('config/scheduler') %} + + {% if authorize(['admin.configuration_scheduler', 'admin.super']) %} + + {% include 'partials/blueprints.html.twig' with { blueprints: data.blueprints, data: data } %} + + {% include 'partials/modal-changes-detected.html.twig' %} + {% endif %} + + +
diff --git a/themes/grav/templates/tools.html.twig b/themes/grav/templates/tools.html.twig index 55e767ed..0893cc3f 100644 --- a/themes/grav/templates/tools.html.twig +++ b/themes/grav/templates/tools.html.twig @@ -4,8 +4,19 @@ {% if tools_slug == 'tools' %}{% set tools_slug = 'direct-install' %}{% endif %} {% set title = "PLUGIN_ADMIN.TOOLS"|tu ~ ": " ~ ("PLUGIN_ADMIN." ~ tools_slug|underscorize|upper)|tu %} +{% set titlebar -%} + {% include 'partials/tools-' ~ tools_slug ~ '-titlebar.html.twig' ignore missing %} +{%- endset %} + {% block titlebar %} + {% if titlebar %} + {{ titlebar }} + {% else %} +
+ {{ "PLUGIN_ADMIN.BACK"|tu }} +

{{ "PLUGIN_ADMIN.TOOLS"|tu }} - {{ ("PLUGIN_ADMIN." ~ tools_slug|underscorize|upper)|tu }}

+ {% endif %} {% endblock %} {% block content_top %}