From c74cc716e91e5a1114fc27938a862731dbe1fdb1 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 14 Jun 2019 12:19:31 +0300 Subject: [PATCH] Fixed admin caching issues --- CHANGELOG.md | 5 ++++- classes/plugin/AdminBaseController.php | 3 +++ classes/plugin/AdminController.php | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78ede954..cce56bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Require Grav v1.7 * Use PSR-4 for plugin classes * Added support for Twig 2.11 (compatible with Twig 1.40+) + # v1.9.5 ## mm/dd/2019 @@ -13,7 +14,9 @@ * Display error message if GPM class fails to initialize * Better append/prepend logic that was breaking some layouts * Default `backups` to an array if used outside of tools - +1. [](#bugfix) + * Fixed admin caching issues + # v1.9.4 ## 05/09/2019 diff --git a/classes/plugin/AdminBaseController.php b/classes/plugin/AdminBaseController.php index 3e7e9bde..b0c972b5 100644 --- a/classes/plugin/AdminBaseController.php +++ b/classes/plugin/AdminBaseController.php @@ -2,6 +2,7 @@ namespace Grav\Plugin\Admin; +use Grav\Common\Cache; use Grav\Common\Config\Config; use Grav\Common\Data\Data; use Grav\Common\Filesystem\Folder; @@ -1018,6 +1019,8 @@ class AdminBaseController } } + Cache::clearCache('invalidate'); + $this->admin->json_response = [ 'status' => 'success', 'message' => $this->admin::translate('PLUGIN_ADMIN.REMOVE_SUCCESSFUL') diff --git a/classes/plugin/AdminController.php b/classes/plugin/AdminController.php index 0d3cab60..159f661e 100644 --- a/classes/plugin/AdminController.php +++ b/classes/plugin/AdminController.php @@ -175,6 +175,8 @@ class AdminController extends AdminBaseController $config = $this->grav['config']; $config->reload(); + Cache::clearCache('invalidate'); + return true; } @@ -711,6 +713,8 @@ class AdminController extends AdminBaseController $this->post = ['_redirect' => 'plugins']; $this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.SUCCESSFULLY_ENABLED_PLUGIN'), 'info'); + Cache::clearCache('invalidate'); + return true; } @@ -739,6 +743,8 @@ class AdminController extends AdminBaseController $this->post = ['_redirect' => 'plugins']; $this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.SUCCESSFULLY_DISABLED_PLUGIN'), 'info'); + Cache::clearCache('invalidate'); + return true; } @@ -779,6 +785,8 @@ class AdminController extends AdminBaseController $this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.SUCCESSFULLY_CHANGED_THEME'), 'info'); + Cache::clearCache('invalidate'); + return true; } @@ -1344,7 +1352,11 @@ class AdminController extends AdminBaseController if ($obj) { // Event to manipulate data before saving the object $this->grav->fireEvent('onAdminSave', new Event(['object' => &$obj])); + $obj->save($reorder); + + Cache::clearCache('invalidate'); + $this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.SUCCESSFULLY_SAVED'), 'info'); $this->grav->fireEvent('onAdminAfterSave', new Event(['object' => $obj])); } @@ -1443,6 +1455,8 @@ class AdminController extends AdminBaseController $page->save(); + Cache::clearCache('invalidate'); + $this->grav->fireEvent('onAdminAfterSave', new Event(['page' => $page])); // Enqueue message and redirect to new location. @@ -1601,7 +1615,11 @@ class AdminController extends AdminBaseController $aPage->filter(); $this->grav->fireEvent('onAdminSave', new Event(['page' => &$aPage])); + $aPage->save(); + + Cache::clearCache('invalidate'); + $this->grav->fireEvent('onAdminAfterSave', new Event(['page' => $aPage])); } @@ -2088,6 +2106,8 @@ class AdminController extends AdminBaseController return false; } + Cache::clearCache('invalidate'); + // Add metadata if needed $include_metadata = Grav::instance()['config']->get('system.media.auto_metadata_exif', false); $basename = str_replace(['@3x', '@2x'], '', pathinfo($filename, PATHINFO_BASENAME)); @@ -2201,6 +2221,8 @@ class AdminController extends AdminBaseController } } + Cache::clearCache('invalidate'); + if (!$found) { $this->admin->json_response = [ 'status' => 'error',