mirror of
				https://github.com/getgrav/grav-plugin-admin.git
				synced 2025-11-03 20:05:53 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Grav\Plugin\Admin;
 | 
						|
 | 
						|
use Grav\Common\Processors\ProcessorBase;
 | 
						|
use Grav\Framework\Route\Route;
 | 
						|
use Psr\Http\Message\ResponseInterface;
 | 
						|
use Psr\Http\Message\ServerRequestInterface;
 | 
						|
use Psr\Http\Server\RequestHandlerInterface;
 | 
						|
 | 
						|
class Router extends ProcessorBase
 | 
						|
{
 | 
						|
    public $id = 'admin_router';
 | 
						|
    public $title = 'Admin Panel';
 | 
						|
 | 
						|
    /**
 | 
						|
     * Handle routing to the dashboard, group and build objects.
 | 
						|
     *
 | 
						|
     * @param ServerRequestInterface $request
 | 
						|
     * @param RequestHandlerInterface $handler
 | 
						|
     * @return ResponseInterface
 | 
						|
     */
 | 
						|
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
 | 
						|
    {
 | 
						|
        $this->startTimer();
 | 
						|
 | 
						|
        $context = $request->getAttributes();
 | 
						|
 | 
						|
        /** @var Route $route */
 | 
						|
        $route = $context['route'];
 | 
						|
        $normalized = mb_strtolower(trim($route->getRoute(), '/'));
 | 
						|
        $parts = explode('/', $normalized);
 | 
						|
        array_shift($parts);
 | 
						|
        $key = array_shift($parts);
 | 
						|
        $path = implode('/', $parts);
 | 
						|
 | 
						|
        $request = $request->withAttribute('admin', ['path' => $path, 'parts' => $parts]);
 | 
						|
 | 
						|
        $response = null;
 | 
						|
        /*
 | 
						|
        if ($key === '__TODO__') {
 | 
						|
 | 
						|
            $controller = new TodoController();
 | 
						|
 | 
						|
            $response = $controller->handle($request);
 | 
						|
        }
 | 
						|
        */
 | 
						|
 | 
						|
        if (!$response) {
 | 
						|
            // Fallback to the old admin behavior.
 | 
						|
            $response = $handler->handle($request);
 | 
						|
        }
 | 
						|
 | 
						|
        $this->stopTimer();
 | 
						|
 | 
						|
        return $response;
 | 
						|
    }
 | 
						|
}
 |