diff --git a/CHANGELOG.md b/CHANGELOG.md index b47c03a3..6365eca1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Improved image background overlay and tools + * Update all Form classes to rely on `PageInterface` instead of `Page` class 1. [](#bugfix) * Incorrect 2FA lang code [#1618](https://github.com/getgrav/grav-plugin-admin/issues/1618) * Fixed potential undefined property in `onPageNotFound` event handling diff --git a/admin.php b/admin.php index 76be100b..fef691b0 100644 --- a/admin.php +++ b/admin.php @@ -7,6 +7,7 @@ use Grav\Common\Grav; use Grav\Common\Helpers\LogViewer; use Grav\Common\Inflector; use Grav\Common\Language\Language; +use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Page; use Grav\Common\Page\Pages; use Grav\Common\Plugin; @@ -455,7 +456,7 @@ class AdminPlugin extends Plugin // Replace page service with admin. $this->grav['page'] = function () use ($self) { - $page = new Page; + $page = new Page(); $page->expires(0); if ($this->grav['user']->authorize('admin.login')) { @@ -502,12 +503,12 @@ class AdminPlugin extends Plugin $event = new Event(['page' => null]); $event->page = null; $event = $this->grav->fireEvent('onPageNotFound', $event); - /** @var Page $page */ + /** @var PageInterface $page */ $page = $event->page; if (!$page || !$page->routable()) { $error_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/error.md'); - $page = new Page; + $page = new Page(); $page->init(new \SplFileInfo($error_file)); $page->slug(basename($this->route)); $page->routable(true); diff --git a/classes/Twig/AdminTwigExtension.php b/classes/Twig/AdminTwigExtension.php index 8b909d6c..c11328de 100644 --- a/classes/Twig/AdminTwigExtension.php +++ b/classes/Twig/AdminTwigExtension.php @@ -2,9 +2,9 @@ namespace Grav\Plugin\Admin\Twig; use Grav\Common\Grav; +use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Yaml; use Grav\Common\Language\Language; -use Grav\Common\Page\Page; class AdminTwigExtension extends \Twig_Extension { @@ -65,7 +65,7 @@ class AdminTwigExtension extends \Twig_Extension return clone $obj; } - public function getPageUrl($context, Page $page) + public function getPageUrl($context, PageInterface $page) { $page_route = trim($page->rawRoute(), '/'); $page_lang = $page->language(); diff --git a/classes/admin.php b/classes/admin.php index f4e567eb..14bb6576 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -10,6 +10,7 @@ use Grav\Common\GPM\Response; use Grav\Common\Grav; use Grav\Common\Language\LanguageCodes; use Grav\Common\Page\Collection; +use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Page; use Grav\Common\Page\Pages; use Grav\Common\Plugins; @@ -297,11 +298,11 @@ class Admin $pages = Grav::instance()['pages']; $route = '/' . ltrim(Grav::instance()['admin']->route, '/'); - /** @var Page $page */ + /** @var PageInterface $page */ $page = $pages->dispatch($route); $parent_route = null; if ($page) { - /** @var Page $parent */ + /** @var PageInterface $parent */ $parent = $page->parent(); $parent_route = $parent->rawRoute(); } @@ -328,7 +329,7 @@ class Admin $pages = $grav['pages']; $route = '/' . ltrim($grav['admin']->route, '/'); - /** @var Page $page */ + /** @var PageInterface $page */ $page = $pages->dispatch($route); $parent_route = null; if ($page) { @@ -1561,7 +1562,7 @@ class Admin * * @param null $path * - * @return Page + * @return PageInterface */ public function page($route = false, $path = null) { @@ -1585,7 +1586,7 @@ class Admin * * @param $path * - * @return Page + * @return PageInterface */ public function getPage($path) { @@ -1614,7 +1615,7 @@ class Admin $parent = $this->getPage($ppath !== '/' ? $ppath : ''); // Create page. - $page = new Page; + $page = new Page(); $page->parent($parent); $page->filePath($parent->path() . '/' . $slug . '/' . $page->name()); @@ -1815,12 +1816,12 @@ class Admin * Get all the media of a type ('images' | 'audios' | 'videos' | 'files') * * @param string $type - * @param Page|null $page + * @param PageInterface|null $page * @param array $files * * @return array */ - private function getMediaOfType($type, ?Page $page, array $files) + private function getMediaOfType($type, ?PageInterface $page, array $files) { if ($page) { $media = $page->media(); diff --git a/classes/adminbasecontroller.php b/classes/adminbasecontroller.php index fce580e6..46d791ec 100644 --- a/classes/adminbasecontroller.php +++ b/classes/adminbasecontroller.php @@ -2,9 +2,11 @@ namespace Grav\Plugin\Admin; use Grav\Common\Config\Config; +use Grav\Common\Data\Data; use Grav\Common\Filesystem\Folder; use Grav\Common\Grav; use Grav\Common\Media\Interfaces\MediaInterface; +use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Media; use Grav\Common\Uri; use Grav\Common\Utils; @@ -724,9 +726,9 @@ class AdminBaseController } /** - * @param \Grav\Common\Page\Page|\Grav\Common\Data\Data $obj + * @param PageInterface|Data $obj * - * @return \Grav\Common\Page\Page|\Grav\Common\Data\Data + * @return PageInterface|Data */ protected function storeFiles($obj) { diff --git a/classes/admincontroller.php b/classes/admincontroller.php index b857b5c4..e18d3373 100644 --- a/classes/admincontroller.php +++ b/classes/admincontroller.php @@ -10,6 +10,7 @@ use Grav\Common\GPM\GPM as GravGPM; use Grav\Common\GPM\Installer; use Grav\Common\Grav; use Grav\Common\Data; +use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Media; use Grav\Common\Page\Medium\Medium; use Grav\Common\Page\Page; @@ -18,13 +19,11 @@ use Grav\Common\Page\Collection; use Grav\Common\Security; use Grav\Common\User\User; use Grav\Common\Utils; -use Grav\Plugin\Admin\Twig\AdminTwigExtension; use Grav\Plugin\Login\TwoFactorAuth\TwoFactorAuth; use Grav\Common\Yaml; use PicoFeed\Parser\MalformedXmlException; use RocketTheme\Toolbox\Event\Event; use RocketTheme\Toolbox\File\File; -use RocketTheme\Toolbox\File\JsonFile; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; @@ -576,7 +575,7 @@ class AdminController extends AdminBaseController // Find new parent page in order to build the path. $route = !isset($data['route']) ? dirname($this->admin->route) : $data['route']; - /** @var Page $obj */ + /** @var PageInterface $obj */ $obj = $this->admin->page(true); if (!isset($data['folder']) || !$data['folder']) { @@ -684,7 +683,7 @@ class AdminController extends AdminBaseController } // Always redirect if a page route was changed, to refresh it - if ($obj instanceof Page) { + if ($obj instanceof PageInterface) { if (method_exists($obj, 'unsetRouteSlug')) { $obj->unsetRouteSlug(); } @@ -1332,7 +1331,7 @@ class AdminController extends AdminBaseController $rawroute = $data['rawroute'] ?? null; if ($rawroute) { - /** @var Page $page */ + /** @var PageInterface $page */ $page = $this->grav['pages']->dispatch($rawroute); if ($page) { @@ -1859,11 +1858,11 @@ class AdminController extends AdminBaseController /** * Prepare a page to be stored: update its folder, name, template, header and content * - * @param \Grav\Common\Page\Page $page + * @param PageInterface $page * @param bool $clean_header * @param string $language */ - protected function preparePage(Page $page, $clean_header = false, $language = '') + protected function preparePage(PageInterface $page, $clean_header = false, $language = '') { $input = (array)$this->data; @@ -2019,12 +2018,12 @@ class AdminController extends AdminBaseController * Find the first available $item ('slug' | 'folder') for a page * Used when copying a page, to determine the first available slot * - * @param string $item - * @param Page $page + * @param string $item + * @param PageInterface $page * * @return string The first available slot */ - protected function findFirstAvailable($item, $page) + protected function findFirstAvailable($item, PageInterface $page) { if (!$page->parent()->children()) { return $page->{$item}(); diff --git a/classes/popularity.php b/classes/popularity.php index a399c458..d45672b2 100644 --- a/classes/popularity.php +++ b/classes/popularity.php @@ -3,7 +3,7 @@ namespace Grav\Plugin\Admin; use Grav\Common\Config\Config; use Grav\Common\Grav; -use Grav\Common\Page\Page; +use Grav\Common\Page\Interfaces\PageInterface; /** * Class Popularity @@ -56,7 +56,7 @@ class Popularity return; } - /** @var Page $page */ + /** @var PageInterface $page */ $page = Grav::instance()['page']; $relative_url = str_replace(Grav::instance()['base_url_relative'], '', $page->url());