Commit 165ec2ca authored by alexpott's avatar alexpott

Issue #2030129 by a_c_m, tim.plunkett: Fixed FilterFormat has no access controller.

parent 031a22cd
<?php
/**
* @file
* Contains \Drupal\filter\FilterFormatAccessController.
*/
namespace Drupal\filter;
use Drupal\Core\Entity\EntityAccessController;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;
/**
* Defines the access controller for the filter format entity type.
*/
class FilterFormatAccessController extends EntityAccessController {
/**
* {@inheritdoc}
*/
protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
// Handle special cases up front. All users have access to the fallback
// format.
if ($entity->isFallbackFormat()) {
return TRUE;
}
if (user_access('administer filters', $account)) {
return TRUE;
}
// Check the permission if one exists; otherwise, we have a non-existent
// format so we return FALSE.
$permission = filter_permission_name($entity);
return !empty($permission) && user_access($permission, $account);
}
}
...@@ -143,7 +143,9 @@ public function buildRow(EntityInterface $entity) { ...@@ -143,7 +143,9 @@ public function buildRow(EntityInterface $entity) {
public function getOperations(EntityInterface $entity) { public function getOperations(EntityInterface $entity) {
$operations = parent::getOperations($entity); $operations = parent::getOperations($entity);
$operations['edit']['title'] = t('Configure'); if (isset($operations['edit'])) {
$operations['edit']['title'] = t('Configure');
}
// The fallback format may not be disabled. // The fallback format may not be disabled.
if ($entity->isFallbackFormat()) { if ($entity->isFallbackFormat()) {
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
* "disable" = "Drupal\filter\Form\FilterDisableForm" * "disable" = "Drupal\filter\Form\FilterDisableForm"
* }, * },
* "list" = "Drupal\filter\FilterFormatListController", * "list" = "Drupal\filter\FilterFormatListController",
* "access" = "Drupal\filter\FilterFormatAccessController",
* "storage" = "Drupal\Core\Config\Entity\ConfigStorageController" * "storage" = "Drupal\Core\Config\Entity\ConfigStorageController"
* }, * },
* config_prefix = "filter.format", * config_prefix = "filter.format",
......
...@@ -76,7 +76,16 @@ function testFormatAdmin() { ...@@ -76,7 +76,16 @@ function testFormatAdmin() {
// Edit text format. // Edit text format.
$this->drupalGet('admin/config/content/formats'); $this->drupalGet('admin/config/content/formats');
$this->assertLinkByHref('admin/config/content/formats/manage/' . $format_id); // Cannot use the assertNoLinkByHref method as it does partial url matching
// and 'admin/config/content/formats/manage/' . $format_id . '/disable'
// exists.
// @todo: See https://drupal.org/node/2031223 for the above
$edit_link = $this->xpath('//a[@href=:href]', array(
':href' => url('admin/config/content/formats/manage/' . $format_id)
));
$this->assertTrue($edit_link, format_string('Link href %href found.',
array('%href' => 'admin/config/content/formats/manage/' . $format_id)
));
$this->drupalGet('admin/config/content/formats/manage/' . $format_id); $this->drupalGet('admin/config/content/formats/manage/' . $format_id);
$this->drupalPost(NULL, array(), t('Save configuration')); $this->drupalPost(NULL, array(), t('Save configuration'));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment