Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 47 |
| ViewsBlock | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
182 | |
0.00% |
0 / 47 |
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getDerivativeDefinition | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
|||
| getDerivativeDefinitions | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 33 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\views\Plugin\Derivative\ViewsBlock. | |
| */ | |
| namespace Drupal\views\Plugin\Derivative; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface; | |
| use Drupal\Core\StringTranslation\TranslatableMarkup; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Provides block plugin definitions for all Views block displays. | |
| * | |
| * @see \Drupal\views\Plugin\block\block\ViewsBlock | |
| */ | |
| class ViewsBlock implements ContainerDeriverInterface { | |
| /** | |
| * List of derivative definitions. | |
| * | |
| * @var array | |
| */ | |
| protected $derivatives = array(); | |
| /** | |
| * The base plugin ID. | |
| * | |
| * @var string | |
| */ | |
| protected $basePluginId; | |
| /** | |
| * The view storage. | |
| * | |
| * @var \Drupal\Core\Entity\EntityStorageInterface | |
| */ | |
| protected $viewStorage; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container, $base_plugin_id) { | |
| return new static( | |
| $base_plugin_id, | |
| $container->get('entity.manager')->getStorage('view') | |
| ); | |
| } | |
| /** | |
| * Constructs a ViewsBlock object. | |
| * | |
| * @param string $base_plugin_id | |
| * The base plugin ID. | |
| * @param \Drupal\Core\Entity\EntityStorageInterface $view_storage | |
| * The entity storage to load views. | |
| */ | |
| public function __construct($base_plugin_id, EntityStorageInterface $view_storage) { | |
| $this->basePluginId = $base_plugin_id; | |
| $this->viewStorage = $view_storage; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getDerivativeDefinition($derivative_id, $base_plugin_definition) { | |
| if (!empty($this->derivatives) && !empty($this->derivatives[$derivative_id])) { | |
| return $this->derivatives[$derivative_id]; | |
| } | |
| $this->getDerivativeDefinitions($base_plugin_definition); | |
| return $this->derivatives[$derivative_id]; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getDerivativeDefinitions($base_plugin_definition) { | |
| // Check all Views for block displays. | |
| foreach ($this->viewStorage->loadMultiple() as $view) { | |
| // Do not return results for disabled views. | |
| if (!$view->status()) { | |
| continue; | |
| } | |
| $executable = $view->getExecutable(); | |
| $executable->initDisplay(); | |
| foreach ($executable->displayHandlers as $display) { | |
| // Add a block plugin definition for each block display. | |
| if (isset($display) && !empty($display->definition['uses_hook_block'])) { | |
| $delta = $view->id() . '-' . $display->display['id']; | |
| $admin_label = $display->getOption('block_description'); | |
| if (empty($admin_label)) { | |
| if ($display->display['display_title'] == $display->definition['title']) { | |
| $admin_label = $view->label(); | |
| } | |
| else { | |
| // Allow translators to control the punctuation. Plugin | |
| // definitions get cached, so use TranslatableMarkup() instead of | |
| // t() to avoid double escaping when $admin_label is rendered | |
| // during requests that use the cached definition. | |
| $admin_label = new TranslatableMarkup('@view: @display', ['@view' => $view->label(), '@display' => $display->display['display_title']]); | |
| } | |
| } | |
| $this->derivatives[$delta] = array( | |
| 'category' => $display->getOption('block_category'), | |
| 'admin_label' => $admin_label, | |
| 'config_dependencies' => array( | |
| 'config' => array( | |
| $view->getConfigDependencyName(), | |
| ) | |
| ) | |
| ); | |
| $this->derivatives[$delta] += $base_plugin_definition; | |
| } | |
| } | |
| } | |
| return $this->derivatives; | |
| } | |
| } |