Revert "Issue #2568889 by smustgrave, berenddeboer, Lendude, Anandhi Karnan, ckaotik, boromino, diaodiallo, Yago Elias, yashingole, Abhijith S, Amber Himes Matz, dawehner, Scott Weston: Views exposed text filter set to required shows an empty error and form error on page load"
This reverts commit 7a7d73a192
.
merge-requests/3112/head
parent
efb94e3a54
commit
d3cc60631c
|
@ -246,32 +246,6 @@ abstract class ExposedFormPluginBase extends PluginBase implements CacheableDepe
|
|||
}
|
||||
}
|
||||
|
||||
// Get an array of exposed filters and exposed required filters,
|
||||
// keyed by identifier option.
|
||||
$exposed_filters = [];
|
||||
$exposed_required_filters = [];
|
||||
foreach ($this->view->filter as $id => $handler) {
|
||||
if ($handler->canExpose() && $handler->isExposed() && !empty($handler->options['expose']['identifier'])) {
|
||||
if ($handler->options['expose']['required'] && $handler->options['plugin_id'] !== 'boolean') {
|
||||
$exposed_required_filters[$handler->options['expose']['identifier']] = $id;
|
||||
}
|
||||
$exposed_filters[$handler->options['expose']['identifier']] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
// If any required exposed filters loop through them to see if they have any
|
||||
// input. If not don't auto process the form.
|
||||
if (!empty($exposed_required_filters)) {
|
||||
// Prevent form validation if exposed filter is not set.
|
||||
$exposed_input = $this->view->getExposedInput();
|
||||
foreach ($exposed_required_filters as $key => $required_filter) {
|
||||
if (!$exposed_input || empty($exposed_input[$key])) {
|
||||
$form_state->setAlwaysProcess(FALSE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($this->options['reset_button'])) {
|
||||
$form['actions']['reset'] = [
|
||||
'#value' => $this->options['reset_button_label'],
|
||||
|
@ -279,6 +253,13 @@ abstract class ExposedFormPluginBase extends PluginBase implements CacheableDepe
|
|||
'#weight' => 10,
|
||||
];
|
||||
|
||||
// Get an array of exposed filters, keyed by identifier option.
|
||||
$exposed_filters = [];
|
||||
foreach ($this->view->filter as $id => $handler) {
|
||||
if ($handler->canExpose() && $handler->isExposed() && !empty($handler->options['expose']['identifier'])) {
|
||||
$exposed_filters[$handler->options['expose']['identifier']] = $id;
|
||||
}
|
||||
}
|
||||
$all_exposed = array_merge($exposed_sorts, $exposed_filters);
|
||||
|
||||
// Set the access to FALSE if there is no exposed input.
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
langcode: en
|
||||
status: true
|
||||
dependencies:
|
||||
config:
|
||||
- core.entity_view_mode.node.teaser
|
||||
- node.type.article
|
||||
- node.type.page
|
||||
- node.type.recipe
|
||||
module:
|
||||
- node
|
||||
id: test_exposed_form_buttons_required
|
||||
label: ''
|
||||
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:
|
||||
pager:
|
||||
type: full
|
||||
exposed_form:
|
||||
type: input_required
|
||||
options:
|
||||
submit_button: Apply
|
||||
reset_button: true
|
||||
reset_button_label: Reset
|
||||
exposed_sorts_label: 'Sort by'
|
||||
expose_sort_order: true
|
||||
sort_asc_label: Asc
|
||||
sort_desc_label: Desc
|
||||
text_input_required: 'Select any filter and click on Apply to see results'
|
||||
text_input_required_format: basic_html
|
||||
access:
|
||||
type: none
|
||||
cache:
|
||||
type: tag
|
||||
filters:
|
||||
type:
|
||||
id: type
|
||||
table: node_field_data
|
||||
field: type
|
||||
relationship: none
|
||||
group_type: group
|
||||
admin_label: ''
|
||||
entity_type: node
|
||||
entity_field: type
|
||||
plugin_id: in_operator
|
||||
operator: in
|
||||
value:
|
||||
all: all
|
||||
article: article
|
||||
page: page
|
||||
group: 1
|
||||
exposed: true
|
||||
expose:
|
||||
operator_id: type_op
|
||||
label: 'Content: Type'
|
||||
description: 'Exposed description'
|
||||
use_operator: false
|
||||
operator: ''
|
||||
operator_limit_selection: false
|
||||
operator_list: { }
|
||||
identifier: type
|
||||
required: true
|
||||
remember: false
|
||||
multiple: false
|
||||
remember_roles:
|
||||
authenticated: authenticated
|
||||
anonymous: '0'
|
||||
administrator: '0'
|
||||
author: '0'
|
||||
editor: '0'
|
||||
reduce: false
|
||||
is_grouped: false
|
||||
group_info:
|
||||
label: ''
|
||||
description: ''
|
||||
identifier: ''
|
||||
optional: true
|
||||
widget: select
|
||||
multiple: false
|
||||
remember: false
|
||||
default_group: All
|
||||
default_group_multiple: { }
|
||||
group_items: { }
|
||||
style:
|
||||
type: default
|
||||
row:
|
||||
type: 'entity:node'
|
||||
query:
|
||||
type: views_query
|
||||
options:
|
||||
query_comment: ''
|
||||
display_extenders: { }
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
- 'languages:language_interface'
|
||||
- url
|
||||
- url.query_args
|
||||
- 'user.node_grants:view'
|
||||
tags: { }
|
||||
page_1:
|
||||
id: page_1
|
||||
display_title: Page
|
||||
display_plugin: page
|
||||
position: 0
|
||||
display_options:
|
||||
display_extenders: { }
|
||||
path: test_exposed_form_buttons_required
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
- 'languages:language_interface'
|
||||
- url
|
||||
- url.query_args
|
||||
- 'user.node_grants:view'
|
||||
tags: { }
|
|
@ -8,6 +8,7 @@ use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
|
|||
use Drupal\Tests\views\Functional\ViewTestBase;
|
||||
use Drupal\views\ViewExecutable;
|
||||
use Drupal\views\Views;
|
||||
use Drupal\views\Entity\View;
|
||||
|
||||
/**
|
||||
* Tests exposed forms functionality.
|
||||
|
@ -23,7 +24,7 @@ class ExposedFormTest extends ViewTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = ['test_exposed_form_buttons', 'test_exposed_form_buttons_required', 'test_exposed_block', 'test_exposed_form_sort_items_per_page', 'test_exposed_form_pager'];
|
||||
public static $testViews = ['test_exposed_form_buttons', 'test_exposed_block', 'test_exposed_form_sort_items_per_page', 'test_exposed_form_pager'];
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
|
@ -299,27 +300,23 @@ class ExposedFormTest extends ViewTestBase {
|
|||
* Tests the input required exposed form type.
|
||||
*/
|
||||
public function testInputRequired() {
|
||||
$this->drupalGet('test_exposed_form_buttons_required');
|
||||
$view = View::load('test_exposed_form_buttons');
|
||||
$display = &$view->getDisplay('default');
|
||||
$display['display_options']['exposed_form']['type'] = 'input_required';
|
||||
$view->save();
|
||||
|
||||
$this->drupalGet('test_exposed_form_buttons');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
$this->helperButtonHasLabel('edit-submit-test-exposed-form-buttons-required', 'Apply');
|
||||
$this->helperButtonHasLabel('edit-submit-test-exposed-form-buttons', 'Apply');
|
||||
|
||||
// Ensure that no results are displayed by default when no input is
|
||||
// provided.
|
||||
$this->assertSession()->elementNotExists('xpath', "//div[contains(@class, 'views-row')]");
|
||||
// Ensure that no error element is shown.
|
||||
$this->assertSession()->elementNotExists('css', '.messages--error');
|
||||
$this->assertFalse($this->getSession()->getPage()->findField('type')->hasClass('error'));
|
||||
$edit = [
|
||||
'type' => 'article',
|
||||
];
|
||||
$this->submitForm($edit, 'Apply');
|
||||
|
||||
$this->drupalGet('test_exposed_form_buttons', ['query' => ['type' => 'article']]);
|
||||
|
||||
// Ensure that results are displayed by default when input is provided.
|
||||
$this->assertSession()->elementsCount('xpath', "//div[contains(@class, 'views-row')]", 5);
|
||||
|
||||
// Test exposed filter on preview.
|
||||
$this->drupalGet('admin/structure/views/view/test_view/test_exposed_form_buttons_required');
|
||||
$this->assertSession()->elementNotExists('css', '.messages--error');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -330,6 +327,7 @@ class ExposedFormTest extends ViewTestBase {
|
|||
$display = &$view->storage->getDisplay('default');
|
||||
$display['display_options']['exposed_form']['type'] = 'input_required';
|
||||
// Set up the "on demand text".
|
||||
// @see https://www.drupal.org/node/535868
|
||||
$on_demand_text = 'Select any filter and click Apply to see results.';
|
||||
$display['display_options']['exposed_form']['options']['text_input_required'] = $on_demand_text;
|
||||
$display['display_options']['exposed_form']['options']['text_input_required_format'] = filter_default_format();
|
||||
|
|
Loading…
Reference in New Issue