Issue #2254495 by ParisLiakos, alexpott: Move language_admin_predefined_list to ConfigurableLanguageManager.
parent
2b9cec6dbe
commit
85c8f32483
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue