abstract class ExifFieldWidgetBase in Exif 8
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldWidget/ExifFieldWidgetBase.php \Drupal\exif\Plugin\Field\FieldWidget\ExifFieldWidgetBase
Class ExifFieldWidgetBase provide base methods for all widgets.
@package Drupal\exif\Plugin\Field\FieldWidget
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\exif\Plugin\Field\FieldWidget\ExifWidgetBase
- class \Drupal\exif\Plugin\Field\FieldWidget\ExifFieldWidgetBase
- class \Drupal\exif\Plugin\Field\FieldWidget\ExifWidgetBase
- 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 ExifFieldWidgetBase
File
- src/
Plugin/ Field/ FieldWidget/ ExifFieldWidgetBase.php, line 13
Namespace
Drupal\exif\Plugin\Field\FieldWidgetView source
abstract class ExifFieldWidgetBase extends ExifWidgetBase {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
return [
'exif_field_separator' => '',
'exif_field' => 'naming_convention',
] + parent::defaultSettings();
}
/**
* Ensure field is correctly configured.
*
* @param array $element
* A form element array containing basic properties for the widget.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
* @param array $form
* The form structure where widgets are being attached to.
*/
public static function validateExifField(array $element, FormStateInterface $form_state, array $form) {
$elementSettings = $form_state
->getValue($element['#parents']);
if (!$elementSettings) {
$message = t('you must choose at least one method to retrieve image metadata.');
$form_state
->setErrorByName('exif_field', $message);
}
}
/**
* Ensure field separator is correctly configured.
*
* @param array $element
* A form element array containing basic properties for the widget.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public static function validateExifFieldSeparator(array $element, FormStateInterface &$form_state) {
$elementSettings = $form_state
->getValue($element['#parents']);
if (!empty($elementSettings) && strlen($elementSettings) > 1) {
$message = t('the separator is only one character long.');
$form_state
->setErrorByName('exif_field_separator', $message);
}
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$element = parent::settingsForm($form, $form_state);
$exif_fields = $this
->retrieveExifFields();
$default_exif_value = $this
->retrieveExifFieldDefaultValue();
$default_exif_separator_value = $this
->retrieveExifFieldDefaultSeparatorValue();
$element['exif_field'] = [
'#type' => 'select',
'#title' => t('exif field data'),
'#description' => t('choose to retrieve data from the image field referenced with the selected name or by naming convention.'),
'#options' => array_merge([
'naming_convention' => 'name of the field is used as the exif field name',
], $exif_fields),
'#default_value' => $default_exif_value,
'#element_validate' => [
[
get_class($this),
'validateExifField',
],
],
];
$element['exif_field_separator'] = [
'#type' => 'textfield',
'#title' => t('exif field separator'),
'#description' => t('separator used to split values (if field definition support several values). let it empty if you do not want to split values.'),
'#default_value' => $default_exif_separator_value,
'#element_validate' => [
[
get_class($this),
'validateExifFieldSeparator',
],
],
];
return $element;
}
/**
* List of possible fields.
*
* @return array
* List of possible exif fields.
*/
private function retrieveExifFields() {
$exif = ExifFactory::getExifInterface();
return $exif
->getFieldKeys();
}
/**
* Get exif field name associated to this drupal field.
*
* If none found, use naming convention.
*
* @return string
* name of the exif field or string 'naming_convention'.
*/
private function retrieveExifFieldDefaultValue() {
$result = $this
->getSetting('exif_field');
if (empty($result)) {
$result = 'naming_convention';
}
return $result;
}
/**
* Get separator value from settings.
*
* @return string
* separator value or empty string.
*/
private function retrieveExifFieldDefaultSeparatorValue() {
$result = $this
->getSetting('exif_field_separator');
if (empty($result)) {
$result = '';
}
return $result;
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$summary = parent::settingsSummary();
$exif_field_separator = $this
->getSetting('exif_field_separator');
if (isset($exif_field_separator) && strlen($exif_field_separator) == 1) {
$exif_field_msg = t("exif value will be split using character separator '@separator'", [
'@separator' => $exif_field_separator,
]);
}
else {
$exif_field_msg = t('exif value will be extracted as one value');
}
array_unshift($summary, $exif_field_msg);
$exif_field = $this
->getSetting('exif_field');
if (isset($exif_field) && $exif_field != 'naming_convention') {
$exif_field_msg = t("exif data will be extracted from image metadata field '@metadata'", [
'@metadata' => $exif_field,
]);
}
else {
$fieldname = $this->fieldDefinition
->getName();
$exif_field = str_replace("field_", "", $fieldname);
$exif_field_msg = t("Using naming convention. so the exif data will be extracted from image metadata field '@metadata'", [
'@metadata' => $exif_field,
]);
}
array_unshift($summary, $exif_field_msg);
return $summary;
}
}
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 | |
ExifFieldWidgetBase:: |
public static | function |
Defines the default settings for this plugin. Overrides ExifWidgetBase:: |
|
ExifFieldWidgetBase:: |
private | function | Get separator value from settings. | |
ExifFieldWidgetBase:: |
private | function | Get exif field name associated to this drupal field. | |
ExifFieldWidgetBase:: |
private | function | List of possible fields. | |
ExifFieldWidgetBase:: |
public | function |
Returns a form to configure settings for the widget. Overrides ExifWidgetBase:: |
|
ExifFieldWidgetBase:: |
public | function |
Returns a short summary for the current widget settings. Overrides ExifWidgetBase:: |
|
ExifFieldWidgetBase:: |
public static | function | Ensure field is correctly configured. | |
ExifFieldWidgetBase:: |
public static | function | Ensure field separator is correctly configured. | |
ExifWidgetBase:: |
constant | |||
ExifWidgetBase:: |
protected | function | Calculate default value for settings form. | |
ExifWidgetBase:: |
protected | function | Retrieve list of image field labels by key of image field. | |
ExifWidgetBase:: |
public static | function | Validate field to ensure it is linked to a image field. | |
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 |
WidgetInterface:: |
public | function | Returns the form for a single field widget. | 22 |