diff --git a/core/modules/comment/src/Plugin/views/wizard/Comment.php b/core/modules/comment/src/Plugin/views/wizard/Comment.php index 61d92c591ab5ba4b4f1c6ecf057328d9d1c7bc9f..a74168d0968acfef0ceecdc2c07d0cc4bfd13d77 100644 --- a/core/modules/comment/src/Plugin/views/wizard/Comment.php +++ b/core/modules/comment/src/Plugin/views/wizard/Comment.php @@ -28,14 +28,6 @@ class Comment extends WizardPluginBase { * Set default values for the filters. */ protected $filters = [ - 'status' => [ - 'value' => TRUE, - 'table' => 'comment_field_data', - 'field' => 'status', - 'plugin_id' => 'boolean', - 'entity_type' => 'comment', - 'entity_field' => 'status', - ], 'status_node' => [ 'value' => TRUE, 'table' => 'node_field_data', diff --git a/core/modules/media/src/Plugin/views/wizard/Media.php b/core/modules/media/src/Plugin/views/wizard/Media.php index eb457015dc61e9421546f4148c7378ec0e23472d..30a7ad632381cbbdc2befe17d492fc3211465b23 100644 --- a/core/modules/media/src/Plugin/views/wizard/Media.php +++ b/core/modules/media/src/Plugin/views/wizard/Media.php @@ -22,22 +22,6 @@ class Media extends WizardPluginBase { */ protected $createdColumn = 'media_field_data-created'; - /** - * Set default values for the filters. - * - * @var array - */ - protected $filters = [ - 'status' => [ - 'value' => '1', - 'table' => 'media_field_data', - 'field' => 'status', - 'plugin_id' => 'boolean', - 'entity_type' => 'media', - 'entity_field' => 'status', - ], - ]; - /** * {@inheritdoc} */ diff --git a/core/modules/media/src/Plugin/views/wizard/MediaRevision.php b/core/modules/media/src/Plugin/views/wizard/MediaRevision.php index 7abc41aad775dec82c6cc3854fe95d6870f2184b..10b51547b9d471cd12cc58f6c45cee02e8e3d8ad 100644 --- a/core/modules/media/src/Plugin/views/wizard/MediaRevision.php +++ b/core/modules/media/src/Plugin/views/wizard/MediaRevision.php @@ -22,22 +22,6 @@ class MediaRevision extends WizardPluginBase { */ protected $createdColumn = 'media_field_revision-created'; - /** - * Set default values for the filters. - * - * @var array - */ - protected $filters = [ - 'status' => [ - 'value' => '1', - 'table' => 'media_field_revision', - 'field' => 'status', - 'plugin_id' => 'boolean', - 'entity_type' => 'media', - 'entity_field' => 'status', - ], - ]; - /** * {@inheritdoc} */ diff --git a/core/modules/node/src/Plugin/views/wizard/Node.php b/core/modules/node/src/Plugin/views/wizard/Node.php index 34d4bcf6c5e7784f1a59f2e76f5c5ddfb295994c..1be211fef5b49ee51525c800061254834ae8862d 100644 --- a/core/modules/node/src/Plugin/views/wizard/Node.php +++ b/core/modules/node/src/Plugin/views/wizard/Node.php @@ -25,20 +25,6 @@ class Node extends WizardPluginBase { */ protected $createdColumn = 'node_field_data-created'; - /** - * Set default values for the filters. - */ - protected $filters = [ - 'status' => [ - 'value' => TRUE, - 'table' => 'node_field_data', - 'field' => 'status', - 'plugin_id' => 'boolean', - 'entity_type' => 'node', - 'entity_field' => 'status', - ] - ]; - /** * Overrides Drupal\views\Plugin\views\wizard\WizardPluginBase::getAvailableSorts(). * diff --git a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php index 9c3465d2ba4cf9d595284ca043fb5c5409c3048c..258d6d3237d399c16e264655c03a99c9cf8e8719 100644 --- a/core/modules/node/src/Plugin/views/wizard/NodeRevision.php +++ b/core/modules/node/src/Plugin/views/wizard/NodeRevision.php @@ -24,20 +24,6 @@ class NodeRevision extends WizardPluginBase { */ protected $createdColumn = 'changed'; - /** - * Set default values for the filters. - */ - protected $filters = [ - 'status' => [ - 'value' => TRUE, - 'table' => 'node_field_revision', - 'field' => 'status', - 'plugin_id' => 'boolean', - 'entity_type' => 'node', - 'entity_field' => 'status', - ] - ]; - /** * Overrides Drupal\views\Plugin\views\wizard\WizardPluginBase::rowStyleOptions(). * diff --git a/core/modules/node/tests/src/Functional/Views/NodeRevisionWizardTest.php b/core/modules/node/tests/src/Functional/Views/NodeRevisionWizardTest.php index db70b2c9da574ece0e03d865369a47b4652962c6..4cbecf314eee0d0782a9b205e9d06f1d150347c9 100644 --- a/core/modules/node/tests/src/Functional/Views/NodeRevisionWizardTest.php +++ b/core/modules/node/tests/src/Functional/Views/NodeRevisionWizardTest.php @@ -45,16 +45,19 @@ public function testViewAdd() { $view['show[wizard_key]'] = 'node_revision'; $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit')); - $view_storage_controller = \Drupal::entityManager()->getStorage('view'); - /** @var \Drupal\views\Entity\View $view */ - $view = $view_storage_controller->load($view['id']); + $view = Views::getView($view['id']); + $view->initHandlers(); - $this->assertEqual($view->get('base_table'), 'node_field_revision'); + $this->assertEqual($view->getBaseTables(), ['node_field_revision' => TRUE, '#global' => TRUE]); - $executable = Views::executableFactory()->get($view); - $this->executeView($executable); + // Check for the default filters. + $this->assertEqual($view->filter['status']->table, 'node_field_revision'); + $this->assertEqual($view->filter['status']->field, 'status'); + $this->assertTrue($view->filter['status']->value); - $this->assertIdenticalResultset($executable, [['vid' => 1], ['vid' => 3], ['vid' => 2], ['vid' => 4]], + $this->executeView($view); + + $this->assertIdenticalResultset($view, [['vid' => 1], ['vid' => 3], ['vid' => 2], ['vid' => 4]], ['vid' => 'vid']); } diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php index 1771c710ea25403de5e2e4fdd21883e266ffc064..0b3dcc9a10a984c5bbe20ed64c4a0adce1105e20 100644 --- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php +++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php @@ -3,6 +3,7 @@ namespace Drupal\views\Plugin\views\wizard; use Drupal\Component\Utility\NestedArray; +use Drupal\Core\Entity\EntityPublishedInterface; use Drupal\Core\Entity\EntityTypeBundleInfoInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Routing\UrlGeneratorTrait; @@ -140,7 +141,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition $entity_types = \Drupal::entityManager()->getDefinitions(); foreach ($entity_types as $entity_type_id => $entity_type) { - if ($this->base_table == $entity_type->getBaseTable() || $this->base_table == $entity_type->getDataTable()) { + if (in_array($this->base_table, [$entity_type->getBaseTable(), $entity_type->getDataTable(), $entity_type->getRevisionTable(), $entity_type->getRevisionDataTable()], TRUE)) { $this->entityType = $entity_type; $this->entityTypeId = $entity_type_id; } @@ -165,6 +166,21 @@ public function getCreatedColumn() { public function getFilters() { $filters = []; + // Add a default filter on the publishing status field, if available. + if ($this->entityType && is_subclass_of($this->entityType->getClass(), EntityPublishedInterface::class)) { + $field_name = $this->entityType->getKey('published'); + $this->filters = [ + $field_name => [ + 'value' => TRUE, + 'table' => $this->base_table, + 'field' => $field_name, + 'plugin_id' => 'boolean', + 'entity_type' => $this->entityTypeId, + 'entity_field' => $field_name, + ] + ] + $this->filters; + } + $default = $this->filter_defaults; foreach ($this->filters as $name => $info) {