Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 60
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
ViewsManagementController
0.00% covered (danger)
0.00%
0 / 60
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 4
90
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 pageViewsIndex
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
 buildRow
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
30
 getOperationLinks
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Drupal\display_builder_views\Controller;
6
7use Drupal\Core\Controller\ControllerBase;
8use Drupal\Core\Datetime\DateFormatterInterface;
9use Drupal\Core\Url;
10use Drupal\display_builder\DisplayBuildableInterface;
11use Drupal\display_builder\DisplayBuilderHelpers;
12use Drupal\display_builder\InstanceInterface;
13use Drupal\display_builder_views\Plugin\display_builder\Buildable\ViewDisplay;
14
15/**
16 * Returns responses for Display Builder ui routes.
17 */
18class ViewsManagementController extends ControllerBase {
19
20  public function __construct(
21    private readonly DateFormatterInterface $dateFormatter,
22  ) {}
23
24  /**
25   * Generate a simple index of saved display builder.
26   *
27   * @return array
28   *   A render array.
29   */
30  public function pageViewsIndex(): array {
31    $build = [];
32    $build['display_builder_table'] = [
33      '#theme' => 'table',
34      '#header' => [
35        'id' => ['data' => $this->t('View')],
36        'profile_id' => ['data' => $this->t('Profile')],
37        'updated' => ['data' => $this->t('Updated')],
38        'log' => ['data' => $this->t('Last log')],
39        'operations' => ['data' => $this->t('Operations')],
40      ],
41      '#empty' => $this->t('No Display builder enabled on any view.'),
42    ];
43
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
45      $build['display_builder_table']['#rows'][$instance_id] = $this->buildRow($instance);
46    }
47    $build['pager'] = ['#type' => 'pager'];
48
49    return $build;
50  }
51
52  /**
53   * Builds a table row for a display builder related to a view display managed.
54   *
55   * @param \Drupal\display_builder\InstanceInterface|null $instance
56   *   The display builder instance (or NULL).
57   *
58   * @return array
59   *   A table row.
60   */
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
63      return [];
64    }
65
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
72      return [];
73    }
74
75    /** @var \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $present; */
76    $present = $instance->get('present')->first();
77
78    $row = [];
79
80    $row['id']['data'] = [
81      '#type' => 'link',
82      '#title' => $view->label() . ' (' . $display_id . ')',
83      '#url' => Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => $display_id]),
84    ];
85
86    $row['profile_id'] = [
87      'data-profile-id' => \sprintf('profile_%s', $view_id),
88      'data' => $view->getDisplay($display_id)['display_options']['display_extenders']['display_builder'][DisplayBuildableInterface::PROFILE_PROPERTY] ?? '?',
89    ];
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
91
92    if ($log = $present->getLog()) {
93      $row['log']['data'] = $log;
94    }
95    else {
96      $row['log']['data'] = '-';
97    }
98    $row['operations']['data']['operations'] = [
99      '#type' => 'operations',
100      '#links' => $this->getOperationLinks($instance_id),
101    ];
102
103    return ['data' => $row];
104  }
105
106  /**
107   * Delete a display builder.
108   *
109   * @param string $builder_id
110   *   The display builder id.
111   *
112   * @return array
113   *   The operation links.
114   */
115  private function getOperationLinks(string $builder_id): array {
116    return [
117      'manage' => [
118        'title' => $this->t('Build display'),
119        'url' => ViewDisplay::getUrlFromInstanceId($builder_id),
120        'attributes' => [
121          'data-link-builder' => $builder_id,
122        ],
123      ],
124      'delete' => [
125        'title' => $this->t('Delete'),
126        'url' => Url::fromRoute('display_builder_views.views.delete', [
127          'builder_id' => $builder_id,
128        ]),
129      ],
130    ];
131  }
132
133}

Paths

Below are the source code lines that represent each code path as identified by Xdebug. Please note a path is not necessarily coterminous with a line, a line may contain multiple paths and therefore show up more than once. Please also be aware that some paths may include implicit rather than explicit branches, e.g. an if statement always has an else as part of its logical flow even if you didn't write one.

ViewsManagementController->__construct
21    private readonly DateFormatterInterface $dateFormatter,
22  ) {}
ViewsManagementController->buildRow
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
63      return [];
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
 
72      return [];
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
 
76    $present = $instance->get('present')->first();
77
78    $row = [];
79
80    $row['id']['data'] = [
81      '#type' => 'link',
82      '#title' => $view->label() . ' (' . $display_id . ')',
83      '#url' => Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => $display_id]),
84    ];
85
86    $row['profile_id'] = [
87      'data-profile-id' => \sprintf('profile_%s', $view_id),
88      'data' => $view->getDisplay($display_id)['display_options']['display_extenders']['display_builder'][DisplayBuildableInterface::PROFILE_PROPERTY] ?? '?',
89    ];
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
91
92    if ($log = $present->getLog()) {
 
92    if ($log = $present->getLog()) {
93      $row['log']['data'] = $log;
 
99      '#type' => 'operations',
100      '#links' => $this->getOperationLinks($instance_id),
101    ];
102
103    return ['data' => $row];
104  }
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
 
76    $present = $instance->get('present')->first();
77
78    $row = [];
79
80    $row['id']['data'] = [
81      '#type' => 'link',
82      '#title' => $view->label() . ' (' . $display_id . ')',
83      '#url' => Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => $display_id]),
84    ];
85
86    $row['profile_id'] = [
87      'data-profile-id' => \sprintf('profile_%s', $view_id),
88      'data' => $view->getDisplay($display_id)['display_options']['display_extenders']['display_builder'][DisplayBuildableInterface::PROFILE_PROPERTY] ?? '?',
89    ];
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
91
92    if ($log = $present->getLog()) {
 
96      $row['log']['data'] = '-';
97    }
98    $row['operations']['data']['operations'] = [
99      '#type' => 'operations',
 
99      '#type' => 'operations',
100      '#links' => $this->getOperationLinks($instance_id),
101    ];
102
103    return ['data' => $row];
104  }
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
 
76    $present = $instance->get('present')->first();
77
78    $row = [];
79
80    $row['id']['data'] = [
81      '#type' => 'link',
82      '#title' => $view->label() . ' (' . $display_id . ')',
83      '#url' => Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => $display_id]),
84    ];
85
86    $row['profile_id'] = [
87      'data-profile-id' => \sprintf('profile_%s', $view_id),
88      'data' => $view->getDisplay($display_id)['display_options']['display_extenders']['display_builder'][DisplayBuildableInterface::PROFILE_PROPERTY] ?? '?',
89    ];
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
91
92    if ($log = $present->getLog()) {
 
92    if ($log = $present->getLog()) {
93      $row['log']['data'] = $log;
 
99      '#type' => 'operations',
100      '#links' => $this->getOperationLinks($instance_id),
101    ];
102
103    return ['data' => $row];
104  }
61  protected function buildRow(?InstanceInterface $instance): array {
62    if (!$instance) {
 
66    $instance_id = (string) $instance->id();
67    $view_id = ViewDisplay::checkInstanceId($instance_id)['view'];
68    $display_id = ViewDisplay::checkInstanceId($instance_id)['display'];
69    $view = $this->entityTypeManager()->getStorage('view')->load($view_id);
70
71    if (!$view) {
 
76    $present = $instance->get('present')->first();
77
78    $row = [];
79
80    $row['id']['data'] = [
81      '#type' => 'link',
82      '#title' => $view->label() . ' (' . $display_id . ')',
83      '#url' => Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => $display_id]),
84    ];
85
86    $row['profile_id'] = [
87      'data-profile-id' => \sprintf('profile_%s', $view_id),
88      'data' => $view->getDisplay($display_id)['display_options']['display_extenders']['display_builder'][DisplayBuildableInterface::PROFILE_PROPERTY] ?? '?',
89    ];
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
 
90    $row['updated']['data'] = $present->getTime() ? DisplayBuilderHelpers::formatTime($this->dateFormatter, (int) $present->getTime()) : '-';
91
92    if ($log = $present->getLog()) {
 
96      $row['log']['data'] = '-';
97    }
98    $row['operations']['data']['operations'] = [
99      '#type' => 'operations',
 
99      '#type' => 'operations',
100      '#links' => $this->getOperationLinks($instance_id),
101    ];
102
103    return ['data' => $row];
104  }
ViewsManagementController->getOperationLinks
115  private function getOperationLinks(string $builder_id): array {
116    return [
117      'manage' => [
118        'title' => $this->t('Build display'),
119        'url' => ViewDisplay::getUrlFromInstanceId($builder_id),
120        'attributes' => [
121          'data-link-builder' => $builder_id,
122        ],
123      ],
124      'delete' => [
125        'title' => $this->t('Delete'),
126        'url' => Url::fromRoute('display_builder_views.views.delete', [
127          'builder_id' => $builder_id,
128        ]),
129      ],
130    ];
131  }
ViewsManagementController->pageViewsIndex
31    $build = [];
32    $build['display_builder_table'] = [
33      '#theme' => 'table',
34      '#header' => [
35        'id' => ['data' => $this->t('View')],
36        'profile_id' => ['data' => $this->t('Profile')],
37        'updated' => ['data' => $this->t('Updated')],
38        'log' => ['data' => $this->t('Last log')],
39        'operations' => ['data' => $this->t('Operations')],
40      ],
41      '#empty' => $this->t('No Display builder enabled on any view.'),
42    ];
43
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
45      $build['display_builder_table']['#rows'][$instance_id] = $this->buildRow($instance);
46    }
47    $build['pager'] = ['#type' => 'pager'];
48
49    return $build;
50  }
31    $build = [];
32    $build['display_builder_table'] = [
33      '#theme' => 'table',
34      '#header' => [
35        'id' => ['data' => $this->t('View')],
36        'profile_id' => ['data' => $this->t('Profile')],
37        'updated' => ['data' => $this->t('Updated')],
38        'log' => ['data' => $this->t('Last log')],
39        'operations' => ['data' => $this->t('Operations')],
40      ],
41      '#empty' => $this->t('No Display builder enabled on any view.'),
42    ];
43
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
45      $build['display_builder_table']['#rows'][$instance_id] = $this->buildRow($instance);
46    }
47    $build['pager'] = ['#type' => 'pager'];
48
49    return $build;
50  }
31    $build = [];
32    $build['display_builder_table'] = [
33      '#theme' => 'table',
34      '#header' => [
35        'id' => ['data' => $this->t('View')],
36        'profile_id' => ['data' => $this->t('Profile')],
37        'updated' => ['data' => $this->t('Updated')],
38        'log' => ['data' => $this->t('Last log')],
39        'operations' => ['data' => $this->t('Operations')],
40      ],
41      '#empty' => $this->t('No Display builder enabled on any view.'),
42    ];
43
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
 
44    foreach (ViewDisplay::collectInstances() as $instance_id => $instance) {
45      $build['display_builder_table']['#rows'][$instance_id] = $this->buildRow($instance);
46    }
47    $build['pager'] = ['#type' => 'pager'];
48
49    return $build;
50  }