From 2f370af9c5dbfd7b52639d3bd42818c21066824e Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 5 Jun 2015 19:52:32 +0100 Subject: [PATCH] Issue #2195573 by Xano, eiriksm, heddn, ParisLiakos, Les Lim, Pere Orga, dinarcon, xjm, alexpott: Add a dedicated @LanguageNegotiation annotation class --- .../src/Annotation/LanguageNegotiation.php | 82 +++++++++++++++++++ .../src/LanguageNegotiationMethodManager.php | 2 +- .../LanguageNegotiationBrowser.php | 2 +- .../LanguageNegotiationSelected.php | 2 +- .../LanguageNegotiationSession.php | 2 +- .../LanguageNegotiationUI.php | 2 +- .../LanguageNegotiationUrl.php | 2 +- .../LanguageNegotiationUrlFallback.php | 2 +- .../LanguageNegotiationTest.php | 2 +- .../LanguageNegotiationTestTs.php | 2 +- .../LanguageNegotiationUser.php | 2 +- .../LanguageNegotiationUserAdmin.php | 2 +- 12 files changed, 93 insertions(+), 11 deletions(-) create mode 100644 core/modules/language/src/Annotation/LanguageNegotiation.php diff --git a/core/modules/language/src/Annotation/LanguageNegotiation.php b/core/modules/language/src/Annotation/LanguageNegotiation.php new file mode 100644 index 000000000000..92f767bb2a84 --- /dev/null +++ b/core/modules/language/src/Annotation/LanguageNegotiation.php @@ -0,0 +1,82 @@ +<?php + +/** + * @file + * Contains \Drupal\language\Annotation\LanguageNegotiation. + */ + +namespace Drupal\language\Annotation; + +use Drupal\Component\Annotation\Plugin; + +/** + * Defines a language negotiation annotation object. + * + * Plugin Namespace: Plugin\LanguageNegotiation + * + * For a working example, see + * \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationBrowser. + * + * @see \Drupal\language\LanguageNegotiator + * @see \Drupal\language\LanguageNegotiationMethodManager + * @see \Drupal\language\LanguageNegotiationMethodInterface + * @see hook_language_negotiation_info_alter() + * @see plugin_api + * + * @Annotation + */ +class LanguageNegotiation extends Plugin { + + /** + * The language negotiation plugin ID. + * + * @var string + */ + public $id; + + /** + * An array of allowed language types. + * + * If a language negotiation plugin does not specify which language types it + * should be used with, it will be available for all the configurable + * language types. + * + * @var string[] + * An array of language types, such as the + * \Drupal\Core\Language\LanguageInterface::TYPE_* constants. + */ + public $types; + + /** + * The default weight of the language negotiation plugin. + * + * @var int + */ + public $weight; + + /** + * The human-readable name of the language negotiation plugin. + * + * @ingroup plugin_translatable + * + * @var \Drupal\Core\Annotation\Translation + */ + public $name; + + /** + * The description of the language negotiation plugin. + * + * @ingroup plugin_translatable + * + * @var \Drupal\Core\Annotation\Translation + */ + public $description; + + /** + * The route pointing to the plugin's configuration page. + * + * @var string + */ + public $config_route_name; + +} diff --git a/core/modules/language/src/LanguageNegotiationMethodManager.php b/core/modules/language/src/LanguageNegotiationMethodManager.php index b263ed58270b..cf5925e4b668 100644 --- a/core/modules/language/src/LanguageNegotiationMethodManager.php +++ b/core/modules/language/src/LanguageNegotiationMethodManager.php @@ -28,7 +28,7 @@ class LanguageNegotiationMethodManager extends DefaultPluginManager { * An object that implements ModuleHandlerInterface */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { - parent::__construct('Plugin/LanguageNegotiation', $namespaces, $module_handler, 'Drupal\language\LanguageNegotiationMethodInterface'); + parent::__construct('Plugin/LanguageNegotiation', $namespaces, $module_handler, 'Drupal\language\LanguageNegotiationMethodInterface', 'Drupal\language\Annotation\LanguageNegotiation'); $this->cacheBackend = $cache_backend; $this->cacheKeyPrefix = 'language_negotiation_plugins'; $this->cacheKey = 'language_negotiation_plugins'; diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationBrowser.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationBrowser.php index 00c1fde60684..575d4f599f31 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationBrowser.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationBrowser.php @@ -14,7 +14,7 @@ /** * Class for identifying language from the browser Accept-language HTTP header. * - * @Plugin( + * @LanguageNegotiation( * id = \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationBrowser::METHOD_ID, * weight = -2, * name = @Translation("Browser"), diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSelected.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSelected.php index c4cd150b3b41..142ce0e05acf 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSelected.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSelected.php @@ -13,7 +13,7 @@ /** * Class for identifying language from a selected language. * - * @Plugin( + * @LanguageNegotiation( * id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSelected::METHOD_ID, * weight = 12, * name = @Translation("Selected language"), diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php index 0341ca0d35ca..fe9500a4a0cc 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php @@ -18,7 +18,7 @@ /** * Identify language from a request/session parameter. * - * @Plugin( + * @LanguageNegotiation( * id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSession::METHOD_ID, * weight = -6, * name = @Translation("Session"), diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUI.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUI.php index 0935d1ed41c3..14c9f759deb6 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUI.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUI.php @@ -13,7 +13,7 @@ /** * Identifies the language from the interface text language selected for page. * - * @Plugin( + * @LanguageNegotiation( * id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI::METHOD_ID, * types = {Drupal\Core\Language\LanguageInterface::TYPE_CONTENT}, * weight = 9, diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php index 91f45b5b1cac..6ea4aee76e81 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php @@ -19,7 +19,7 @@ /** * Class for identifying language via URL prefix or domain. * - * @Plugin( + * @LanguageNegotiation( * id = \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::METHOD_ID, * types = {\Drupal\Core\Language\LanguageInterface::TYPE_INTERFACE, * \Drupal\Core\Language\LanguageInterface::TYPE_CONTENT, diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrlFallback.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrlFallback.php index abaa6e39051e..f585622cf83b 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrlFallback.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrlFallback.php @@ -32,7 +32,7 @@ * fixed. This is done by introducing a prefix or domain in the rendered * page matching the detected interface language. * - * @Plugin( + * @LanguageNegotiation( * id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrlFallback::METHOD_ID, * types = {Drupal\Core\Language\LanguageInterface::TYPE_URL}, * weight = 8, diff --git a/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTest.php b/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTest.php index e9f9a2723d19..ea78138f1e3a 100644 --- a/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTest.php +++ b/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTest.php @@ -13,7 +13,7 @@ /** * Class for identifying language from a selected language. * - * @Plugin( + * @LanguageNegotiation( * id = "test_language_negotiation_method", * weight = -10, * name = @Translation("Test"), diff --git a/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTestTs.php b/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTestTs.php index cef125c804b8..b1f463c3e07b 100644 --- a/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTestTs.php +++ b/core/modules/language/tests/language_test/src/Plugin/LanguageNegotiation/LanguageNegotiationTestTs.php @@ -12,7 +12,7 @@ /** * Class for identifying language from a selected language. * - * @Plugin( + * @LanguageNegotiation( * id = "test_language_negotiation_method_ts", * weight = -10, * name = @Translation("Type-specific test"), diff --git a/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUser.php b/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUser.php index 623dac6dc3cf..e609c39a8548 100644 --- a/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUser.php +++ b/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUser.php @@ -13,7 +13,7 @@ /** * Class for identifying language from the user preferences. * - * @Plugin( + * @LanguageNegotiation( * id = \Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser::METHOD_ID, * weight = -4, * name = @Translation("User"), diff --git a/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php b/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php index 2f27bf895c66..b95307234ac8 100644 --- a/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php +++ b/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php @@ -23,7 +23,7 @@ /** * Identifies admin language from the user preferences. * - * @Plugin( + * @LanguageNegotiation( * id = Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUserAdmin::METHOD_ID, * types = {Drupal\Core\Language\LanguageInterface::TYPE_INTERFACE}, * weight = -10, -- GitLab