diff -u b/core/modules/language/language.routing.yml b/core/modules/language/language.routing.yml --- b/core/modules/language/language.routing.yml +++ b/core/modules/language/language.routing.yml @@ -23,5 +23,6 @@ pattern: '/admin/config/regional/language' defaults: - _form: 'Drupal\language\Form\LanguageAdminOverviewForm' + _content: '\Drupal\Core\Entity\Controller\EntityListController::listing' + entity_type: 'language_entity' requirements: _permission: 'administer languages' reverted: --- b/core/modules/language/lib/Drupal/language/Form/LanguageAdminOverviewForm.php +++ /dev/null @@ -1,108 +0,0 @@ - $languages, - '#language_default' => $default, - '#type' => 'table', - '#header' => array( - t('Name'), - t('Weight'), - t('Operations'), - ), - '#tabledrag' => array( - array('order', 'sibling', 'language-order-weight'), - ), - ); - - foreach ($languages as $langcode => $language) { - $form['languages'][$langcode]['#attributes']['class'][] = 'draggable'; - $form['languages'][$langcode]['name'] = array( - '#markup' => String::checkPlain($language->name), - ); - $form['languages'][$langcode]['weight'] = array( - '#type' => 'weight', - '#title' => t('Weight for @title', array('@title' => $language->name)), - '#title_display' => 'invisible', - '#default_value' => $language->weight, - '#attributes' => array( - 'class' => array('language-order-weight'), - ), - '#delta' => 30, - ); - $links = array(); - $links['edit'] = array( - 'title' => t('edit'), - 'href' => 'admin/config/regional/language/edit/' . $langcode, - ); - if ($langcode != $default->id) { - $links['delete'] = array( - 'title' => t('delete'), - 'href' => 'admin/config/regional/language/delete/' . $langcode, - ); - } - $form['languages'][$langcode]['operations'] = array( - '#type' => 'operations', - '#links' => $links, - '#weight' => 100, - ); - } - - $form['actions'] = array('#type' => 'actions'); - $form['actions']['submit'] = array( - '#type' => 'submit', - '#value' => t('Save configuration'), - ); - - return $form; - } - - /** - * {@inheritdoc} - */ - public function validateForm(array &$form, array &$form_state) { - } - - /** - * {@inheritdoc} - */ - public function submitForm(array &$form, array &$form_state) { - $languages = language_list(); - - foreach ($languages as $langcode => $language) { - $language->weight = $form_state['values']['languages'][$langcode]['weight']; - language_save($language); - } - - drupal_set_message(t('Configuration saved.')); - } - -} only in patch2: unchanged: --- /dev/null +++ b/core/modules/language/lib/Drupal/language/LanguageListController.php @@ -0,0 +1,137 @@ + 'table', + '#header' => $this->buildHeader(), + '#empty' => t('There are no languages', array('@label' => $this->entityInfo['label'])), + '#tabledrag' => array( + array('order', 'sibling', 'weight'), + ), + ); + + foreach ($this->load() as $entity) { + $row = $this->buildRow($entity); + if (!empty($row)) { + $form['languages'][$entity->id()] = $row; + } + } + + $form['actions']['#type'] = 'actions'; + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => t('Save order'), + '#button_type' => 'primary', + ); + + return $form; + } + + /** + * {@inheritdoc} + */ + public function getOperations(EntityInterface $entity) { + $operations = parent::getOperations($entity); + $operations['edit'] = array( + 'title' => t('edit'), + 'href' => 'admin/config/regional/language/edit/' . $entity->id(), + ); + $operations['delete'] = array( + 'title' => t('delete'), + 'href' => 'admin/config/regional/language/delete/' . $entity->id(), + ); + return $operations; + } + + /** + * {@inheritdoc} + */ + public function buildHeader() { + $row['name'] = t('Name'); + $row['operations'] = t('Operations'); + $row['weight'] = t('Weight'); + return $row; + } + + /** + * {@inheritdoc} + */ + public function buildRow(EntityInterface $entity) { + if (!$entity->get('locked')) { + $row = array( + 'label' => array( + '#markup' => check_plain($entity->get('label')), + ), + ); + + $row['#attributes']['class'][] = 'draggable'; + + $row['#weight'] = $entity->get('weight'); + // Add weight column. + $row['weight'] = array( + '#type' => 'weight', + '#title' => t('Weight for @title', array('@title' => $entity->label())), + '#title_display' => 'invisible', + '#default_value' => $entity->get('weight'), + '#attributes' => array('class' => array('weight')), + ); + + $row['operations']['data'] = $this->buildOperations($entity); + return $row; + } + } + + + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, array &$form_state) { + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, array &$form_state) { + $languages = language_list(); + + foreach ($languages as $langcode => $language) { + $language->weight = $form_state['values']['languages'][$langcode]['weight']; + language_save($language); + } + + drupal_set_message(t('Configuration saved.')); + } + + /** + * {@inheritdoc} + */ + public function render() { + return drupal_get_form($this); + } +} only in patch2: unchanged: --- a/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php +++ b/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php @@ -20,7 +20,8 @@ * label = @Translation("Language"), * module = "language", * controllers = { - * "storage" = "Drupal\Core\Config\Entity\ConfigStorageController" + * "storage" = "Drupal\Core\Config\Entity\ConfigStorageController", + * "list" = "Drupal\language\LanguageListController", * }, * config_prefix = "language.entity", * entity_keys = {