diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index 59f1efa..4878054 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -764,102 +764,6 @@ function language_negotiation_configure_browser_delete_form_submit($form, &$form
}
/**
- * Returns the content language settings form.
- */
-function language_content_settings_page() {
- return drupal_get_form('language_content_settings_form', language_entity_supported());
-}
-
-/**
- * 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 . '/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) {
@@ -919,17 +823,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/language.module b/core/modules/language/language.module
index 6294f31..51c7a2b 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -147,9 +147,7 @@ function language_menu() {
$items['admin/config/regional/content-language'] = array(
'title' => 'Content language settings',
'description' => 'Configure content language support for any multilingual element.',
- 'page callback' => 'language_content_settings_page',
- 'access arguments' => array('administer languages'),
- 'file' => 'language.admin.inc',
+ 'route_name' => 'language_content_settings',
);
return $items;
@@ -193,22 +191,6 @@ function language_theme() {
}
/**
- * Returns a list of supported entity types.
- *
- * @return array
- * An array of entity type names.
- */
-function language_entity_supported() {
- $supported = array();
- foreach (entity_get_info() as $entity_type => $info) {
- if (!empty($info['translatable'])) {
- $supported[$entity_type] = $entity_type;
- }
- }
- return $supported;
-}
-
-/**
* Implements hook_element_info_alter().
*/
function language_element_info_alter(&$type) {
diff --git a/core/modules/language/language.routing.yml b/core/modules/language/language.routing.yml
index 4a2fc8c..a5a1b70 100644
--- a/core/modules/language/language.routing.yml
+++ b/core/modules/language/language.routing.yml
@@ -18,3 +18,10 @@ language_negotiation_selected:
_form: 'Drupal\language\Form\NegotiationSelectedForm'
requirements:
_permission: 'administer languages'
+
+language_content_settings:
+ pattern: '/admin/config/regional/content-language'
+ defaults:
+ _form: 'Drupal\language\Form\ContentLanguageSettingsForm'
+ requirements:
+ _permission: 'administer languages'
diff --git a/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
new file mode 100644
index 0000000..cca71a1
--- /dev/null
+++ b/core/modules/language/lib/Drupal/language/Form/ContentLanguageSettingsForm.php
@@ -0,0 +1,132 @@
+ $info) {
+ if (!empty($info['translatable'])) {
+ $supported[$entity_type] = $entity_type;
+ }
+ }
+ return $supported;
+ }
+
+ /**
+ * Implements \Drupal\Core\Form\FormInterface::getFormID().
+ */
+ public function getFormID() {
+ return 'language_content_settings_form';
+ }
+
+ /**
+ * Implements \Drupal\Core\Form\FormInterface::buildForm().
+ */
+ public function buildForm(array $form, array &$form_state) {
+ $entity_info = entity_get_info();
+ $labels = array();
+ $default = array();
+
+ foreach ($this->entitySupported() 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 . '/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 parent::buildForm($form, $form_state);
+ }
+
+ /**
+ * Implements \Drupal\Core\Form\FormInterface::submitForm().
+ */
+ 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']);
+ }
+ }
+ parent::submitForm($form, $form_state);
+ }
+
+}