Loading core/modules/views/src/ViewExecutable.php +0 −11 Original line number Diff line number Diff line Loading @@ -1956,17 +1956,6 @@ public function getUrl($args = NULL, $display_id = NULL) { if (!isset($args)) { $args = $this->args; // Exclude arguments that were computed, not passed on the URL. $position = 0; if (!empty($this->argument)) { foreach ($this->argument as $argument) { if (!empty($argument->is_default)) { unset($args[$position]); } $position++; } } } $path = $this->getPath(); Loading core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_node_with_page.yml 0 → 100644 +243 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: config: - node.type.page module: - node - user id: test_argument_default_node_with_page label: 'Test argument_default node with page' module: views description: '' tag: '' base_table: node_field_data base_field: nid display: default: id: default display_title: Default display_plugin: default position: 0 display_options: title: 'Test argument_default node' fields: title: id: title table: node_field_data field: title relationship: none group_type: group admin_label: '' plugin_id: field 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: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_empty: false empty_zero: false hide_alter_empty: true click_sort_column: value type: string settings: link_to_entity: true group_column: value 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 pager: type: none options: offset: 0 items_per_page: null 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 access: type: perm options: perm: 'access content' cache: type: tag options: { } empty: { } sorts: title: id: title table: node_field_data field: title relationship: none group_type: group admin_label: '' entity_type: node entity_field: title plugin_id: standard order: DESC expose: label: '' exposed: false arguments: nid: id: nid table: node_field_data field: nid relationship: none group_type: group admin_label: '' entity_type: node entity_field: nid plugin_id: node_nid default_action: default exception: value: all title_enable: false title: All title_enable: false title: '' default_argument_type: node default_argument_options: { } summary_options: base_path: '' count: true override: false items_per_page: 25 summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false filters: status: id: status table: node_field_data field: status entity_type: node entity_field: status plugin_id: boolean value: '1' group: 1 expose: operator: '' type: id: type table: node_field_data field: type entity_type: node entity_field: type plugin_id: bundle value: page: page style: type: default row: type: fields query: type: views_query options: query_comment: '' disable_sql_rewrite: false distinct: false replica: false query_tags: { } relationships: { } use_more: true use_more_always: true use_more_text: more header: { } footer: { } display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { } block_1: id: block_1 display_title: Block display_plugin: block position: 1 display_options: display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { } page_1: id: page_1 display_title: Page display_plugin: page position: 2 display_options: display_extenders: { } path: test-argument-default/% cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { } core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php +30 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class ArgumentDefaultTest extends ViewTestBase { 'test_argument_default_current_user', 'test_argument_default_node', 'test_argument_default_query_param', 'test_argument_default_node_with_page', ]; /** Loading Loading @@ -190,4 +191,33 @@ public function testArgumentDefaultQueryParameter() { $this->assertEquals('page', $view->argument['type']->getDefaultArgument()); } /** * Tests the more line generation if a default argument is provided. */ public function testArgumentDefaultUrlGeneration() { // Create a user that has permission to place a view block. $permissions = [ 'administer views', 'administer blocks', 'bypass node access', 'access user profiles', 'view all revisions', ]; $views_admin = $this->drupalCreateUser($permissions); $this->drupalLogin($views_admin); // Create nodes where should show themselves again as view block. $node_type = NodeType::create(['type' => 'page', 'name' => 'Page']); $node_type->save(); $node = Node::create(['title' => 'Test node 1', 'type' => 'page']); $node->save(); // Place the block, visit the page that displays the block, and check that // the more link takes the node ID into account and does not ignore // the default argument. $this->drupalPlaceBlock("views_block:test_argument_default_node_with_page-block_1", ['id' => 'view_block_id']); $this->drupalGet('node/' . $node->id()); $this->assertSession()->linkByHrefExists('/test-argument-default/' . $node->id()); } } Loading
core/modules/views/src/ViewExecutable.php +0 −11 Original line number Diff line number Diff line Loading @@ -1956,17 +1956,6 @@ public function getUrl($args = NULL, $display_id = NULL) { if (!isset($args)) { $args = $this->args; // Exclude arguments that were computed, not passed on the URL. $position = 0; if (!empty($this->argument)) { foreach ($this->argument as $argument) { if (!empty($argument->is_default)) { unset($args[$position]); } $position++; } } } $path = $this->getPath(); Loading
core/modules/views/tests/modules/views_test_config/test_views/views.view.test_argument_default_node_with_page.yml 0 → 100644 +243 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: config: - node.type.page module: - node - user id: test_argument_default_node_with_page label: 'Test argument_default node with page' module: views description: '' tag: '' base_table: node_field_data base_field: nid display: default: id: default display_title: Default display_plugin: default position: 0 display_options: title: 'Test argument_default node' fields: title: id: title table: node_field_data field: title relationship: none group_type: group admin_label: '' plugin_id: field 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: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_empty: false empty_zero: false hide_alter_empty: true click_sort_column: value type: string settings: link_to_entity: true group_column: value 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 pager: type: none options: offset: 0 items_per_page: null 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 access: type: perm options: perm: 'access content' cache: type: tag options: { } empty: { } sorts: title: id: title table: node_field_data field: title relationship: none group_type: group admin_label: '' entity_type: node entity_field: title plugin_id: standard order: DESC expose: label: '' exposed: false arguments: nid: id: nid table: node_field_data field: nid relationship: none group_type: group admin_label: '' entity_type: node entity_field: nid plugin_id: node_nid default_action: default exception: value: all title_enable: false title: All title_enable: false title: '' default_argument_type: node default_argument_options: { } summary_options: base_path: '' count: true override: false items_per_page: 25 summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false filters: status: id: status table: node_field_data field: status entity_type: node entity_field: status plugin_id: boolean value: '1' group: 1 expose: operator: '' type: id: type table: node_field_data field: type entity_type: node entity_field: type plugin_id: bundle value: page: page style: type: default row: type: fields query: type: views_query options: query_comment: '' disable_sql_rewrite: false distinct: false replica: false query_tags: { } relationships: { } use_more: true use_more_always: true use_more_text: more header: { } footer: { } display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { } block_1: id: block_1 display_title: Block display_plugin: block position: 1 display_options: display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { } page_1: id: page_1 display_title: Page display_plugin: page position: 2 display_options: display_extenders: { } path: test-argument-default/% cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - 'user.node_grants:view' - user.permissions tags: { }
core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php +30 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class ArgumentDefaultTest extends ViewTestBase { 'test_argument_default_current_user', 'test_argument_default_node', 'test_argument_default_query_param', 'test_argument_default_node_with_page', ]; /** Loading Loading @@ -190,4 +191,33 @@ public function testArgumentDefaultQueryParameter() { $this->assertEquals('page', $view->argument['type']->getDefaultArgument()); } /** * Tests the more line generation if a default argument is provided. */ public function testArgumentDefaultUrlGeneration() { // Create a user that has permission to place a view block. $permissions = [ 'administer views', 'administer blocks', 'bypass node access', 'access user profiles', 'view all revisions', ]; $views_admin = $this->drupalCreateUser($permissions); $this->drupalLogin($views_admin); // Create nodes where should show themselves again as view block. $node_type = NodeType::create(['type' => 'page', 'name' => 'Page']); $node_type->save(); $node = Node::create(['title' => 'Test node 1', 'type' => 'page']); $node->save(); // Place the block, visit the page that displays the block, and check that // the more link takes the node ID into account and does not ignore // the default argument. $this->drupalPlaceBlock("views_block:test_argument_default_node_with_page-block_1", ['id' => 'view_block_id']); $this->drupalGet('node/' . $node->id()); $this->assertSession()->linkByHrefExists('/test-argument-default/' . $node->id()); } }