diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 4f853e4..4d7aeb2 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -157,6 +157,8 @@ function language_menu() { /** * Editing or deleting locked languages should not be possible. + * + * @deprecated Use \Drupal\language\LanguageAccessController instead. */ function language_access_language_edit_or_delete($language) { return !$language->locked && user_access('administer languages'); diff --git a/core/modules/language/lib/Drupal/language/LanguageAccessController.php b/core/modules/language/lib/Drupal/language/LanguageAccessController.php new file mode 100644 index 0000000..df4193d --- /dev/null +++ b/core/modules/language/lib/Drupal/language/LanguageAccessController.php @@ -0,0 +1,24 @@ +locked && user_access('administer languages', $account); + } + +} diff --git a/core/modules/language/lib/Drupal/language/LanguageListController.php b/core/modules/language/lib/Drupal/language/LanguageListController.php index 6cd00c9..9dbe40a 100644 --- a/core/modules/language/lib/Drupal/language/LanguageListController.php +++ b/core/modules/language/lib/Drupal/language/LanguageListController.php @@ -35,30 +35,21 @@ public function getFormID() { * {@inheritdoc} */ public function getOperations(EntityInterface $entity) { + $operations = parent::getOperations($entity); $default = language_default(); - $uri = array( - 'path' => 'admin/config/regional/language', - 'options' => array( - 'entity_type' => $this->entityType, - 'entity' => $this, - ) - ); - $operations = array(); - $operations['edit'] = array( - 'title' => t('Edit'), - 'href' => $uri['path'] . '/edit/' . $entity->id(), - 'options' => $uri['options'], - 'weight' => 10, - ); + // Edit and delete path for Languages entities have a different scheme + // then other config entities. + $path = 'admin/config/regional/language'; + if (isset($operations['edit'])) { + $operations['edit']['href'] = $path . '/edit/' . $entity->id(); + } + if (isset($operations['delete'])) { + $operations['delete']['href'] = $path . '/delete/' . $entity->id(); + } - if ($entity->id() != $default->id) { - $operations['delete'] = array( - 'title' => t('Delete'), - 'href' => $uri['path'] . '/delete/' . $entity->id(), - 'options' => $uri['options'], - 'weight' => 100, - ); + if ($entity->id() == $default->id) { + unset($operations['delete']); } return $operations; @@ -68,9 +59,10 @@ public function getOperations(EntityInterface $entity) { * {@inheritdoc} */ public function buildHeader() { - $row['name'] = t('Name'); + $row = parent::buildHeader(); + unset($row['id']); + $row['label'] = t('Name'); $row['weight'] = t('Weight'); - $row['operations'] = t('Operations'); return $row; } @@ -79,8 +71,10 @@ public function buildHeader() { * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { - $row = array(); + $row = parent::buildRow($entity); + $row['#attributes']['class'][] = 'draggable'; + unset($row['id']); $row['label'] = array( '#markup' => check_plain($entity->get('label')), @@ -97,8 +91,6 @@ public function buildRow(EntityInterface $entity) { '#delta' => 30, ); - $row['operations']['data'] = $this->buildOperations($entity); - return $row; } @@ -114,7 +106,7 @@ public function buildForm(array $form, array &$form_state) { '#header' => $this->buildHeader(), '#empty' => t('There are no languages', array('@label' => $this->entityInfo['label'])), '#tabledrag' => array( - array('order', 'sibling', 'language-order-weight'), + array('order', 'sibling', '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 1cde584..f80c37f 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 @@ -22,6 +22,7 @@ * controllers = { * "storage" = "Drupal\Core\Config\Entity\ConfigStorageController", * "list" = "Drupal\language\LanguageListController", + * "access" = "Drupal\language\LanguageAccessController" * }, * config_prefix = "language.entity", * entity_keys = {