Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
43.75% |
14 / 32 |
ViewsBlock | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
68.44 | |
43.75% |
14 / 32 |
build | |
0.00% |
0 / 1 |
5.03 | |
90.00% |
9 / 10 |
|||
getConfiguration | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 4 |
|||
defaultConfiguration | |
0.00% |
0 / 1 |
3.04 | |
83.33% |
5 / 6 |
|||
blockForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 3 |
|||
blockValidate | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 3 |
|||
blockSubmit | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 4 |
|||
getMachineNameSuggestion | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\views\Plugin\Block\ViewsBlock. | |
*/ | |
namespace Drupal\views\Plugin\Block; | |
use Drupal\Component\Utility\Xss; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\views\Element\View; | |
/** | |
* Provides a generic Views block. | |
* | |
* @Block( | |
* id = "views_block", | |
* admin_label = @Translation("Views Block"), | |
* deriver = "Drupal\views\Plugin\Derivative\ViewsBlock" | |
* ) | |
*/ | |
class ViewsBlock extends ViewsBlockBase { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function build() { | |
$this->view->display_handler->preBlockBuild($this); | |
// We ask ViewExecutable::buildRenderable() to avoid creating a render cache | |
// entry for the view output by passing FALSE, because we're going to cache | |
// the whole block instead. | |
if ($output = $this->view->buildRenderable($this->displayID, [], FALSE)) { | |
// Override the label to the dynamic title configured in the view. | |
if (empty($this->configuration['views_label']) && $this->view->getTitle()) { | |
$output['#title'] = ['#markup' => $this->view->getTitle(), '#allowed_tags' => Xss::getHtmlTagList()]; | |
} | |
// Before returning the block output, convert it to a renderable array | |
// with contextual links. | |
$this->addContextualLinks($output); | |
// Block module expects to get a final render array, without another | |
// top-level #pre_render callback. So, here we make sure that Views' | |
// #pre_render callback has already been applied. | |
$output = View::preRenderViewElement($output); | |
// When view_build is empty, the actual render array output for this View | |
// is going to be empty. In that case, return just #cache, so that the | |
// render system knows the reasons (cache contexts & tags) why this Views | |
// block is empty, and can cache it accordingly. | |
if (empty($output['view_build'])) { | |
$output = ['#cache' => $output['#cache']]; | |
} | |
return $output; | |
} | |
return array(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getConfiguration() { | |
$configuration = parent::getConfiguration(); | |
// Set the label to the static title configured in the view. | |
if (!empty($configuration['views_label'])) { | |
$configuration['label'] = $configuration['views_label']; | |
} | |
return $configuration; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function defaultConfiguration() { | |
$settings = parent::defaultConfiguration(); | |
if ($this->displaySet) { | |
$settings += $this->view->display_handler->blockSettings($settings); | |
} | |
// Set custom cache settings. | |
if (isset($this->pluginDefinition['cache'])) { | |
$settings['cache'] = $this->pluginDefinition['cache']; | |
} | |
return $settings; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function blockForm($form, FormStateInterface $form_state) { | |
if ($this->displaySet) { | |
return $this->view->display_handler->blockForm($this, $form, $form_state); | |
} | |
return array(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function blockValidate($form, FormStateInterface $form_state) { | |
if ($this->displaySet) { | |
$this->view->display_handler->blockValidate($this, $form, $form_state); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function blockSubmit($form, FormStateInterface $form_state) { | |
parent::blockSubmit($form, $form_state); | |
if ($this->displaySet) { | |
$this->view->display_handler->blockSubmit($this, $form, $form_state); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getMachineNameSuggestion() { | |
$this->view->setDisplay($this->displayID); | |
return 'views_block__' . $this->view->storage->id() . '_' . $this->view->current_display; | |
} | |
} |