diff --git a/core/modules/views_ui/src/Form/Ajax/AddHandler.php b/core/modules/views_ui/src/Form/Ajax/AddHandler.php index 02d6e3036b6..8cc2e8c50fb 100644 --- a/core/modules/views_ui/src/Form/Ajax/AddHandler.php +++ b/core/modules/views_ui/src/Form/Ajax/AddHandler.php @@ -62,7 +62,10 @@ class AddHandler extends ViewsFormBase { ); $executable = $view->getExecutable(); - $executable->setDisplay($display_id); + if (!$executable->setDisplay($display_id)) { + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; + } $display = &$executable->displayHandlers->get($display_id); $types = ViewExecutable::getHandlerTypes(); diff --git a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php index 4b76fd720f4..28a73230388 100644 --- a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php +++ b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php @@ -69,7 +69,10 @@ class ConfigHandler extends ViewsFormBase { ); $executable = $view->getExecutable(); $save_ui_cache = FALSE; - $executable->setDisplay($display_id); + if (!$executable->setDisplay($display_id)) { + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; + } $item = $executable->getHandler($display_id, $type, $id); if ($item) { diff --git a/core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php b/core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php index 6ae42d01299..2b784d58d1e 100644 --- a/core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php +++ b/core/modules/views_ui/src/Form/Ajax/ConfigHandlerExtra.php @@ -64,7 +64,10 @@ class ConfigHandlerExtra extends ViewsFormBase { ), ); $executable = $view->getExecutable(); - $executable->setDisplay($display_id); + if (!$executable->setDisplay($display_id)) { + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; + } $item = $executable->getHandler($display_id, $type, $id); if ($item) { diff --git a/core/modules/views_ui/src/Form/Ajax/ConfigHandlerGroup.php b/core/modules/views_ui/src/Form/Ajax/ConfigHandlerGroup.php index db3d51068f7..e06e210c356 100644 --- a/core/modules/views_ui/src/Form/Ajax/ConfigHandlerGroup.php +++ b/core/modules/views_ui/src/Form/Ajax/ConfigHandlerGroup.php @@ -66,7 +66,8 @@ class ConfigHandlerGroup extends ViewsFormBase { ); $executable = $view->getExecutable(); if (!$executable->setDisplay($display_id)) { - views_ajax_render($this->t('Invalid display id @display', array('@display' => $display_id))); + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; } $executable->initQuery(); diff --git a/core/modules/views_ui/src/Form/Ajax/Display.php b/core/modules/views_ui/src/Form/Ajax/Display.php index 5f1aed6cd5b..836cec796e0 100644 --- a/core/modules/views_ui/src/Form/Ajax/Display.php +++ b/core/modules/views_ui/src/Form/Ajax/Display.php @@ -64,7 +64,10 @@ class Display extends ViewsFormBase { $display_id = $form_state->get('display_id'); $executable = $view->getExecutable(); - $executable->setDisplay($display_id); + if (!$executable->setDisplay($display_id)) { + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; + } // Get form from the handler. $form['options'] = array( diff --git a/core/modules/views_ui/src/Form/Ajax/Rearrange.php b/core/modules/views_ui/src/Form/Ajax/Rearrange.php index 2369d939d8f..fcefb280d69 100644 --- a/core/modules/views_ui/src/Form/Ajax/Rearrange.php +++ b/core/modules/views_ui/src/Form/Ajax/Rearrange.php @@ -56,7 +56,10 @@ class Rearrange extends ViewsFormBase { $types = ViewExecutable::getHandlerTypes(); $executable = $view->getExecutable(); - $executable->setDisplay($display_id); + if (!$executable->setDisplay($display_id)) { + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; + } $display = &$executable->displayHandlers->get($display_id); $form['#title'] = $this->t('Rearrange @type', array('@type' => $types[$type]['ltitle'])); $form['#section'] = $display_id . 'rearrange-item'; diff --git a/core/modules/views_ui/src/Form/Ajax/RearrangeFilter.php b/core/modules/views_ui/src/Form/Ajax/RearrangeFilter.php index 58f869a1359..3ae2d3162b3 100644 --- a/core/modules/views_ui/src/Form/Ajax/RearrangeFilter.php +++ b/core/modules/views_ui/src/Form/Ajax/RearrangeFilter.php @@ -42,7 +42,8 @@ class RearrangeFilter extends ViewsFormBase { $types = ViewExecutable::getHandlerTypes(); $executable = $view->getExecutable(); if (!$executable->setDisplay($display_id)) { - views_ajax_render($this->t('Invalid display id @display', array('@display' => $display_id))); + $form['markup'] = array('#markup' => $this->t('Invalid display id @display', array('@display' => $display_id))); + return $form; } $display = $executable->displayHandlers->get($display_id); $form['#title'] = String::checkPlain($display->display['display_title']) . ': '; diff --git a/core/modules/views_ui/src/Tests/ViewEditTest.php b/core/modules/views_ui/src/Tests/ViewEditTest.php index 90489726a17..90251235d4b 100644 --- a/core/modules/views_ui/src/Tests/ViewEditTest.php +++ b/core/modules/views_ui/src/Tests/ViewEditTest.php @@ -70,6 +70,10 @@ class ViewEditTest extends UITestBase { $machine_name_edit_url = 'admin/structure/views/nojs/display/test_view/test_1/display_id'; $error_text = t('Display name must be letters, numbers, or underscores only.'); + // Test that potential invalid display ID requests are detected + $this->drupalGet('admin/structure/views/ajax/handler/test_view/fake_display_name/filter/title'); + $this->assertText('Invalid display id fake_display_name'); + $edit = array('display_id' => 'test 1'); $this->drupalPostForm($machine_name_edit_url, $edit, 'Apply'); $this->assertText($error_text);