mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2026-05-07 17:26:31 +02:00
Improved page initialization logic
This commit is contained in:
25
admin.php
25
admin.php
@@ -420,9 +420,6 @@ class AdminPlugin extends Plugin
|
||||
|
||||
$this->session = $this->grav['session'];
|
||||
|
||||
// Set original route for the home page.
|
||||
$home = '/' . trim($this->config->get('system.home.alias'), '/');
|
||||
|
||||
// set session variable if it's passed via the url
|
||||
if ($this->uri->param('mode') === 'expert') {
|
||||
$this->session->expert = true;
|
||||
@@ -433,28 +430,6 @@ class AdminPlugin extends Plugin
|
||||
$this->session->expert = $this->session->expert ?? false;
|
||||
}
|
||||
|
||||
// FIXME: START
|
||||
/** @var Pages $pages */
|
||||
/*
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
|
||||
$this->grav['admin']->routes = $pages->routes();
|
||||
|
||||
// Remove default route from routes.
|
||||
if (isset($this->grav['admin']->routes['/'])) {
|
||||
unset($this->grav['admin']->routes['/']);
|
||||
}
|
||||
|
||||
$page = $pages->dispatch('/', true);
|
||||
|
||||
// If page is null, the default page does not exist, and we cannot route to it
|
||||
if ($page) {
|
||||
$page->route($home);
|
||||
}
|
||||
*/
|
||||
// FIXME: STOP
|
||||
|
||||
// Make local copy of POST.
|
||||
$post = $this->grav['uri']->post();
|
||||
|
||||
|
||||
@@ -331,9 +331,7 @@ class Admin
|
||||
|
||||
public function getCurrentRoute()
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$route = '/' . ltrim($this->route, '/');
|
||||
|
||||
@@ -427,9 +425,7 @@ class Admin
|
||||
$files = [];
|
||||
$grav = Grav::instance();
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$route = '/' . ltrim($grav['admin']->route, '/');
|
||||
|
||||
@@ -798,9 +794,7 @@ class Admin
|
||||
|
||||
$file = File::instance($filename);
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$obj = new \stdClass();
|
||||
$obj->title = $file->basename();
|
||||
@@ -895,9 +889,7 @@ class Admin
|
||||
*/
|
||||
public function routes($unique = false)
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
if ($unique) {
|
||||
$routes = array_unique($pages->routes());
|
||||
@@ -920,9 +912,7 @@ class Admin
|
||||
$cache = $this->grav['cache'];
|
||||
$count = $cache->fetch('admin-pages-count');
|
||||
if (false === $count) {
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$count = count($pages->all());
|
||||
$cache->save('admin-pages-count', $count);
|
||||
@@ -961,9 +951,7 @@ class Admin
|
||||
*/
|
||||
public function accessLevels()
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
if (method_exists($pages, 'accessLevels')) {
|
||||
return $pages->accessLevels();
|
||||
@@ -1169,9 +1157,7 @@ class Admin
|
||||
*/
|
||||
public function latestPages($count = 10)
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$latest = [];
|
||||
|
||||
@@ -1718,9 +1704,7 @@ class Admin
|
||||
*/
|
||||
public function getPage($path)
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
if ($path && $path[0] !== '/') {
|
||||
$path = "/{$path}";
|
||||
@@ -1809,9 +1793,7 @@ class Admin
|
||||
{
|
||||
$reports = new ArrayCollection();
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
// Default to XSS Security Report
|
||||
$result = Security::detectXssFromPages($pages, true);
|
||||
@@ -1881,9 +1863,7 @@ class Admin
|
||||
|
||||
if (!$page_files) {
|
||||
$page_files = [];
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
if ($param_page) {
|
||||
$page = $pages->dispatch($param_page);
|
||||
@@ -2087,9 +2067,7 @@ class Admin
|
||||
*/
|
||||
public function pages()
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = static::enablePages();
|
||||
|
||||
$collection = $pages->all();
|
||||
|
||||
@@ -2103,6 +2081,43 @@ class Admin
|
||||
return $pagesWithFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Pages
|
||||
*/
|
||||
public static function enablePages()
|
||||
{
|
||||
static $pages;
|
||||
|
||||
if ($pages) {
|
||||
return $pages;
|
||||
}
|
||||
|
||||
$grav = Grav::instance();
|
||||
$admin = $grav['admin'];
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = Grav::instance()['pages'];
|
||||
$pages->enablePages();
|
||||
|
||||
// If page is null, the default page does not exist, and we cannot route to it
|
||||
$page = $pages->dispatch('/', true);
|
||||
if ($page) {
|
||||
// Set original route for the home page.
|
||||
$home = '/' . trim($grav['config']->get('system.home.alias'), '/');
|
||||
|
||||
$page->route($home);
|
||||
}
|
||||
|
||||
$admin->routes = $pages->routes();
|
||||
|
||||
// Remove default route from routes.
|
||||
if (isset($admin->routes['/'])) {
|
||||
unset($admin->routes['/']);
|
||||
}
|
||||
|
||||
return $pages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return HTTP_REFERRER if set
|
||||
*
|
||||
|
||||
@@ -1251,9 +1251,7 @@ class AdminController extends AdminBaseController
|
||||
if ($data['route'] === '' || $data['route'] === '/') {
|
||||
$path = $this->grav['locator']->findResource('page://');
|
||||
} else {
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
$page = $pages->find($data['route']);
|
||||
if (!$page) {
|
||||
@@ -1284,9 +1282,7 @@ class AdminController extends AdminBaseController
|
||||
$data = (array)$this->data;
|
||||
$this->grav['twig']->twig_vars['current_form_data'] = $data;
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
// Find new parent page in order to build the path.
|
||||
$route = $data['route'] ?? dirname($this->admin->route);
|
||||
@@ -1409,9 +1405,7 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
try {
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
// Get the current page.
|
||||
$original_page = $this->admin->page(true);
|
||||
@@ -1741,9 +1735,7 @@ class AdminController extends AdminBaseController
|
||||
$rawroute = $data['rawroute'] ?? null;
|
||||
|
||||
if ($rawroute) {
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
/** @var PageInterface $page */
|
||||
$page = $pages->dispatch($rawroute);
|
||||
@@ -1784,9 +1776,7 @@ class AdminController extends AdminBaseController
|
||||
$flags = !empty($data['flags']) ? array_map('strtolower', explode(',', $data['flags'])) : [];
|
||||
$queries = !empty($data['query']) ? explode(',', $data['query']) : [];
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
/** @var Collection $collection */
|
||||
$collection = $pages->all();
|
||||
@@ -2269,9 +2259,7 @@ class AdminController extends AdminBaseController
|
||||
// Valid types are dir|file|link
|
||||
$default_filters = ['type'=> ['root', 'dir'], 'name' => null, 'extension' => null];
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$pages = $this->admin::enablePages();
|
||||
|
||||
$page_instances = $pages->instances();
|
||||
|
||||
@@ -2293,14 +2281,12 @@ class AdminController extends AdminBaseController
|
||||
$root = false;
|
||||
|
||||
// Handle leaf_route
|
||||
if ($leaf_route && $route != $leaf_route) {
|
||||
|
||||
if ($leaf_route && $route !== $leaf_route) {
|
||||
$nodes = explode('/', $leaf_route);
|
||||
$sub_route = '/' . implode('/', array_slice($nodes, 1, $data['level']++ ));
|
||||
$sub_route = '/' . implode('/', array_slice($nodes, 1, $data['level']++));
|
||||
$data['route'] = $sub_route;
|
||||
|
||||
[$status, $msg, $children, $extra] = $this->getLevelListing($data);
|
||||
|
||||
}
|
||||
|
||||
// Handle no route, assume page tree root
|
||||
@@ -2405,7 +2391,7 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
// Add children if any
|
||||
if ($filePath == $extra && is_array($children)) {
|
||||
if ($filePath === $extra && is_array($children)) {
|
||||
$payload['children'] = array_values($children);
|
||||
}
|
||||
|
||||
@@ -2481,9 +2467,7 @@ class AdminController extends AdminBaseController
|
||||
{
|
||||
$input = (array)$this->data;
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$pages->enablePages();
|
||||
$this->admin::enablePages();
|
||||
|
||||
if (isset($input['folder']) && $input['folder'] !== $page->value('folder')) {
|
||||
$order = $page->value('order');
|
||||
|
||||
Reference in New Issue
Block a user