diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index ee3dbd1..008e462 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -779,95 +779,6 @@ function language_content_settings_page() { } /** - * Form constructor for the content language settings form. - * - * @param array $supported - * Entity types with language support. - * - * @see language_content_settings_form_submit() - * - * @ingroup forms - */ -function language_content_settings_form(array $form, array $form_state, array $supported) { - $entity_info = entity_get_info(); - $labels = array(); - $default = array(); - - foreach ($supported as $entity_type) { - $labels[$entity_type] = isset($entity_info[$entity_type]['label']) ? $entity_info[$entity_type]['label'] : $entity_type; - $default[$entity_type] = FALSE; - - // Check whether we have any custom setting. - foreach (entity_get_bundles($entity_type) as $bundle => $bundle_info) { - $conf = language_get_default_configuration($entity_type, $bundle); - if (!empty($conf['language_show']) || $conf['langcode'] != 'site_default') { - $default[$entity_type] = $entity_type; - } - $language_configuration[$entity_type][$bundle] = $conf; - } - } - - asort($labels); - - $path = drupal_get_path('module', 'language'); - $form = array( - '#labels' => $labels, - '#attached' => array( - 'css' => array($path . '/css/language.admin.css'), - ), - ); - - $form['entity_types'] = array( - '#title' => t('Custom language settings'), - '#type' => 'checkboxes', - '#options' => $labels, - '#default_value' => $default, - ); - - $form['settings'] = array('#tree' => TRUE); - - foreach ($labels as $entity_type => $label) { - $info = $entity_info[$entity_type]; - - $form['settings'][$entity_type] = array( - '#title' => $label, - '#type' => 'container', - '#entity_type' => $entity_type, - '#theme' => 'language_content_settings_table', - '#bundle_label' => isset($info['bundle_label']) ? $info['bundle_label'] : $label, - '#states' => array( - 'visible' => array( - ':input[name="entity_types[' . $entity_type . ']"]' => array('checked' => TRUE), - ), - ), - ); - - foreach (entity_get_bundles($entity_type) as $bundle => $bundle_info) { - $form['settings'][$entity_type][$bundle]['settings'] = array( - '#type' => 'item', - '#label' => $bundle_info['label'], - 'language' => array( - '#type' => 'language_configuration', - '#entity_information' => array( - 'entity_type' => $entity_type, - 'bundle' => $bundle, - ), - '#default_value' => $language_configuration[$entity_type][$bundle], - ), - ); - } - } - - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( - '#type' => 'submit', - '#value' => t('Save'), - ); - - return $form; -} - -/** * Implements hook_preprocess_HOOK() for theme_language_content_settings_table(). */ function template_preprocess_language_content_settings_table(&$variables) { @@ -927,17 +838,3 @@ function template_preprocess_language_content_settings_table(&$variables) { function theme_language_content_settings_table($variables) { return '

' . $variables['build']['#title'] . '

' . drupal_render($variables['build']); } - -/** - * Form submission handler for language_content_settings_form(). - */ -function language_content_settings_form_submit(array $form, array &$form_state) { - $entity_types = $form_state['values']['entity_types']; - $settings = &$form_state['values']['settings']; - foreach ($settings as $entity_type => $entity_settings) { - foreach ($entity_settings as $bundle => $bundle_settings) { - language_save_default_configuration($entity_type, $bundle, $bundle_settings['settings']['language']); - } - } - drupal_set_message(t('Settings successfully updated.')); -} diff --git a/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php index 5b7d165..ba80748 100644 --- a/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php +++ b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php @@ -7,12 +7,51 @@ namespace Drupal\language\Form; +use Drupal\Core\Config\ConfigFactory; +use Drupal\Core\Config\Context\ContextInterface; +use Drupal\Core\Controller\ControllerInterface; +use Drupal\Core\Entity\EntityManager; use Drupal\system\SystemConfigFormBase; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Configure the content language settings for this site. */ -class ContentLanguageSettingsForm extends SystemConfigFormBase { +class ContentLanguageSettingsForm extends SystemConfigFormBase implements ControllerInterface { + + /** + * The entity manager. + * + * @var \Drupal\Core\Entity\EntityManager + */ + protected $entityManager; + + /** + * Constructs a ContentLanguageSettingsForm object. + * + * @param \Drupal\Core\Config\ConfigFactory $config_factory + * The config factory. + * @param \Drupal\Core\Config\Context\ContextInterface $context + * The configuration context to use. + * @param \Drupal\Core\Entity\EntityManager $entity_manager + * The entity manager. + */ + public function __construct(ConfigFactory $config_factory, ContextInterface $context, EntityManager $entity_manager) { + parent::__construct($config_factory, $context); + + $this->entityManager = $entity_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('config.factory'), + $container->get('config.context.free'), + $container->get('plugin.manager.entity') + ); + } /** * Return a list of entity types for which language settings are supported. @@ -21,7 +60,7 @@ class ContentLanguageSettingsForm extends SystemConfigFormBase { * A list of entity types which are translatable. */ protected function entitySupported() { - foreach (entity_get_info() as $entity_type => $info) { + foreach ($this->entityManager->getDefinitions() as $entity_type => $info) { if (!empty($info['translatable'])) { $supported[$entity_type] = $entity_type; } @@ -40,7 +79,7 @@ public function getFormID() { * {@inheritdoc} */ public function buildForm(array $form, array &$form_state) { - $entity_info = entity_get_info(); + $entity_info = $this->entityManager->getDefinitions(); $labels = array(); $default = array(); @@ -123,11 +162,16 @@ public function buildForm(array $form, array &$form_state) { * {@inheritdoc} */ public function submitForm(array &$form, array &$form_state) { - $entity_types = $form_state['values']['entity_types']; $settings = &$form_state['values']['settings']; foreach ($settings as $entity_type => $entity_settings) { foreach ($entity_settings as $bundle => $bundle_settings) { - language_save_default_configuration($entity_type, $bundle, $bundle_settings['settings']['language']); + $this->configFactory->get('language.settings') + ->set(language_get_default_configuration_settings_key($entity_type, $bundle), + array( + 'langcode' => $bundle_settings['settings']['language']['langcode'], + 'language_show' => $bundle_settings['settings']['langcode']['language_show'], + ) + ); } } parent::submitForm($form, $form_state);