abstract class BlockBase in Display Suite 8.3
Same name and namespace in other branches
- 8.4 src/Plugin/DsField/BlockBase.php \Drupal\ds\Plugin\DsField\BlockBase
- 8.2 src/Plugin/DsField/BlockBase.php \Drupal\ds\Plugin\DsField\BlockBase
The base plugin to create DS block fields.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\ds\Plugin\DsField\DsFieldBase implements ConfigurableInterface, DependentPluginInterface, DsFieldInterface
- class \Drupal\ds\Plugin\DsField\BlockBase implements ContainerFactoryPluginInterface
- class \Drupal\ds\Plugin\DsField\DsFieldBase implements ConfigurableInterface, DependentPluginInterface, DsFieldInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of BlockBase
File
- src/
Plugin/ DsField/ BlockBase.php, line 16
Namespace
Drupal\ds\Plugin\DsFieldView source
abstract class BlockBase extends DsFieldBase implements ContainerFactoryPluginInterface {
/**
* The block.
*
* @var \Drupal\Core\Block\BlockPluginInterface
*/
protected $block;
/**
* The BlockManager service.
*
* @var \Drupal\Core\Block\BlockManagerInterface
*/
protected $blockManager;
/**
* The context handler.
*
* @var \Drupal\Core\Plugin\Context\ContextHandlerInterface
*/
protected $contextHandler;
/**
* The context repository interface.
*
* @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface
*/
protected $contextRepository;
/**
* Constructs a Display Suite field plugin.
*/
public function __construct($configuration, $plugin_id, $plugin_definition, ContextHandlerInterface $contextHandler, ContextRepositoryInterface $contextRepository, BlockManagerInterface $block_manager) {
$this->blockManager = $block_manager;
$this->contextHandler = $contextHandler;
$this->contextRepository = $contextRepository;
parent::__construct($configuration, $plugin_id, $plugin_definition);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('context.handler'), $container
->get('context.repository'), $container
->get('plugin.manager.block'));
}
/**
* {@inheritdoc}
*/
public function build() {
// Get block.
$block = $this
->getBlock();
// Apply block config.
$block_config = $this
->blockConfig();
$block
->setConfiguration($block_config);
$add_wrappers = isset($this
->getFieldConfiguration()['properties']['add_block_wrappers']) ? $this
->getFieldConfiguration()['properties']['add_block_wrappers'] : FALSE;
if ($block
->access(\Drupal::currentUser())) {
// Inject context values.
if ($block instanceof ContextAwarePluginInterface) {
$contexts = $this->contextRepository
->getRuntimeContexts(array_values($block
->getContextMapping()));
$this->contextHandler
->applyContextMapping($block, $contexts);
}
$block_build = $block
->build();
// If the user has chosen to add the block wrappers, theme as a block.
if ($add_wrappers) {
// @see \Drupal\block\BlockViewBuilder::buildPreRenderableBlock
// @see template_preprocess_block()
$render_element = [
'#theme' => 'block',
'#attributes' => [],
'#configuration' => $block
->getConfiguration(),
'#plugin_id' => $block
->getPluginId(),
'#base_plugin_id' => $block
->getBaseId(),
'#derivative_plugin_id' => $block
->getDerivativeId(),
'content' => $block_build,
];
}
else {
// Otherwise just use the block build.
$render_element = $block_build;
}
// Merge cache contexts, tags and max-age.
if ($contexts = $block
->getCacheContexts()) {
$render_element['#cache']['contexts'] = [];
if (isset($block_build['#cache']) && isset($block_build['contexts']) && is_array($block_build['#cache']['contexts'])) {
$render_element['#cache']['contexts'] = $block_build['#cache']['contexts'];
}
$render_element['#cache']['contexts'] = array_unique(array_merge($render_element['#cache']['contexts'], $contexts));
}
if ($tags = $block
->getCacheTags()) {
$render_element['#cache']['tags'] = [];
if (isset($block_build['#cache']) && isset($block_build['tags']) && is_array($block_build['#cache']['tags'])) {
$render_element['#cache']['tags'] = $block_build['#cache']['tags'];
}
$render_element['#cache']['tags'] = array_unique(array_merge($render_element['#cache']['tags'], $tags));
}
// Add the block base config cache tag.
$render_element['#cache']['tags'][] = 'config:ds.block_base';
$max_age = $block
->getCacheMaxAge();
if (is_numeric($max_age) && !isset($render_element['#cache']['max-age'])) {
$render_element['#cache']['max-age'] = $max_age;
}
// Return an empty array if there is nothing to render.
return Element::isEmpty($render_element) ? [] : $render_element;
}
return [];
}
/**
* Returns the plugin ID of the block.
*/
protected function blockPluginId() {
return '';
}
/**
* Returns the config of the block.
*/
protected function blockConfig() {
return [];
}
/**
* Return the block entity.
*/
protected function getBlock() {
if (!$this->block) {
// Create an instance of the block.
/* @var $block BlockPluginInterface */
$block_id = $this
->blockPluginId();
$block = $this->blockManager
->createInstance($block_id);
$this->block = $block;
}
return $this->block;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BlockBase:: |
protected | property | The block. | |
BlockBase:: |
protected | property | The BlockManager service. | |
BlockBase:: |
protected | property | The context handler. | |
BlockBase:: |
protected | property | The context repository interface. | |
BlockBase:: |
protected | function | Returns the config of the block. | 1 |
BlockBase:: |
protected | function | Returns the plugin ID of the block. | 1 |
BlockBase:: |
public | function |
Renders a field. Overrides DsFieldBase:: |
|
BlockBase:: |
public static | function |
Creates an instance of the plugin. Overrides DsFieldBase:: |
|
BlockBase:: |
protected | function | Return the block entity. | |
BlockBase:: |
public | function |
Constructs a Display Suite field plugin. Overrides DsFieldBase:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DsFieldBase:: |
public | function |
Gets the current bundle. Overrides DsFieldInterface:: |
|
DsFieldBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
DsFieldBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurableInterface:: |
6 |
DsFieldBase:: |
public | function |
Gets the current entity. Overrides DsFieldInterface:: |
|
DsFieldBase:: |
public | function |
Returns a list of possible formatters for this field. Overrides DsFieldInterface:: |
4 |
DsFieldBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
1 |
DsFieldBase:: |
public | function |
Gets the current entity type. Overrides DsFieldInterface:: |
|
DsFieldBase:: |
public | function |
Gets the field configuration. Overrides DsFieldInterface:: |
|
DsFieldBase:: |
public | function |
Gets the field name. Overrides DsFieldInterface:: |
|
DsFieldBase:: |
public | function |
Returns the title of the field. Overrides DsFieldInterface:: |
1 |
DsFieldBase:: |
public | function |
Returns if the field is allowed on the field UI screen. Overrides DsFieldInterface:: |
4 |
DsFieldBase:: |
public | function |
Defines if we are dealing with a multivalue field. Overrides DsFieldInterface:: |
1 |
DsFieldBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
1 |
DsFieldBase:: |
public | function |
The form that holds the settings for this plugin. Overrides DsFieldInterface:: |
8 |
DsFieldBase:: |
public | function |
Returns the summary of the chosen settings. Overrides DsFieldInterface:: |
7 |
DsFieldBase:: |
public | function |
Gets the view mode. Overrides DsFieldInterface:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |