Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 58 |
LanguageTestController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
42 | |
0.00% |
0 / 58 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
testEntity | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
typeLinkActiveClass | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 39 |
|||
testSubRequest | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 12 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\language_test\Controller\LanguageTestController. | |
*/ | |
namespace Drupal\language_test\Controller; | |
use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
use Drupal\Core\Language\LanguageManagerInterface; | |
use Drupal\Core\StringTranslation\StringTranslationTrait; | |
use Drupal\Core\Url; | |
use Drupal\language\ConfigurableLanguageInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpKernel\HttpKernelInterface; | |
/** | |
* Controller routines for language_test routes. | |
*/ | |
class LanguageTestController implements ContainerInjectionInterface { | |
use StringTranslationTrait; | |
/** | |
* The HTTP kernel service. | |
* | |
* @var \Symfony\Component\HttpKernel\HttpKernelInterface | |
*/ | |
protected $httpKernel; | |
/** | |
* The language manager service. | |
* | |
* @var \Drupal\Core\Language\LanguageManagerInterface | |
*/ | |
protected $languageManager; | |
/** | |
* Constructs a new LanguageTestController object. | |
* | |
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $httpKernel | |
* An HTTP kernel. | |
*/ | |
public function __construct(HttpKernelInterface $httpKernel, LanguageManagerInterface $language_manager) { | |
$this->httpKernel = $httpKernel; | |
$this->languageManager = $language_manager; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static($container->get('http_kernel'), $container->get('language_manager')); | |
} | |
/** | |
* Route entity upcasting test helper. | |
* | |
* @param \Drupal\language\ConfigurableLanguageInterface $language | |
* The ConfigurableLanguage object from the route. | |
* | |
* @return string | |
* Testing feedback based on (translated) entity title. | |
*/ | |
public function testEntity(ConfigurableLanguageInterface $configurable_language) { | |
return array('#markup' => $this->t('Loaded %label.', array('%label' => $configurable_language->label()))); | |
} | |
/** | |
* Returns links to the current page with different langcodes. | |
* | |
* Using #type 'link' causes these links to be rendered with the link | |
* generator. | |
*/ | |
public function typeLinkActiveClass() { | |
// We assume that 'en' and 'fr' have been configured. | |
$languages = $this->languageManager->getLanguages(); | |
return array( | |
'no_language' => array( | |
'#type' => 'link', | |
'#title' => t('Link to the current path with no langcode provided.'), | |
'#url' => Url::fromRoute('<current>'), | |
'#options' => array( | |
'attributes' => array( | |
'id' => 'no_lang_link', | |
), | |
'set_active_class' => TRUE, | |
), | |
), | |
'fr' => array( | |
'#type' => 'link', | |
'#title' => t('Link to a French version of the current path.'), | |
'#url' => Url::fromRoute('<current>'), | |
'#options' => array( | |
'language' => $languages['fr'], | |
'attributes' => array( | |
'id' => 'fr_link', | |
), | |
'set_active_class' => TRUE, | |
), | |
), | |
'en' => array( | |
'#type' => 'link', | |
'#title' => t('Link to an English version of the current path.'), | |
'#url' => Url::fromRoute('<current>'), | |
'#options' => array( | |
'language' => $languages['en'], | |
'attributes' => array( | |
'id' => 'en_link', | |
), | |
'set_active_class' => TRUE, | |
), | |
), | |
); | |
} | |
/** | |
* Uses a sub request to retrieve the 'user' page. | |
* | |
* @return \Symfony\Component\HttpFoundation\Response | |
* The kernels response to the sub request. | |
*/ | |
public function testSubRequest() { | |
$request = Request::createFromGlobals(); | |
$server = $request->server->all(); | |
if (basename($server['SCRIPT_FILENAME']) != basename($server['SCRIPT_NAME'])) { | |
// We need this for when the test is executed by run-tests.sh. | |
// @todo Remove this once run-tests.sh has been converted to use a Request | |
// object. | |
$server['SCRIPT_FILENAME'] = $server['SCRIPT_NAME']; | |
$base_path = ltrim($server['REQUEST_URI'], '/'); | |
} | |
else { | |
$base_path = $request->getBasePath(); | |
} | |
$sub_request = Request::create($base_path . '/user', 'GET', $request->query->all(), $request->cookies->all(), array(), $server); | |
return $this->httpKernel->handle($sub_request, HttpKernelInterface::SUB_REQUEST); | |
} | |
} |