Update all Form classes to rely on PageInterface instead of Page class

This commit is contained in:
Matias Griese
2019-03-05 15:46:55 +02:00
parent 9fd372c61e
commit 9d94f889a0
7 changed files with 31 additions and 27 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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();

View File

@@ -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();

View File

@@ -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)
{

View File

@@ -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}();

View File

@@ -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());