Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176

This commit is contained in:
Pantheon Automation 2015-08-17 17:00:26 -07:00 committed by Greg Anderson
commit 9921556621
13277 changed files with 1459781 additions and 0 deletions

View file

@ -0,0 +1,6 @@
name: 'Language test'
type: module
description: 'Support module for the language layer tests.'
core: 8.x
package: Testing
version: VERSION

View file

@ -0,0 +1,101 @@
<?php
/**
* @file
* Mock module for language layer tests.
*/
use Drupal\Core\Language\LanguageInterface;
use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI;
/**
* Implements hook_page_top().
*/
function language_test_page_top() {
if (\Drupal::moduleHandler()->moduleExists('language')) {
language_test_store_language_negotiation();
drupal_set_message(t('Language negotiation method: @name', array('@name' => \Drupal::languageManager()->getNegotiatedLanguageMethod())));
}
}
/**
* Implements hook_language_types_info().
*/
function language_test_language_types_info() {
if (\Drupal::state()->get('language_test.language_types')) {
return array(
'test_language_type' => array(
'name' => t('Test'),
'description' => t('A test language type.'),
),
'fixed_test_language_type' => array(
'fixed' => array('test_language_negotiation_method'),
'locked' => TRUE,
),
);
}
}
/**
* Implements hook_language_types_info_alter().
*/
function language_test_language_types_info_alter(array &$language_types) {
if (\Drupal::state()->get('language_test.content_language_type')) {
$language_types[LanguageInterface::TYPE_CONTENT]['locked'] = FALSE;
unset($language_types[LanguageInterface::TYPE_CONTENT]['fixed']);
// By default languages are not configurable. Make
// LanguageInterface::TYPE_CONTENT configurable.
$config = \Drupal::configFactory()->getEditable('language.types');
$configurable = $config->get('configurable');
if (!in_array(LanguageInterface::TYPE_CONTENT, $configurable)) {
$configurable[] = LanguageInterface::TYPE_CONTENT;
$config->set('configurable', $configurable)->save();
}
}
}
/**
* Implements hook_language_negotiation_info_alter().
*/
function language_test_language_negotiation_info_alter(array &$negotiation_info) {
if (\Drupal::state()->get('language_test.language_negotiation_info_alter')) {
unset($negotiation_info[LanguageNegotiationUI::METHOD_ID]);
}
}
/**
* Store the last negotiated languages.
*/
function language_test_store_language_negotiation() {
$last = array();
foreach (\Drupal::languageManager()->getDefinedLanguageTypes() as $type) {
$last[$type] = \Drupal::languageManager()->getCurrentLanguage($type)->getId();
}
\Drupal::state()->set('language_test.language_negotiation_last', $last);
}
/**
* Implements hook_language_fallback_candidates_alter().
*/
function language_test_language_fallback_candidates_alter(array &$candidates, array $context) {
if (Drupal::state()->get('language_test.fallback_alter.candidates')) {
unset($candidates[LanguageInterface::LANGCODE_NOT_SPECIFIED]);
}
}
/**
* Implements hook_language_fallback_candidates_OPERATION_alter().
*/
function language_test_language_fallback_candidates_test_alter(array &$candidates, array $context) {
if (Drupal::state()->get('language_test.fallback_operation_alter.candidates')) {
$langcode = LanguageInterface::LANGCODE_NOT_APPLICABLE;
$candidates[$langcode] = $langcode;
}
}
/**
* Implements hook_module_preinstall().
*/
function language_test_module_preinstall() {
\Drupal::state()->set('language_test.language_count_preinstall', count(\Drupal::languageManager()->getLanguages()));
}

View file

@ -0,0 +1,33 @@
language_test.l_active_class:
path: '/language_test/type-link-active-class'
defaults:
_controller: '\Drupal\language_test\Controller\LanguageTestController::typeLinkActiveClass'
requirements:
_access: 'TRUE'
language_test.subrequest:
path: '/language_test/subrequest'
defaults:
_controller: '\Drupal\language_test\Controller\LanguageTestController::testSubRequest'
requirements:
_access: 'TRUE'
language_test.entity_using_original_language:
path: '/admin/language_test/entity_using_original_language/{configurable_language}'
defaults:
_controller: '\Drupal\language_test\Controller\LanguageTestController::testEntity'
requirements:
_access: 'TRUE'
language_test.entity_using_current_language:
path: '/admin/language_test/entity_using_current_language/{configurable_language}'
defaults:
_controller: '\Drupal\language_test\Controller\LanguageTestController::testEntity'
requirements:
_access: 'TRUE'
options:
parameters:
configurable_language:
type: entity:configurable_language
# Force load in the interface text language selected for page.
with_config_overrides: TRUE

View file

@ -0,0 +1,141 @@
<?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 _l().
*/
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);
}
}

View file

@ -0,0 +1,39 @@
<?php
/**
* @file
* Contains \Drupal\language_test\Plugin\LanguageNegotiation\LanguageNegotiationTest.
*/
namespace Drupal\language_test\Plugin\LanguageNegotiation;
use Drupal\language\LanguageNegotiationMethodBase;
use Symfony\Component\HttpFoundation\Request;
/**
* Class for identifying language from a selected language.
*
* @LanguageNegotiation(
* id = "test_language_negotiation_method",
* weight = -10,
* name = @Translation("Test"),
* description = @Translation("This is a test language negotiation method."),
* types = {Drupal\Core\Language\LanguageInterface::TYPE_CONTENT,
* "test_language_type", "fixed_test_language_type"}
* )
*/
class LanguageNegotiationTest extends LanguageNegotiationMethodBase {
/**
* The language negotiation method id.
*/
const METHOD_ID = 'test_language_negotiation_method';
/**
* {@inheritdoc}
*/
public function getLangcode(Request $request = NULL) {
return 'it';
}
}

View file

@ -0,0 +1,30 @@
<?php
/**
* @file
* Contains \Drupal\language_test\Plugin\LanguageNegotiation\LanguageNegotiationTestTs.
*/
namespace Drupal\language_test\Plugin\LanguageNegotiation;
use Symfony\Component\HttpFoundation\Request;
/**
* Class for identifying language from a selected language.
*
* @LanguageNegotiation(
* id = "test_language_negotiation_method_ts",
* weight = -10,
* name = @Translation("Type-specific test"),
* description = @Translation("This is a test language negotiation method."),
* types = {"test_language_type"}
* )
*/
class LanguageNegotiationTestTs extends LanguageNegotiationTest {
/**
* The language negotiation method id.
*/
const METHOD_ID = 'test_language_negotiation_method_ts';
}