diff --git a/core/modules/views/views_ui/lib/Drupal/views_ui/Form/Ajax/ViewsFormBase.php b/core/modules/views/views_ui/lib/Drupal/views_ui/Form/Ajax/ViewsFormBase.php index 954af35..4bbf1a0 100644 --- a/core/modules/views/views_ui/lib/Drupal/views_ui/Form/Ajax/ViewsFormBase.php +++ b/core/modules/views/views_ui/lib/Drupal/views_ui/Form/Ajax/ViewsFormBase.php @@ -125,14 +125,8 @@ public function ajaxForm(ViewStorageInterface $view, $display_id, $js) { $stack = $view->stack; $top = array_shift($stack); - // Map a form key to a class name. For example, 'config-item-extra' - // becomes 'ConfigItemExtra'. - // @todo Consider replacing this with an array property mapping them, or - // forms as plugins. - $class = '\\Drupal\\views_ui\\Form\\Ajax\\' . preg_replace_callback('/(^|-)(.)/', function ($match) { return strtoupper($match[2]); }, $top[1]); - // Build the new form state for the next form in the stack. - $reflection = new \ReflectionClass($class); + $reflection = new \ReflectionClass($view::$forms[$top[1]]); $form_state = $reflection->newInstanceArgs(array_slice($top, 3, 2))->getFormState($view, $top[2], $form_state['ajax']); $form_state['input'] = array(); diff --git a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php index 17becdb..564c1a2 100644 --- a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php +++ b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php @@ -122,6 +122,24 @@ class ViewUI implements ViewStorageInterface { protected $additionalQueries; /** + * Contains an array of form keys and their respective classes. + * + * @var array + */ + public static $forms = array( + 'add-item' => '\Drupal\views_ui\Form\Ajax\AddItem', + 'analyze' => '\Drupal\views_ui\Form\Ajax\Analyze', + 'config-item' => '\Drupal\views_ui\Form\Ajax\ConfigItem', + 'config-item-extra' => '\Drupal\views_ui\Form\Ajax\ConfigItemExtra', + 'config-item-group' => '\Drupal\views_ui\Form\Ajax\ConfigItemGroup', + 'display' => '\Drupal\views_ui\Form\Ajax\Display', + 'edit-details' => '\Drupal\views_ui\Form\Ajax\EditDetails', + 'rearrange' => '\Drupal\views_ui\Form\Ajax\Rearrange', + 'rearrange-filter' => '\Drupal\views_ui\Form\Ajax\RearrangeFilter', + 'reorder-displays' => '\Drupal\views_ui\Form\Ajax\ReorderDisplays', + ); + + /** * Constructs a View UI object. * * @param \Drupal\views\ViewStorageInterface $storage