class EntityBlockWidget in Entityblock 8
Plugin implementation of the 'EntityBlock' widget.
Plugin annotation
@FieldWidget(
id = "entityblock_default",
label = @Translation("EntityBlock"),
field_types = {
"entityblock"
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait
- class \Drupal\entityblock\Plugin\Field\FieldWidget\EntityBlockWidget
- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of EntityBlockWidget
File
- src/
Plugin/ Field/ FieldWidget/ EntityBlockWidget.php, line 25 - Contains \Drupal\entityblock\Plugin\Field\FieldWidget\EntityBlockWidget.
Namespace
Drupal\entityblock\Plugin\Field\FieldWidgetView source
class EntityBlockWidget extends WidgetBase {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
return array(
'view_modes' => array(
'full',
),
'force_enabled' => FALSE,
'force_title' => FALSE,
) + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$elements = parent::settingsForm($form, $form_state);
$elements['view_modes'] = array(
'#type' => 'select',
'#title' => $this
->t('View modes'),
'#default_value' => $this
->getSetting('view_modes'),
'#description' => $this
->t('View modes that are available to the user to choose from, when you select only 1 option then the user is not able to make a selection.'),
'#required' => TRUE,
'#options' => $this
->getViewModes(),
'#multiple' => TRUE,
);
$elements['force_enabled'] = array(
'#type' => 'checkbox',
'#title' => $this
->t('Force "Display as block"'),
'#description' => $this
->t('Do not provide the user a "Display as block" checkbox. You do not want to set this checkbox if you provide a multi value field because the user cannot remove blocks then.'),
'#default_value' => $this
->getSetting('force_enabled'),
);
$elements['force_title'] = array(
'#type' => 'checkbox',
'#title' => $this
->t('Force "Block title"'),
'#description' => $this
->t('Do not provide the user a "Block title" textfield.'),
'#default_value' => $this
->getSetting('force_title'),
);
return $elements;
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$summary = [];
if ($this
->getSetting('view_modes')) {
$view_modes = array_intersect_key($this
->getViewModes(), array_flip($this
->getSetting('view_modes')));
$summary[] = $this
->t('View modes: %view_modes', array(
'%view_modes' => implode(', ', $view_modes),
));
}
else {
$summary[] = $this
->t('No view modes selected');
}
if ($this
->getSetting('force_enabled')) {
$summary[] = $this
->t('Force "Display as block"');
}
if ($this
->getSetting('force_title')) {
$summary[] = $this
->t('Force "Block title"');
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$has_fillable_field = FALSE;
if (!$this
->getSetting('force_enabled')) {
$has_fillable_field = TRUE;
$element['enabled'] = array(
'#type' => 'checkbox',
'#title' => $this
->t('Display as block'),
'#default_value' => $items[$delta]->enabled,
'#attributes' => array(
'class' => array(
'entityblock-enabled',
),
),
'#required' => $element['#required'],
);
}
else {
$element['enabled'] = array(
'#type' => 'value',
'#default_value' => $this
->getSetting('force_enabled'),
);
}
if (!$this
->getSetting('force_title')) {
$has_fillable_field = TRUE;
// Get entity title key such that we can copy the enity title into the block title.
$form['#process'][] = array(
$this,
'processForm',
);
$element['title'] = array(
'#type' => 'textfield',
'#title' => $this
->t('Block title'),
'#default_value' => $items[$delta]->title,
'#description' => $this
->t("The entity title will be used when this field is left empty. Use <none> if you don't want a block title."),
'#attributes' => array(
'class' => array(
'entityblock-title',
),
),
'#attached' => array(
'library' => array(
'entityblock/drupal.entityblock',
),
),
'#required' => $element['#required'],
);
}
else {
$element['title'] = array(
'#type' => 'value',
'#default_value' => $this
->getSetting('force_title'),
);
}
$view_modes = [];
if ($this
->getSetting('view_modes')) {
$view_modes = $this
->getSetting('view_modes');
}
if (count($view_modes) > 1) {
$has_fillable_field = TRUE;
$element['view_mode'] = array(
'#type' => 'select',
'#title' => $this
->t('Render the block with this view mode'),
'#default_value' => $items[$delta]->view_mode,
'#options' => array_intersect_key($this
->getViewModes(), array_flip($view_modes)),
'#attributes' => array(
'class' => array(
'entityblock-view-mode',
),
),
'#required' => $element['#required'],
);
}
else {
$element['view_mode'] = array(
'#type' => 'value',
'#default_value' => reset($view_modes),
);
}
if (!$this
->getSetting('force_enabled')) {
$element['view_mode']['#states'] = $element['title']['#states'] = array(
'invisible' => array(
'input[name="' . $this->fieldDefinition
->getName() . '[' . $delta . '][enabled]' . '"]' => array(
'checked' => FALSE,
),
),
);
}
// We do not have any fields.
if (!$has_fillable_field) {
$element['placeholder'] = array(
'#type' => 'item',
'#markup' => $this
->t('Block @delta', array(
'@delta' => $delta + 1,
)),
);
}
if (\Drupal::moduleHandler()
->moduleExists('token')) {
$token_type = \Drupal::service('token.entity_mapper')
->getTokenTypeForEntityType($this->fieldDefinition
->getTargetEntityTypeId());
if ($token_type) {
$element['token_tree'] = \Drupal::service('token.tree_builder')
->buildRenderable([
$token_type,
], [
'global_types' => FALSE,
]);
$element['token_tree']['#attributes']['class'][] = 'js-form-item';
$element['token_tree']['#states'] = array(
'invisible' => array(
'input[name="' . $this->fieldDefinition
->getName() . '[' . $delta . '][enabled]' . '"]' => array(
'checked' => FALSE,
),
),
);
}
}
// If cardinality is 1, ensure a label is output for the field by wrapping it
// in a details element.
if ($this->fieldDefinition
->getFieldStorageDefinition()
->getCardinality() == 1) {
$element += array(
'#type' => 'fieldset',
);
}
return $element;
}
/**
* Process callback: add title field class to copy the title from.
*
* @see \Drupal\Core\Entity\Entity\EntityFormDisplay::buildForm()
*/
public function processForm($element, FormStateInterface $form_state, $form) {
$element_title_key = \Drupal::entityTypeManager()
->getDefinition($this->fieldDefinition
->getTargetEntityTypeId())
->getKey('label');
if (!empty($form[$element_title_key])) {
$element[$element_title_key]['#attributes']['class'][] = 'entity-title-field';
}
return $element;
}
/**
* Helper function to return a list of view modes.
*/
private function getViewModes() {
return array_map(function ($view_mode) {
return $view_mode['label'];
}, \Drupal::service('entity_display.repository')
->getViewModes($this->fieldDefinition
->getTargetEntityTypeId()));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AllowedTagsXssTrait:: |
public | function | Returns a list of tags allowed by AllowedTagsXssTrait::fieldFilterXss(). | |
AllowedTagsXssTrait:: |
public | function | Returns a human-readable list of allowed tags for display in help texts. | |
AllowedTagsXssTrait:: |
public | function | Filters an HTML string to prevent XSS vulnerabilities. | |
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 | |
EntityBlockWidget:: |
public static | function |
Defines the default settings for this plugin. Overrides PluginSettingsBase:: |
|
EntityBlockWidget:: |
public | function |
Returns the form for a single field widget. Overrides WidgetInterface:: |
|
EntityBlockWidget:: |
private | function | Helper function to return a list of view modes. | |
EntityBlockWidget:: |
public | function | Process callback: add title field class to copy the title from. | |
EntityBlockWidget:: |
public | function |
Returns a form to configure settings for the widget. Overrides WidgetBase:: |
|
EntityBlockWidget:: |
public | function |
Returns a short summary for the current widget settings. Overrides WidgetBase:: |
|
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. | |
PluginSettingsBase:: |
protected | property | Whether default settings have been merged into the current $settings. | |
PluginSettingsBase:: |
protected | property | The plugin settings injected by third party modules. | |
PluginSettingsBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
6 |
PluginSettingsBase:: |
public | function |
Returns the value of a setting, or its default value if absent. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Returns the array of settings, including defaults for missing settings. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets the list of third parties that store information. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets all third-party settings of a given module. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
protected | function | Merges default settings values into $settings. | |
PluginSettingsBase:: |
public | function |
Informs the plugin that some configuration it depends on will be deleted. Overrides PluginSettingsInterface:: |
3 |
PluginSettingsBase:: |
public | function |
Sets the value of a setting for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the settings for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Unsets a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
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. | |
WidgetBase:: |
protected | property | The field definition. | |
WidgetBase:: |
protected | property |
The widget settings. Overrides PluginSettingsBase:: |
|
WidgetBase:: |
public static | function | Ajax callback for the "Add another item" button. | |
WidgetBase:: |
public static | function | Submission handler for the "Add another item" button. | |
WidgetBase:: |
public static | function | After-build handler for field elements in a form. | |
WidgetBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
5 |
WidgetBase:: |
public | function |
Assigns a field-level validation error to the right widget sub-element. Overrides WidgetInterface:: |
8 |
WidgetBase:: |
public | function |
Extracts field values from submitted form values. Overrides WidgetBaseInterface:: |
2 |
WidgetBase:: |
public | function |
Reports field-level validation errors against actual form elements. Overrides WidgetBaseInterface:: |
2 |
WidgetBase:: |
public | function |
Creates a form element for a field. Overrides WidgetBaseInterface:: |
3 |
WidgetBase:: |
protected | function | Special handling to create form elements for multiple values. | 1 |
WidgetBase:: |
protected | function | Generates the form element for a single copy of the widget. | |
WidgetBase:: |
protected | function | Returns the value of a field setting. | |
WidgetBase:: |
protected | function | Returns the array of field settings. | |
WidgetBase:: |
protected | function | Returns the filtered field description. | |
WidgetBase:: |
public static | function |
Retrieves processing information about the widget from $form_state. Overrides WidgetBaseInterface:: |
|
WidgetBase:: |
protected static | function | Returns the location of processing information within $form_state. | |
WidgetBase:: |
protected | function | Returns whether the widget handles multiple values. | |
WidgetBase:: |
public static | function |
Returns if the widget can be used for the provided field. Overrides WidgetInterface:: |
4 |
WidgetBase:: |
protected | function | Returns whether the widget used for default value form. | |
WidgetBase:: |
public | function |
Massages the form values into the format expected for field values. Overrides WidgetInterface:: |
7 |
WidgetBase:: |
public static | function |
Stores processing information about the widget in $form_state. Overrides WidgetBaseInterface:: |
|
WidgetBase:: |
public | function |
Constructs a WidgetBase object. Overrides PluginBase:: |
5 |