diff --git a/core/modules/language/lib/Drupal/language/Form/LanguageAddForm.php b/core/modules/language/lib/Drupal/language/Form/LanguageAddForm.php index 244fc3e..3798b7e 100644 --- a/core/modules/language/lib/Drupal/language/Form/LanguageAddForm.php +++ b/core/modules/language/lib/Drupal/language/Form/LanguageAddForm.php @@ -70,7 +70,7 @@ public function form(array $form, array &$form_state) { return $form; } - /** + /** * {@inheritdoc} */ public function submitForm(array &$form, array &$form_state) { @@ -101,10 +101,8 @@ public function submitForm(array &$form, array &$form_state) { * {@inheritdoc} */ public function actions(array $form, array &$form_state) { - $actions = parent::actions($form, $form_state); - unset($actions['submit']); - - return $actions; + // No actions needed. + return array(); } /** @@ -114,7 +112,7 @@ public function validateCustom(array $form, array &$form_state) { if ($form_state['values']['predefined_langcode'] == 'custom') { $langcode = $form_state['values']['langcode']; // Reuse the editing form validation routine if we add a custom language. - parent::validate($form['custom_language'], $form_state); + parent::validateCommon($form['custom_language'], $form_state); if ($language = language_load($langcode)) { form_error($form['custom_language']['langcode'], $this->translator->translate('The language %language (%langcode) already exists.', array('%language' => $language->name, '%langcode' => $langcode))); @@ -140,5 +138,4 @@ public function validatePredefined($form, &$form_state) { } } - } diff --git a/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php b/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php index d16e8c0..993ffe7 100644 --- a/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php +++ b/core/modules/language/lib/Drupal/language/Form/LanguageEditForm.php @@ -34,9 +34,27 @@ public function form(array $form, array &$form_state) { * {@inheritdoc} */ public function actions(array $form, array &$form_state) { - $actions = parent::actions($form, $form_state); - $actions['submit']['#value'] = $this->translator->translate('Save language'); + $actions['submit'] = array( + '#type' => 'submit', + '#value' => $this->translator->translate('Save language'), + '#validate' => array(array($this, 'validateCommon')), + '#submit' => array(array($this, 'submitForm')), + ); return $actions; } + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, array &$form_state) { + // Prepare a language object for saving. + $languages = language_list(); + $langcode = $form_state['values']['langcode']; + $language = $languages[$langcode]; + $language->name = $form_state['values']['name']; + $language->direction = $form_state['values']['direction']; + language_save($language); + $form_state['redirect'] = 'admin/config/regional/language'; + } + } diff --git a/core/modules/language/lib/Drupal/language/Form/LanguageFormBase.php b/core/modules/language/lib/Drupal/language/Form/LanguageFormBase.php index 34df4bd..2ebbbea 100644 --- a/core/modules/language/lib/Drupal/language/Form/LanguageFormBase.php +++ b/core/modules/language/lib/Drupal/language/Form/LanguageFormBase.php @@ -9,7 +9,6 @@ use Drupal\Core\Entity\EntityControllerInterface; use Drupal\Core\Entity\EntityFormController; -use Drupal\Core\Entity\EntityStorageControllerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\StringTranslation\Translator\TranslatorInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -21,13 +20,6 @@ abstract class LanguageFormBase extends EntityFormController implements EntityControllerInterface { /** - * The language entity storage controller. - * - * @var \Drupal\Core\Entity\EntityStorageControllerInterface - */ - protected $languageStorage; - - /** * The translator service. * * @var \Drupal\Core\StringTranslation\Translator\TranslatorInterface @@ -39,14 +31,11 @@ * * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler service. - * @param \Drupal\Core\Entity\EntityStorageControllerInterface $language_storage - * The language style entity storage controller. * @param \Drupal\Core\StringTranslation\Translator\TranslatorInterface $translator * The translator service. */ - public function __construct(ModuleHandlerInterface $module_handler, EntityStorageControllerInterface $language_storage, TranslatorInterface $translator) { + public function __construct(ModuleHandlerInterface $module_handler, TranslatorInterface $translator) { parent::__construct($module_handler); - $this->languageStorage = $language_storage; $this->translator = $translator; } @@ -56,7 +45,6 @@ public function __construct(ModuleHandlerInterface $module_handler, EntityStorag public static function createInstance(ContainerInterface $container, $entity_type, array $entity_info) { return new static( $container->get('module_handler'), - $container->get('plugin.manager.entity')->getStorageController($entity_type), $container->get('string_translation') ); } @@ -111,9 +99,9 @@ public function commonForm(array &$form) { } /** - * {@inheritdoc} + * Validates the language editing element. */ - public function validate(array $form, array &$form_state) { + public function validateCommon(array $form, array &$form_state) { // Ensure sane field values for langcode and name. if (!isset($form['langcode_view']) && preg_match('@[^a-zA-Z_-]@', $form_state['values']['langcode'])) { form_error($form['langcode'], $this->translator->translate('%field may only contain characters a-z, underscores, or hyphens.', array('%field' => $form['langcode']['#title']))); @@ -123,24 +111,4 @@ public function validate(array $form, array &$form_state) { } } - /** - * {@inheritdoc} - */ - public function save(array $form, array &$form_state) { - // @todo Use $this->entity->save() - $result = $this->entity->isNew() ? SAVED_NEW : SAVED_UPDATED; - language_save($this->entity); - $form_state['redirect'] = 'admin/config/regional/language'; - return $result; - } - - /** - * {@inheritdoc} - */ - public function actions(array $form, array &$form_state) { - $actions = parent::actions($form, $form_state); - unset($actions['delete']); - return $actions; - } - } diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index c4ff11f..529e73c 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -805,7 +805,7 @@ function locale_form_language_admin_edit_form_alter(&$form, &$form_state) { '#type' => 'checkbox', '#default_value' => locale_translate_english(), ); - $form['#submit'][] = 'locale_form_language_admin_edit_form_alter_submit'; + $form['actions']['submit']['#submit'][] = 'locale_form_language_admin_edit_form_alter_submit'; } }