Grav\Plugin\AdminPlugin::onPagesInitialized PHP Method

onPagesInitialized() public method

Sets longer path to the home page allowing us to have list of pages when we enter to pages section.
public onPagesInitialized ( )
    public function onPagesInitialized()
    {
        $this->session = $this->grav['session'];
        // Set original route for the home page.
        $home = '/' . trim($this->config->get('system.home.alias'), '/');
        // set the default if not set before
        $this->session->expert = $this->session->expert ?: false;
        // set session variable if it's passed via the url
        if ($this->uri->param('mode') == 'expert') {
            $this->session->expert = true;
        } elseif ($this->uri->param('mode') == 'normal') {
            $this->session->expert = false;
        }
        /** @var Pages $pages */
        $pages = $this->grav['pages'];
        $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);
        }
        // Make local copy of POST.
        $post = !empty($_POST) ? $_POST : [];
        // Handle tasks.
        $this->admin->task = $task = !empty($post['task']) ? $post['task'] : $this->uri->param('task');
        if ($task) {
            $this->initializeController($task, $post);
        } elseif ($this->template == 'logs' && $this->route) {
            // Display RAW error message.
            echo $this->admin->logEntry();
            exit;
        }
        $self = $this;
        // make sure page is not frozen!
        unset($this->grav['page']);
        $this->admin->pagesCount();
        // Replace page service with admin.
        $this->grav['page'] = function () use($self) {
            $page = new Page();
            // If the page cannot be found in other plugins, try looking in admin plugin itself.
            if (file_exists(__DIR__ . "/pages/admin/{$self->template}.md")) {
                $page->init(new \SplFileInfo(__DIR__ . "/pages/admin/{$self->template}.md"));
                $page->slug(basename($self->template));
                return $page;
            }
            // Allows pages added by plugins in admin
            $plugins = $this->grav['plugins'];
            $locator = $this->grav['locator'];
            foreach ($plugins as $plugin) {
                $path = $locator->findResource("user://plugins/{$plugin->name}/admin/pages/{$self->template}.md");
                if ($path) {
                    $page->init(new \SplFileInfo($path));
                    $page->slug(basename($self->template));
                    return $page;
                }
            }
            return null;
        };
        if (empty($this->grav['page'])) {
            if ($this->grav['user']->authenticated) {
                $event = $this->grav->fireEvent('onPageNotFound');
                if (isset($event->page)) {
                    unset($this->grav['page']);
                    $this->grav['page'] = $event->page;
                } else {
                    throw new \RuntimeException('Page Not Found', 404);
                }
            } else {
                $this->grav->redirect($this->admin_route);
            }
        }
        // Explicitly set a timestamp on assets
        $this->grav['assets']->setTimestamp(substr(md5(GRAV_VERSION . $this->grav['config']->checksum()), 0, 10));
    }