class EntityTagPlugin in Extensible BBCode 8.3
Same name and namespace in other branches
- 4.0.x src/Plugin/XBBCode/EntityTagPlugin.php \Drupal\xbbcode\Plugin\XBBCode\EntityTagPlugin
A tag plugin based on a custom tag entity.
Plugin annotation
@XBBCodeTag(
id = "xbbcode_tag",
label = "Custom tag",
admin_label = @Translation("Custom tag"),
category = @Translation("Custom"),
deriver = "Drupal\xbbcode\Plugin\Derivative\TagPluginDeriver"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\xbbcode\Plugin\TagPluginBase implements TagPluginInterface
- class \Drupal\xbbcode\Plugin\TemplateTagPlugin
- class \Drupal\xbbcode\Plugin\XBBCode\EntityTagPlugin implements ContainerFactoryPluginInterface
- class \Drupal\xbbcode\Plugin\TemplateTagPlugin
- class \Drupal\xbbcode\Plugin\TagPluginBase implements TagPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of EntityTagPlugin
2 files declare their use of EntityTagPlugin
- TagForm.php in src/
Form/ TagForm.php - TagFormBase.php in src/
Form/ TagFormBase.php
File
- src/
Plugin/ XBBCode/ EntityTagPlugin.php, line 26
Namespace
Drupal\xbbcode\Plugin\XBBCodeView source
class EntityTagPlugin extends TemplateTagPlugin implements ContainerFactoryPluginInterface {
/**
* The prefix that precedes an inline template.
*
* @var string
*/
public const TEMPLATE_PREFIX = '{# inline_template_start #}';
/**
* The entity storage.
*
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $storage;
/**
* The custom tag entity this plugin is derived from.
*
* (Not serialized for performance reasons.)
*
* @var \Drupal\xbbcode\Entity\TagInterface
*/
private $entity;
/**
* Constructs a new custom tag plugin.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Template\TwigEnvironment $twig
* The twig template loader.
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
* The tag storage.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, TwigEnvironment $twig, EntityStorageInterface $storage) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $twig);
$this->storage = $storage;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('twig'), $container
->get('entity_type.manager')
->getStorage('xbbcode_tag'));
}
/**
* {@inheritdoc}
*/
public function getTemplate() : Twig_TemplateWrapper {
// Lazily prepare the template, if it does not exist yet.
if ($this->template === NULL) {
$entity = $this
->getEntity();
$code = $entity
->getTemplateCode();
$file = $entity
->getTemplateFile();
$this->template = $file && !$code ? $file : self::TEMPLATE_PREFIX . $code;
}
// Delegate template-loading to the parent.
return parent::getTemplate();
}
/**
* {@inheritdoc}
*/
public function doProcess(TagElementInterface $tag) : TagProcessResult {
$result = parent::doProcess($tag);
$result
->addCacheableDependency($this
->getEntity());
$result
->addAttachments($this
->getEntity()
->getAttachments());
return $result;
}
/**
* Loads the custom tag entity of the plugin.
*
* @return \Drupal\xbbcode\Entity\TagInterface
* The custom tag entity.
*/
protected function getEntity() : TagInterface {
if (!$this->entity) {
$id = $this
->getDerivativeId();
$this->entity = $this->storage
->load($id);
}
return $this->entity;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
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 | |
EntityTagPlugin:: |
private | property | The custom tag entity this plugin is derived from. | |
EntityTagPlugin:: |
protected | property | The entity storage. | |
EntityTagPlugin:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
EntityTagPlugin:: |
public | function |
Create the actual output. Overrides TemplateTagPlugin:: |
|
EntityTagPlugin:: |
protected | function | Loads the custom tag entity of the plugin. | |
EntityTagPlugin:: |
public | function |
Get the tag template. Overrides TemplateTagPlugin:: |
|
EntityTagPlugin:: |
public | constant | The prefix that precedes an inline template. | |
EntityTagPlugin:: |
public | function |
Constructs a new custom tag plugin. Overrides TemplateTagPlugin:: |
|
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. | |
TagPluginBase:: |
protected | property | The configurable tag name. | |
TagPluginBase:: |
protected | property | The sample code of this tag. | |
TagPluginBase:: |
protected | property | The settings for this tag plugin. | |
TagPluginBase:: |
protected | property | A Boolean indicating whether this tag is enabled. | |
TagPluginBase:: |
public | function | Get default plugin configuration from definition. | |
TagPluginBase:: |
public | function | Get the plugin configuration. | |
TagPluginBase:: |
public | function |
Returns the default tag name. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function |
Return the unprocessed sample code. Overrides TagPluginInterface:: |
3 |
TagPluginBase:: |
public | function |
Returns the administrative description for this tag plugin. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function |
Returns the configured name. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function |
Return a sample tag for the filter tips. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function |
Returns the administrative label for this tag plugin. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function |
Transform an elements' content, to armor against other filters. Overrides TagPluginInterface:: |
2 |
TagPluginBase:: |
public | function |
Generate output from a tag element. Overrides TagPluginInterface:: |
|
TagPluginBase:: |
public | function | Set the plugin configuration after instancing. | |
TagPluginBase:: |
public | function |
Returns the status of this tag plugin. Overrides TagPluginInterface:: |
|
TemplateTagPlugin:: |
protected | property | The serializable identifier of the template. | |
TemplateTagPlugin:: |
private | property | Ephemeral reference to the template. | |
TemplateTagPlugin:: |
protected | property | The twig environment. |