summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathaniel Catchpole2018-06-22 13:22:28 (GMT)
committerNathaniel Catchpole2018-06-22 13:22:28 (GMT)
commit4dc2f4aea8bea761b6b51b366dea0d288e001b34 (patch)
tree692242dc47256b0c9fc2a311bbd7bfaa29a07bcf
parent252f7ffcf2bbbf5bfbd23894a63e44ae9f9d7e54 (diff)
Issue #2658956 by Daniel_Rempe, Lendude, mikeker, catch, Jeff Cardwell, tstoeckler, hctom, dawehner, alexpott: Taxonomy vocabulary data not available as views fields
-rw-r--r--core/modules/taxonomy/src/TermViewsData.php2
-rw-r--r--core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml163
-rw-r--r--core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php92
3 files changed, 256 insertions, 1 deletions
diff --git a/core/modules/taxonomy/src/TermViewsData.php b/core/modules/taxonomy/src/TermViewsData.php
index 469c3e8..6cade9a 100644
--- a/core/modules/taxonomy/src/TermViewsData.php
+++ b/core/modules/taxonomy/src/TermViewsData.php
@@ -66,7 +66,7 @@ class TermViewsData extends EntityViewsData {
];
$data['taxonomy_term_field_data']['vid']['help'] = $this->t('Filter the results of "Taxonomy: Term" to a particular vocabulary.');
- unset($data['taxonomy_term_field_data']['vid']['field']);
+ $data['taxonomy_term_field_data']['vid']['field']['help'] = t('The vocabulary name.');
$data['taxonomy_term_field_data']['vid']['argument']['id'] = 'vocabulary_vid';
unset($data['taxonomy_term_field_data']['vid']['sort']);
diff --git a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml
new file mode 100644
index 0000000..ec5ae2d
--- /dev/null
+++ b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml
@@ -0,0 +1,163 @@
+langcode: en
+status: true
+dependencies:
+ module:
+ - taxonomy
+ - user
+id: test_taxonomy_vid_field
+label: test_taxonomy_vid_field
+module: views
+description: ''
+tag: ''
+base_table: taxonomy_term_field_data
+base_field: tid
+core: 8.x
+display:
+ default:
+ display_plugin: default
+ id: default
+ display_title: Master
+ position: 0
+ display_options:
+ access:
+ type: perm
+ options:
+ perm: 'access content'
+ cache:
+ type: tag
+ options: { }
+ query:
+ type: views_query
+ options:
+ disable_sql_rewrite: false
+ distinct: false
+ replica: false
+ query_comment: ''
+ query_tags: { }
+ exposed_form:
+ type: basic
+ options:
+ submit_button: Apply
+ reset_button: false
+ reset_button_label: Reset
+ exposed_sorts_label: 'Sort by'
+ expose_sort_order: true
+ sort_asc_label: Asc
+ sort_desc_label: Desc
+ pager:
+ type: full
+ options:
+ items_per_page: 10
+ offset: 0
+ id: 0
+ total_pages: null
+ expose:
+ items_per_page: false
+ items_per_page_label: 'Items per page'
+ items_per_page_options: '5, 10, 25, 50'
+ items_per_page_options_all: false
+ items_per_page_options_all_label: '- All -'
+ offset: false
+ offset_label: Offset
+ tags:
+ previous: '‹ Previous'
+ next: 'Next ›'
+ first: '« First'
+ last: 'Last »'
+ quantity: 9
+ style:
+ type: default
+ options:
+ grouping: { }
+ row_class: ''
+ default_row_class: true
+ uses_fields: false
+ row:
+ type: fields
+ options:
+ inline: { }
+ separator: ''
+ hide_empty: false
+ default_field_elements: true
+ fields:
+ vid:
+ id: vid
+ table: taxonomy_term_field_data
+ field: vid
+ relationship: none
+ group_type: group
+ admin_label: ''
+ label: ''
+ exclude: false
+ alter:
+ alter_text: false
+ text: ''
+ make_link: false
+ path: ''
+ absolute: false
+ external: false
+ replace_spaces: false
+ path_case: none
+ trim_whitespace: false
+ alt: ''
+ rel: ''
+ link_class: ''
+ prefix: ''
+ suffix: ''
+ target: ''
+ nl2br: false
+ max_length: 0
+ word_boundary: true
+ ellipsis: true
+ more_link: false
+ more_link_text: ''
+ more_link_path: ''
+ strip_tags: false
+ trim: false
+ preserve_tags: ''
+ html: false
+ element_type: ''
+ element_class: ''
+ element_label_type: ''
+ element_label_class: ''
+ element_label_colon: false
+ element_wrapper_type: ''
+ element_wrapper_class: ''
+ element_default_classes: true
+ empty: ''
+ hide_empty: false
+ empty_zero: false
+ hide_alter_empty: true
+ click_sort_column: target_id
+ type: entity_reference_label
+ settings:
+ link: false
+ group_column: target_id
+ group_columns: { }
+ group_rows: true
+ delta_limit: 0
+ delta_offset: 0
+ delta_reversed: false
+ delta_first_last: false
+ multi_type: separator
+ separator: ', '
+ field_api_classes: false
+ entity_type: taxonomy_term
+ entity_field: vid
+ plugin_id: field
+ filters: { }
+ sorts: { }
+ header: { }
+ footer: { }
+ empty: { }
+ relationships: { }
+ arguments: { }
+ display_extenders: { }
+ cache_metadata:
+ max-age: -1
+ contexts:
+ - 'languages:language_content'
+ - 'languages:language_interface'
+ - url.query_args
+ - user.permissions
+ tags: { }
diff --git a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php
new file mode 100644
index 0000000..2fde283
--- /dev/null
+++ b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Drupal\Tests\taxonomy\Kernel\Views;
+
+use Drupal\Core\Render\RenderContext;
+use Drupal\Tests\taxonomy\Functional\TaxonomyTestTrait;
+use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
+use Drupal\user\Entity\User;
+use Drupal\views\Tests\ViewTestData;
+use Drupal\views\Views;
+use Drupal\taxonomy\Entity\Vocabulary;
+
+/**
+ * Tests the taxonomy term VID field handler.
+ *
+ * @group taxonomy
+ */
+class TaxonomyFieldVidTest extends ViewsKernelTestBase {
+
+ use TaxonomyTestTrait;
+
+ /**
+ * Modules to enable.
+ *
+ * @var array
+ */
+ public static $modules = ['taxonomy', 'taxonomy_test_views', 'text', 'filter'];
+
+ /**
+ * Views used by this test.
+ *
+ * @var array
+ */
+ public static $testViews = ['test_taxonomy_vid_field'];
+
+ /**
+ * A taxonomy term to use in this test.
+ *
+ * @var \Drupal\taxonomy\Entity\Term
+ */
+ protected $term1;
+
+ /**
+ * An admin user.
+ *
+ * @var \Drupal\user\Entity\User;
+ */
+ protected $adminUser;
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function setUp($import_test_views = TRUE) {
+ parent::setUp($import_test_views);
+
+ $this->installEntitySchema('taxonomy_term');
+ $this->installEntitySchema('user');
+ $this->installConfig(['filter']);
+
+ /** @var \Drupal\taxonomy\Entity\Vocabulary $vocabulary */
+ $vocabulary = $this->createVocabulary();
+ $this->term1 = $this->createTerm($vocabulary);
+
+ // Create user 1 and set is as the logged in user, so that the logged in
+ // user has the correct permissions to view the vocabulary name.
+ $this->adminUser = User::create(['name' => $this->randomString()]);
+ $this->adminUser->save();
+ $this->container->get('current_user')->setAccount($this->adminUser);
+
+ ViewTestData::createTestViews(get_class($this), ['taxonomy_test_views']);
+ }
+
+ /**
+ * Tests the field handling for the Vocabulary ID.
+ */
+ public function testViewsHandlerVidField() {
+ /** @var \Drupal\Core\Render\RendererInterface $renderer */
+ $renderer = \Drupal::service('renderer');
+
+ $view = Views::getView('test_taxonomy_vid_field');
+ $this->executeView($view);
+
+ $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
+ return $view->field['vid']->advancedRender($view->result[0]);
+ });
+ $vocabulary = Vocabulary::load($this->term1->bundle());
+ $expected = $vocabulary->get('name');
+
+ $this->assertEquals($expected, $actual);
+ }
+
+}