Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 26 |
MenuTestController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
56 | |
0.00% |
0 / 26 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
menuTestCallback | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
titleCallback | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
themePage | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 9 |
|||
breadcrumbTitleCallback | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\menu_test\Controller\MenuTestController. | |
*/ | |
namespace Drupal\menu_test\Controller; | |
use Drupal\Core\Controller\ControllerBase; | |
use Drupal\Core\Routing\RouteMatchInterface; | |
use Drupal\Core\Theme\ThemeManagerInterface; | |
use Drupal\Core\Theme\ThemeNegotiatorInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Controller routines for menu_test routes. | |
*/ | |
class MenuTestController extends ControllerBase { | |
/** | |
* The theme manager. | |
* | |
* @var \Drupal\Core\Theme\ThemeManagerInterface | |
*/ | |
protected $themeManager; | |
/** | |
* The theme negotiator. | |
* | |
* @var \Drupal\Core\Theme\ThemeNegotiatorInterface | |
*/ | |
protected $themeNegotiator; | |
/** | |
* The active route match. | |
* | |
* @var \Drupal\Core\Routing\RouteMatchInterface | |
*/ | |
protected $routeMatch; | |
/** | |
* Constructs the MenuTestController object. | |
* | |
* @param \Drupal\menu_test\Controller\ThemeManagerInterface $theme_manager | |
* The theme manager. | |
* @param \Drupal\menu_test\Controller\ThemeNegotiatorInterface $theme_negotiator | |
* The theme negotiator. | |
* @param \Drupal\menu_test\Controller\RouteMatchInterface $route_match | |
* The current route match. | |
*/ | |
public function __construct(ThemeManagerInterface $theme_manager, ThemeNegotiatorInterface $theme_negotiator, RouteMatchInterface $route_match) { | |
$this->themeManager = $theme_manager; | |
$this->themeNegotiator = $theme_negotiator; | |
$this->routeMatch = $route_match; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static( | |
$container->get('theme.manager'), | |
$container->get('theme.negotiator'), | |
$container->get('current_route_match') | |
); | |
} | |
/** | |
* Some known placeholder content which can be used for testing. | |
* | |
* @return string | |
* A string that can be used for comparison. | |
*/ | |
public function menuTestCallback() { | |
return ['#markup' => 'This is the menuTestCallback content.']; | |
} | |
/** | |
* A title callback method for test routes. | |
* | |
* @param array $_title_arguments | |
* Optional array from the route defaults. | |
* @param string $_title | |
* Optional _title string from the route defaults. | |
* | |
* @return string | |
* The route title. | |
*/ | |
public function titleCallback(array $_title_arguments = array(), $_title = '') { | |
$_title_arguments += array('case_number' => '2', 'title' => $_title); | |
return t($_title_arguments['title']) . ' - Case ' . $_title_arguments['case_number']; | |
} | |
/** | |
* Page callback: Tests the theme negotiation functionality. | |
* | |
* @param bool $inherited | |
* TRUE when the requested page is intended to inherit | |
* the theme of its parent. | |
* | |
* @return string | |
* A string describing the requested custom theme and actual | |
* theme being used | |
* for the current page request. | |
*/ | |
public function themePage($inherited) { | |
$theme_key = $this->themeManager->getActiveTheme()->getName(); | |
// Now we check what the theme negotiator service returns. | |
$active_theme = $this->themeNegotiator | |
->determineActiveTheme($this->routeMatch); | |
$output = "Active theme: $active_theme. Actual theme: $theme_key."; | |
if ($inherited) { | |
$output .= ' Theme negotiation inheritance is being tested.'; | |
} | |
return ['#markup' => $output]; | |
} | |
/** | |
* A title callback for XSS breadcrumb check. | |
* | |
* @return string | |
*/ | |
public function breadcrumbTitleCallback() { | |
return '<script>alert(123);</script>'; | |
} | |
} |