Issue #2254495 by ParisLiakos, alexpott: Move language_admin_predefined_list to ConfigurableLanguageManager.

8.0.x
Dries 2014-05-05 07:35:15 -04:00
parent 2b9cec6dbe
commit 85c8f32483
7 changed files with 73 additions and 41 deletions

View File

@ -6,26 +6,8 @@
*/
use Drupal\Component\Utility\String;
use Drupal\Core\Language\LanguageManager;
use Drupal\Core\Render\Element;
/**
* Prepare a language code list for unused predefined languages.
*/
function language_admin_predefined_list() {
$languages = \Drupal::languageManager()->getLanguages();
$predefined = LanguageManager::getStandardLanguageList();
foreach ($predefined as $key => $value) {
if (isset($languages[$key])) {
unset($predefined[$key]);
continue;
}
$predefined[$key] = t($value[0]);
}
asort($predefined);
return $predefined;
}
/**
* Returns HTML for the language negotiation configuration form.
*

View File

@ -407,4 +407,21 @@ class ConfigurableLanguageManager extends LanguageManager implements Configurabl
return $this->configFactoryOverride->getOverride($langcode, $name);
}
/**
* {@inheritdoc}
*/
public function getUnusedPredefinedList() {
$languages = $this->getLanguages();
$predefined = $this->getStandardLanguageList();
foreach ($predefined as $key => $value) {
if (isset($languages[$key])) {
unset($predefined[$key]);
continue;
}
$predefined[$key] = $this->t($value[0]);
}
asort($predefined);
return $predefined;
}
}

View File

@ -96,4 +96,12 @@ interface ConfigurableLanguageManagerInterface extends LanguageManagerInterface
*/
public function getLanguageConfigOverride($langcode, $name);
/**
* Prepare a language code list for unused predefined languages.
*
* @return array
* List of predefined language names keyed by langcode.
*/
public function getUnusedPredefinedList();
}

View File

@ -29,8 +29,7 @@ class LanguageAddForm extends LanguageFormBase {
public function form(array $form, array &$form_state) {
$form['#title'] = $this->t('Add language');
$this->moduleHandler->loadInclude('language', 'inc', 'language.admin');
$predefined_languages = language_admin_predefined_list();
$predefined_languages = $this->languageManager->getUnusedPredefinedList();
$predefined_languages['custom'] = $this->t('Custom language...');
$predefined_default = !empty($form_state['values']['predefined_langcode']) ? $form_state['values']['predefined_langcode'] : key($predefined_languages);

View File

@ -10,12 +10,40 @@ namespace Drupal\language\Form;
use Drupal\Component\Utility\String;
use Drupal\Core\Entity\EntityForm;
use Drupal\Core\Language\Language;
use Drupal\language\ConfigurableLanguageManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Base form for language add and edit forms.
*/
abstract class LanguageFormBase extends EntityForm {
/**
* The configurable language manager.
*
* @var \Drupal\language\ConfigurableLanguageManagerInterface
*/
protected $languageManager;
/**
* Constructs a ContentEntityForm object.
*
* @param \Drupal\language\ConfigurableLanguageManagerInterface $language_manager
* The configurable language manager.
*/
public function __construct(ConfigurableLanguageManagerInterface $language_manager) {
$this->languageManager = $language_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('language_manager')
);
}
/**
* Common elements of the language addition and editing form.
*/

View File

@ -8,8 +8,8 @@
namespace Drupal\language\Form;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\language\ConfigurableLanguageManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
@ -18,11 +18,11 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
class NegotiationBrowserForm extends ConfigFormBase {
/**
* The module handler.
* The configurable language manager.
*
* @var \Drupal\Core\Extension\ModuleHandlerInterface
* @var \Drupal\language\ConfigurableLanguageManagerInterface
*/
protected $moduleHandler;
protected $languageManager;
/**
* {@inheritdoc}
@ -30,9 +30,9 @@ class NegotiationBrowserForm extends ConfigFormBase {
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler
*/
public function __construct(ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler) {
public function __construct(ConfigFactoryInterface $config_factory, ConfigurableLanguageManagerInterface $language_manager ) {
parent::__construct($config_factory);
$this->moduleHandler = $module_handler;
$this->languageManager = $language_manager;
}
/**
@ -41,7 +41,7 @@ class NegotiationBrowserForm extends ConfigFormBase {
public static function create(ContainerInterface $container) {
return new static(
$container->get('config.factory'),
$container->get('module_handler')
$container->get('language_manager')
);
}
@ -56,7 +56,6 @@ class NegotiationBrowserForm extends ConfigFormBase {
* {@inheritdoc}
*/
public function buildForm(array $form, array &$form_state) {
$this->moduleHandler->loadInclude('language', 'inc', 'language.admin');
$form = array();
// Initialize a language list to the ones available, including English.
@ -71,12 +70,12 @@ class NegotiationBrowserForm extends ConfigFormBase {
// only. If we do have already added languages, set up two option groups with
// the list of existing and then predefined languages.
if (empty($existing_languages)) {
$language_options = language_admin_predefined_list();
$language_options = $this->languageManager->getUnusedPredefinedList();
}
else {
$language_options = array(
$this->t('Existing languages') => $existing_languages,
$this->t('Languages not yet added') => language_admin_predefined_list()
$this->t('Languages not yet added') => $this->languageManager->getUnusedPredefinedList()
);
}

View File

@ -8,16 +8,15 @@
namespace Drupal\locale\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Language\Language;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\language\ConfigurableLanguageManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Form constructor for the translation import screen.
*/
class ImportForm extends FormBase implements ContainerInjectionInterface {
class ImportForm extends FormBase {
/**
* Uploaded file entity.
@ -25,6 +24,7 @@ class ImportForm extends FormBase implements ContainerInjectionInterface {
* @var \Drupal\file\Entity\File
*/
protected $file;
/**
* The module handler service.
*
@ -33,9 +33,9 @@ class ImportForm extends FormBase implements ContainerInjectionInterface {
protected $moduleHandler;
/**
* The language manager.
* The configurable language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
* @var \Drupal\language\ConfigurableLanguageManagerInterface
*/
protected $languageManager;
@ -53,10 +53,10 @@ class ImportForm extends FormBase implements ContainerInjectionInterface {
*
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler service.
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
* @param \Drupal\language\ConfigurableLanguageManagerInterface $language_manager
* The configurable language manager.
*/
public function __construct(ModuleHandlerInterface $module_handler, LanguageManagerInterface $language_manager) {
public function __construct(ModuleHandlerInterface $module_handler, ConfigurableLanguageManagerInterface $language_manager) {
$this->moduleHandler = $module_handler;
$this->languageManager = $language_manager;
}
@ -88,16 +88,15 @@ class ImportForm extends FormBase implements ContainerInjectionInterface {
// If we have no languages available, present the list of predefined
// languages only. If we do have already added languages, set up two option
// groups with the list of existing and then predefined languages.
form_load_include($form_state, 'inc', 'language', 'language.admin');
if (empty($existing_languages)) {
$language_options = language_admin_predefined_list();
$language_options = $this->languageManager->getUnusedPredefinedList();
$default = key($language_options);
}
else {
$default = key($existing_languages);
$language_options = array(
$this->t('Existing languages') => $existing_languages,
$this->t('Languages not yet added') => language_admin_predefined_list()
$this->t('Languages not yet added') => $this->languageManager->getUnusedPredefinedList()
);
}