diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc index 1cd2155..3c53316 100644 --- a/core/modules/image/image.admin.inc +++ b/core/modules/image/image.admin.inc @@ -8,24 +8,6 @@ use Symfony\Component\HttpFoundation\RedirectResponse; /** - * Menu callback; Listing of all current image styles. - */ -function image_style_list() { - $page = array(); - - $styles = entity_load_multiple('image_style'); - $page['image_style_list'] = array( - '#markup' => theme('image_style_list', array('styles' => $styles)), - '#attached' => array( - 'css' => array(drupal_get_path('module', 'image') . '/css/image.admin.css' => array()), - ), - ); - - return $page; - -} - -/** * Form builder; Edit an image style name and effects order. * * @param $form_state @@ -502,55 +484,6 @@ function image_rotate_form($data) { } /** - * Returns HTML for the page containing the list of image styles. - * - * @param $variables - * An associative array containing: - * - styles: An array of all the image styles returned by image_get_styles(). - * - * @see image_get_styles() - * @ingroup themeable - */ -function theme_image_style_list($variables) { - $styles = $variables['styles']; - - $header = array(t('Style name'), t('Operations')); - $rows = array(); - - foreach ($styles as $style) { - $row = array(); - $row[] = l($style->label(), 'admin/config/media/image-styles/manage/' . $style->id()); - $links = array(); - $links['edit'] = array( - 'title' => t('edit'), - 'href' => 'admin/config/media/image-styles/manage/' . $style->id(), - 'class' => array('image-style-link'), - ); - $links['delete'] = array( - 'title' => t('delete'), - 'href' => 'admin/config/media/image-styles/manage/' . $style->id() . '/delete', - 'class' => array('image-style-link'), - ); - $row[] = array( - 'data' => array( - '#type' => 'operations', - '#links' => $links, - ), - ); - $rows[] = $row; - } - - if (empty($rows)) { - $rows[] = array(array( - 'colspan' => 4, - 'data' => t('There are currently no styles. Add a new one.', array('!url' => url('admin/config/media/image-styles/add'))), - )); - } - - return theme('table', array('header' => $header, 'rows' => $rows)); -} - -/** * Returns HTML for a listing of the effects within a specific image style. * * @param $variables diff --git a/core/modules/image/image.module b/core/modules/image/image.module index 62aee35..63ddee1 100644 --- a/core/modules/image/image.module +++ b/core/modules/image/image.module @@ -98,17 +98,12 @@ function image_menu() { $items['admin/config/media/image-styles'] = array( 'title' => 'Image styles', 'description' => 'Configure styles that can be used for resizing or adjusting images on display.', - 'page callback' => 'image_style_list', - 'access arguments' => array('administer image styles'), - 'file' => 'image.admin.inc', + 'route_name' => 'image_style_list', ); $items['admin/config/media/image-styles/list'] = array( 'title' => 'List', 'description' => 'List the current image styles on the site.', - 'page callback' => 'image_style_list', - 'access arguments' => array('administer image styles'), 'type' => MENU_DEFAULT_LOCAL_TASK, - 'file' => 'image.admin.inc', ); $items['admin/config/media/image-styles/add'] = array( 'title' => 'Add style', @@ -188,9 +183,6 @@ function image_theme() { ), // Theme functions in image.admin.inc. - 'image_style_list' => array( - 'variables' => array('styles' => NULL), - ), 'image_style_effects' => array( 'render element' => 'form', ), diff --git a/core/modules/image/image.routing.yml b/core/modules/image/image.routing.yml index 46a79f1..86d5858 100644 --- a/core/modules/image/image.routing.yml +++ b/core/modules/image/image.routing.yml @@ -12,10 +12,16 @@ image_effect_delete: requirements: _permission: 'administer image styles' +image_style_list: + pattern: '/admin/config/media/image-styles' + defaults: + _entity_list: 'image_style' + requirements: + _permission: 'administer image styles' + image_style_private: pattern: '/system/files/styles/{image_style}/{scheme}' defaults: _controller: '\Drupal\image\Controller\ImageStyleDownloadController::deliver' requirements: _access: 'TRUE' - diff --git a/core/modules/image/lib/Drupal/image/ImageStyleAccessController.php b/core/modules/image/lib/Drupal/image/ImageStyleAccessController.php new file mode 100644 index 0000000..48193c1 --- /dev/null +++ b/core/modules/image/lib/Drupal/image/ImageStyleAccessController.php @@ -0,0 +1,33 @@ +urlGenerator = $url_generator; + } + + /** + * {@inheritdoc} + */ + public static function createInstance(ContainerInterface $container, $entity_type, array $entity_info) { + return new static( + $entity_type, + $entity_info, + $container->get('plugin.manager.entity')->getStorageController($entity_type), + $container->get('module_handler'), + $container->get('url_generator') + ); + } + + /** + * {@inheritdoc} + */ + public function buildHeader() { + $row = parent::buildHeader(); + unset($row['id']); + $row['label'] = t('Style name'); + return $row; + } + + /** + * {@inheritdoc} + */ + public function buildRow(EntityInterface $entity) { + $row = parent::buildRow($entity); + unset($row['id']); + $row['label'] = String::checkPlain($entity->label()); + return $row; + } + + /** + * {@inheritdoc} + */ + public function render() { + $build = parent::render(); + $build['#empty'] = t('There are currently no styles. Add a new one.', array( + '!url' => $this->urlGenerator->generateFromPath('admin/config/media/image-styles/add'), + )); + return $build; + } + +} diff --git a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php index 7fc752b..d9ba4d6 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php +++ b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php @@ -27,7 +27,9 @@ * "form" = { * "delete" = "Drupal\image\Form\ImageStyleDeleteForm" * }, - * "storage" = "Drupal\image\ImageStyleStorageController" + * "storage" = "Drupal\image\ImageStyleStorageController", + * "list" = "Drupal\image\ImageStyleListController", + * "access" = "Drupal\image\ImageStyleAccessController" * }, * uri_callback = "image_style_entity_uri", * config_prefix = "image.style", diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageStyleListTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageStyleListTest.php new file mode 100644 index 0000000..ddd6d43 --- /dev/null +++ b/core/modules/image/lib/Drupal/image/Tests/ImageStyleListTest.php @@ -0,0 +1,53 @@ + 'Image styles list', + 'description' => 'Tests access to overview page and operation links.', + 'group' => 'Image', + ); + } + + function setUp() { + parent::setUp(); + + $style = entity_create('image_style', array('name' => 'style_foo', 'label' => $this->randomString())); + $style->save(); + + $this->admin_user = $this->drupalCreateUser(array('administer image styles')); + $this->drupalLogin($this->admin_user); + } + + function testImageStyleAccess() { + $this->drupalGet('admin/config/media/image-styles'); + $this->clickLink(t('Edit')); + } +}