From 4fc22ade015eeedfa19a09e523251bc0559cd17f Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Mon, 9 Jan 2017 16:27:16 +0000 Subject: [PATCH] Issue #2623568 by yanniboi, claudiu.cristea, himanshugautam, anil280988, sidharthap, Sagar Ramgade: Config schema of argument_default plugins is incorrect --- .../node/config/schema/node.views.schema.yml | 7 --- .../user/config/schema/user.views.schema.yml | 4 -- .../schema/views.argument_default.schema.yml | 18 ++++++ .../src/Tests/Plugin/ArgumentDefaultTest.php | 23 +++++++ ...view.test_argument_default_query_param.yml | 62 +++++++++++++++++++ 5 files changed, 103 insertions(+), 11 deletions(-) create mode 100644 core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_query_param.yml diff --git a/core/modules/node/config/schema/node.views.schema.yml b/core/modules/node/config/schema/node.views.schema.yml index c00faab2bd3d..f9596119bee5 100644 --- a/core/modules/node/config/schema/node.views.schema.yml +++ b/core/modules/node/config/schema/node.views.schema.yml @@ -66,13 +66,6 @@ views.argument.node_vid: type: boolean label: 'Exclude' -views.argument_default.node: - type: sequence - label: 'Content ID from URL' - sequence: - type: string - label: 'Nid' - views.field.node: type: views_field label: 'Node' diff --git a/core/modules/user/config/schema/user.views.schema.yml b/core/modules/user/config/schema/user.views.schema.yml index 23823293fbdf..f395b9272215 100644 --- a/core/modules/user/config/schema/user.views.schema.yml +++ b/core/modules/user/config/schema/user.views.schema.yml @@ -49,10 +49,6 @@ views.argument_default.user: type: boolean label: 'Also look for a node and use the node author' -views.argument_default.current_user: - type: boolean - label: 'User ID from logged in user' - views_field_user: type: views_field mapping: diff --git a/core/modules/views/config/schema/views.argument_default.schema.yml b/core/modules/views/config/schema/views.argument_default.schema.yml index 0a33c92c5203..63fc23255141 100644 --- a/core/modules/views/config/schema/views.argument_default.schema.yml +++ b/core/modules/views/config/schema/views.argument_default.schema.yml @@ -1,5 +1,9 @@ # Schema for the views default arguments. +views.argument_default.*: + type: mapping + label: 'Base default argument' + views.argument_default.fixed: type: mapping label: 'Fixed' @@ -18,3 +22,17 @@ views.argument_default.raw: use_alias: type: boolean label: 'Use path alias' + +views.argument_default.query_parameter: + type: mapping + label: 'Query parameter' + mapping: + query_param: + type: string + label: 'Parameter' + fallback: + type: string + label: 'Fallback value' + multiple: + type: string + label: 'Multiple values' diff --git a/core/modules/views/src/Tests/Plugin/ArgumentDefaultTest.php b/core/modules/views/src/Tests/Plugin/ArgumentDefaultTest.php index 0708b8603077..5abc27c83cea 100644 --- a/core/modules/views/src/Tests/Plugin/ArgumentDefaultTest.php +++ b/core/modules/views/src/Tests/Plugin/ArgumentDefaultTest.php @@ -2,10 +2,12 @@ namespace Drupal\views\Tests\Plugin; +use Drupal\Core\Url; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; use Drupal\views\Views; use Drupal\views_test_data\Plugin\views\argument_default\ArgumentDefaultTest as ArgumentDefaultTestPlugin; +use Symfony\Component\HttpFoundation\Request; /** @@ -25,6 +27,7 @@ class ArgumentDefaultTest extends PluginTestBase { 'test_argument_default_fixed', 'test_argument_default_current_user', 'test_argument_default_node', + 'test_argument_default_query_param', ); /** @@ -163,4 +166,24 @@ class ArgumentDefaultTest extends PluginTestBase { $this->assertTrue(strpos($this->xpath($xpath)[0]->asXml(), $node2->getTitle())); } + /** + * Tests the query parameter default argument. + */ + public function testArgumentDefaultQueryParameter() { + $view = Views::getView('test_argument_default_query_param'); + + $request = Request::create(Url::fromUri('internal:/whatever', ['absolute' => TRUE])->toString()); + + // Check the query parameter default argument fallback value. + $view->setRequest($request); + $view->initHandlers(); + $this->assertEqual($view->argument['type']->getDefaultArgument(), 'all'); + + // Check the query parameter default argument with a value. + $request->query->add(['the_node_type' => 'page']); + $view->setRequest($request); + $view->initHandlers(); + $this->assertEqual($view->argument['type']->getDefaultArgument(), 'page'); + } + } diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_query_param.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_query_param.yml new file mode 100644 index 000000000000..7f97bfdecda0 --- /dev/null +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_query_param.yml @@ -0,0 +1,62 @@ +langcode: en +status: true +dependencies: + module: + - node +id: test_argument_default_query_param +label: '' +module: views +description: '' +tag: '' +base_table: node_field_data +base_field: nid +core: '8' +display: + default: + display_options: + arguments: + type: + id: type + table: node_field_data + field: type + default_action: default + default_argument_type: query_parameter + default_argument_options: + query_param: the_node_type + fallback: all + multiple: and + entity_type: node + entity_field: type + plugin_id: node_type + fields: + title: + alter: + alter_text: false + ellipsis: true + html: false + make_link: false + strip_tags: false + trim: false + word_boundary: true + empty_zero: false + field: title + hide_empty: false + id: title + table: node_field_data + plugin_id: field + entity_type: node + entity_field: title + pager: + options: + id: 0 + items_per_page: 10 + offset: 0 + type: full + style: + type: default + row: + type: fields + display_plugin: default + display_title: Master + id: default + position: 0