Commit bad2aea4 authored by catch's avatar catch

Issue #2491875 by joachim, xjm, Xano, alexpott: EntityViewsData adds...

Issue #2491875 by joachim, xjm, Xano, alexpott: EntityViewsData adds Operations links to all entities, which won't work if the entity type has no list builder, leading to WSOD on some views
parent 6f4690d4
......@@ -152,13 +152,17 @@ public function getViewsData() {
}
}
$data[$base_table]['operations'] = array(
'field' => array(
'title' => $this->t('Operations links'),
'help' => $this->t('Provides links to perform entity operations.'),
'id' => 'entity_operations',
),
);
// Entity types must implement a list_builder in order to use Views'
// entity operations field.
if ($this->entityType->hasListBuilderClass()) {
$data[$base_table]['operations'] = array(
'field' => array(
'title' => $this->t('Operations links'),
'help' => $this->t('Provides links to perform entity operations.'),
'id' => 'entity_operations',
),
);
}
// Setup relations to the revisions/property data.
if ($data_table) {
......
......@@ -774,6 +774,26 @@ public function testEntityLinksJustEditForm() {
$this->assertEquals('entity_link_edit', $data['entity_test']['edit_entity_test']['field']['id']);
}
/**
* @covers ::getViewsData
*/
public function testGetViewsDataWithoutEntityOperations() {
// Make sure there is no list builder. The API does not document is
// supports resetting entity handlers, so this might break in the future.
$this->baseEntityType->setListBuilderClass(NULL);
$data = $this->viewsData->getViewsData();
$this->assertArrayNotHasKey('operations', $data[$this->baseEntityType->getBaseTable()]);
}
/**
* @covers ::getViewsData
*/
public function testGetViewsDataWithEntityOperations() {
$this->baseEntityType->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
$data = $this->viewsData->getViewsData();
$this->assertSame('entity_operations', $data[$this->baseEntityType->getBaseTable()]['operations']['field']['id']);
}
/**
* Tests views data for a string field.
*
......
......@@ -313,3 +313,21 @@ function _views_update_argument_map($displays) {
/**
* @} End of "addtogroup updates-8.0.0-beta".
*/
/**
* @addtogroup updates-8.0.0-rc
* @{
*/
/**
* Clear caches to fix entity operations field.
*/
function views_update_8003() {
// Empty update to cause a cache flush so that views data is rebuilt. Entity
// types that don't implement a list builder cannot have the entity operations
// field.
}
/**
* @} End of "addtogroup updates-8.0.0-rc".
*/
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