diff --git a/core/modules/views_ui/admin.inc b/core/modules/views_ui/admin.inc index 1187be5e813e71c86c242fe1deeb9c7fe5bd5c43..6170ed4f846adf8fef70df02e92ec38adce5ebd9 100644 --- a/core/modules/views_ui/admin.inc +++ b/core/modules/views_ui/admin.inc @@ -315,7 +315,7 @@ function views_ui_build_form_url(FormStateInterface $form_state) { function views_ui_form_button_was_clicked($element, FormStateInterface $form_state) { $user_input = $form_state->getUserInput(); $process_input = empty($element['#disabled']) && ($form_state->isProgrammed() || ($form_state->isProcessingInput() && (!isset($element['#access']) || $element['#access']))); - if ($process_input && !$form_state->getTriggeringElement() && !empty($element['#is_button']) && isset($user_input[$element['#name']]) && isset($element['#values']) && in_array($user_input[$element['#name']], $element['#values'], TRUE)) { + if ($process_input && !$form_state->getTriggeringElement() && !empty($element['#is_button']) && isset($user_input[$element['#name']]) && isset($element['#values']) && in_array($user_input[$element['#name']], array_map('strval', $element['#values']), TRUE)) { $form_state->setTriggeringElement($element); } return $element; diff --git a/core/modules/views_ui/src/Tests/DisplayTest.php b/core/modules/views_ui/src/Tests/DisplayTest.php index ff7ca81f28735c0d36c0930f6d4091fa251ead77..4fab7d893f72dc5a2d22385ee8e79f36b3481605 100644 --- a/core/modules/views_ui/src/Tests/DisplayTest.php +++ b/core/modules/views_ui/src/Tests/DisplayTest.php @@ -34,6 +34,26 @@ class DisplayTest extends UITestBase { */ public static $modules = array('contextual'); + /** + * Tests adding a display. + */ + public function testAddDisplay() { + $view = $this->randomView(); + $this->assertNoText('Block'); + $this->assertNoText('Block 2'); + + $this->drupalPostForm(NULL, [], t('Add @display', ['@display' => 'Block'])); + $this->assertText('Block'); + $this->assertNoText('Block 2'); + + // Views has special form handling in views_ui_form_button_was_clicked() + // to be able to change the submit button text via JS, this simulates what + // the JS is doing. + $this->drupalPostForm(NULL, [], NULL, [], [], NULL, '&op=Block'); + $this->assertText('Block'); + $this->assertText('Block 2'); + } + /** * Tests reordering of displays. */