Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
ViewsController
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 2
12
0.00% covered (danger)
0.00%
0 / 1
 title
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 getBuilder
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3declare(strict_types=1);
4
5namespace Drupal\display_builder_views\Controller;
6
7use Drupal\Core\StringTranslation\TranslatableMarkup;
8use Drupal\display_builder\Controller\IntegrationControllerBase;
9use Drupal\views\ViewEntityInterface;
10
11/**
12 * Returns responses for Display Builder ui routes.
13 */
14class ViewsController extends IntegrationControllerBase {
15
16  /**
17   * Provides a generic title callback for a display used in pages.
18   *
19   * @param \Drupal\views\ViewEntityInterface $view
20   *   The view to be edited.
21   * @param string $display
22   *   The display ID being edited.
23   *
24   * @return \Drupal\Core\StringTranslation\TranslatableMarkup
25   *   The title for the display page, if found.
26   */
27  public function title(ViewEntityInterface $view, string $display): TranslatableMarkup {
28    $params = [
29      '@view' => $view->label(),
30      '@display' => $view->getDisplay($display)['display_title'] ?? '',
31    ];
32
33    return $this->t('Display builder for @view @display', $params);
34  }
35
36  /**
37   * Load the display builder for views.
38   *
39   * @param \Drupal\views\ViewEntityInterface $view
40   *   The view to be edited.
41   * @param string $display
42   *   The display ID being edited.
43   *
44   * @return array
45   *   The display builder renderable.
46   */
47  public function getBuilder(ViewEntityInterface $view, string $display): array {
48    // Disable cache page.
49    \Drupal::service('page_cache_kill_switch')->trigger(); // phpcs:ignore
50
51    // The view here is not a "real" View storage, but the copy from the
52    // tempstore provided by `view_ui` module. So, we have access to the state
53    // not yet saved in config.
54    $view = $view->getExecutable();
55    $view->setDisplay($display);
56    $extenders = $view->getDisplay()->getExtenders();
57
58    if (!isset($extenders['display_builder'])) {
59      return [];
60    }
61    /** @var \Drupal\display_builder\DisplayBuildableInterface $extender */
62    $extender = $extenders['display_builder'];
63
64    return $this->renderBuilder($extender);
65  }
66
67}