diff --git a/core/modules/language/language.module b/core/modules/language/language.module index e6645b8..496ae60 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -85,20 +85,20 @@ function language_menu() { 'type' => MENU_LOCAL_ACTION, 'file' => 'language.admin.inc', ); - $items['admin/config/regional/language/edit/%language'] = array( + $items['admin/config/regional/language/%language/edit'] = array( 'title' => 'Edit language', 'page callback' => 'drupal_get_form', - 'page arguments' => array('language_admin_edit_form', 5), + 'page arguments' => array('language_admin_edit_form', 4), 'access callback' => 'language_access_language_edit_or_delete', - 'access arguments' => array(5), + 'access arguments' => array(4), 'file' => 'language.admin.inc', ); - $items['admin/config/regional/language/delete/%language'] = array( + $items['admin/config/regional/language/%language/delete'] = array( 'title' => 'Confirm delete', 'page callback' => 'drupal_get_form', - 'page arguments' => array('language_admin_delete_form', 5), + 'page arguments' => array('language_admin_delete_form', 4), 'access callback' => 'language_access_language_edit_or_delete', - 'access arguments' => array(5), + 'access arguments' => array(4), 'file' => 'language.admin.inc', ); diff --git a/core/modules/language/lib/Drupal/language/LanguageListController.php b/core/modules/language/lib/Drupal/language/LanguageListController.php index 4994f61..81239b2 100644 --- a/core/modules/language/lib/Drupal/language/LanguageListController.php +++ b/core/modules/language/lib/Drupal/language/LanguageListController.php @@ -44,6 +44,9 @@ public function getFormID() { */ public function getOperations(EntityInterface $entity) { $operations = parent::getOperations($entity); + // For configuration entities edit path is the MENU_DEFAULT_LOCAL_TASK but + // for languages we make an exception. + $operations['edit']['href'] = $operations['edit']['href'] . '/edit'; $default = language_default(); if ($entity->id() == $default->id) { @@ -100,7 +103,7 @@ public function buildForm(array $form, array &$form_state) { '#languages' => $languages, '#type' => 'table', '#header' => $this->buildHeader(), - '#empty' => t('There are no languages', array('@label' => $this->entityInfo['label'])), + '#empty' => t('There are no languages'), '#tabledrag' => array( array('order', 'sibling', 'language-order-weight'), ), diff --git a/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php b/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php index 08f233e..a3d28f2 100644 --- a/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php +++ b/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php @@ -10,6 +10,7 @@ use Drupal\Core\Entity\Annotation\EntityType; use Drupal\Core\Annotation\Translation; use Drupal\Core\Config\Entity\ConfigEntityBase; +use Drupal\Core\Session\AccountInterface; use Drupal\language\LanguageInterface; /** @@ -90,4 +91,11 @@ public function uri() { ); } + /** + * {@inheritdoc} + */ + public function access($operation = 'view', AccountInterface $account = NULL) { + return (user_access('administer languages')); + } + } diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php index 1483aa4..8d73aa8 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php @@ -75,7 +75,7 @@ function testLanguageList() { $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.'); // Ensure we can't delete the default language. - $this->drupalGet('admin/config/regional/language/delete/' . $langcode); + $this->drupalGet('admin/config/regional/language/' . $langcode .'/delete'); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); $this->assertText(t('The default language cannot be deleted.'), 'Failed to delete the default language.'); @@ -87,7 +87,7 @@ function testLanguageList() { $edit = array( 'name' => $name, ); - $this->drupalPost('admin/config/regional/language/edit/' . $langcode, $edit, t('Save language')); + $this->drupalPost('admin/config/regional/language/' . $langcode . '/edit', $edit, t('Save language')); $this->assertRaw($name, 'The language has been updated.'); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); @@ -101,27 +101,27 @@ function testLanguageList() { $this->clickLink(t('Delete')); $this->assertText(t('Are you sure you want to delete the language'), '"Delete" link is correct.'); // Delete a language. - $this->drupalGet('admin/config/regional/language/delete/' . $langcode); + $this->drupalGet('admin/config/regional/language/' . $langcode . '/delete'); // First test the 'cancel' link. $this->clickLink(t('Cancel')); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); $this->assertRaw($name, 'The language was not deleted.'); // Delete the language for real. This a confirm form, we do not need any // fields changed. - $this->drupalPost('admin/config/regional/language/delete/' . $langcode, array(), t('Delete')); + $this->drupalPost('admin/config/regional/language/' . $langcode . '/delete', array(), t('Delete')); // We need raw here because %language and %langcode will add HTML. $t_args = array('%language' => $name, '%langcode' => $langcode); $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'The test language has been removed.'); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); // Verify that language is no longer found. - $this->drupalGet('admin/config/regional/language/delete/' . $langcode); + $this->drupalGet('admin/config/regional/language/' . $langcode . '/edit'); $this->assertResponse(404, 'Language no longer found.'); // Make sure the "language_count" variable has been updated correctly. drupal_static_reset('language_list'); $languages = language_list(); $this->assertEqual(variable_get('language_count', 1), count($languages), 'Language count is correct.'); // Delete French. - $this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete')); + $this->drupalPost('admin/config/regional/language/fr/delete', array(), t('Delete')); // Get the count of languages. drupal_static_reset('language_list'); $languages = language_list(); @@ -130,7 +130,7 @@ function testLanguageList() { $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'Disabled language has been removed.'); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); // Verify that language is no longer found. - $this->drupalGet('admin/config/regional/language/delete/fr'); + $this->drupalGet('admin/config/regional/language/fr/delete'); $this->assertResponse(404, 'Language no longer found.'); // Make sure the "language_count" variable has not changed. $this->assertEqual(variable_get('language_count', 1), count($languages), 'Language count is correct.'); @@ -162,7 +162,7 @@ function testLanguageList() { $this->assertNoOptionSelected('edit-site-default-language', 'en', 'Default language updated.'); $this->assertEqual($this->getUrl(), url($path, array('absolute' => TRUE)), 'Correct page redirection.'); - $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete')); + $this->drupalPost('admin/config/regional/language/en/delete', array(), t('Delete')); // We need raw here because %language and %langcode will add HTML. $t_args = array('%language' => 'English', '%langcode' => 'en'); $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), 'The English language has been removed.'); diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index 8d6ff20..6ea2302 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -761,11 +761,10 @@ function locale_form_language_admin_overview_form_alter(&$form, &$form_state) { '#markup' => t('not applicable'), ); } - // #type = link doesn't work with #weight on table. - // reset and set it back after locale_statistics to get it at the right end. - $operations = $form['languages'][$langcode]['operations']; - unset($form['languages'][$langcode]['operations']); - $form['languages'][$langcode]['operations'] = $operations; + // Ensure that weight is the last column. + $weight = $form['languages'][$langcode]['weight']; + unset($form['languages'][$langcode]['weight']); + $form['languages'][$langcode]['weight'] = $weight; } }