class Dropdown in Image Effects 8
Same name in this branch
- 8 src/Plugin/image_effects/FontSelector/Dropdown.php \Drupal\image_effects\Plugin\image_effects\FontSelector\Dropdown
- 8 src/Plugin/image_effects/ImageSelector/Dropdown.php \Drupal\image_effects\Plugin\image_effects\ImageSelector\Dropdown
Same name and namespace in other branches
- 8.3 src/Plugin/image_effects/ImageSelector/Dropdown.php \Drupal\image_effects\Plugin\image_effects\ImageSelector\Dropdown
- 8.2 src/Plugin/image_effects/ImageSelector/Dropdown.php \Drupal\image_effects\Plugin\image_effects\ImageSelector\Dropdown
Dropdown image selector plugin.
Provides access to a list of images stored in a directory, specified in configuration.
Plugin annotation
@Plugin(
id = "dropdown",
title = @Translation("Dropdown image selector"),
short_title = @Translation("Dropdown"),
help = @Translation("Access a list of images stored in the directory specified in configuration.")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\image_effects\Plugin\ImageEffectsPluginBase implements ImageEffectsPluginBaseInterface
- class \Drupal\image_effects\Plugin\image_effects\ImageSelector\Dropdown
- class \Drupal\image_effects\Plugin\ImageEffectsPluginBase implements ImageEffectsPluginBaseInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of Dropdown
1 string reference to 'Dropdown'
- image_effects.schema.yml in config/
schema/ image_effects.schema.yml - config/schema/image_effects.schema.yml
File
- src/
Plugin/ image_effects/ ImageSelector/ Dropdown.php, line 26
Namespace
Drupal\image_effects\Plugin\image_effects\ImageSelectorView source
class Dropdown extends ImageEffectsPluginBase {
/**
* The image factory service.
*
* @var \Drupal\Core\Image\ImageFactory
*/
protected $imageFactory;
/**
* Constructs a ImageEffectsPluginBase object.
*
* @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\Config\ConfigFactoryInterface $config_factory
* The configuration factory.
* @param \Psr\Log\LoggerInterface $logger
* The image_effects logger.
* @param \Drupal\Core\Image\ImageFactory $image_factory
* The image factory service.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory, LoggerInterface $logger, ImageFactory $image_factory) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $config_factory, $logger);
$this->imageFactory = $image_factory;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('config.factory'), $container
->get('logger.channel.image_effects'), $container
->get('image.factory'));
}
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'path' => '',
];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state, array $ajax_settings = []) {
$element['path'] = [
'#type' => 'textfield',
'#title' => $this
->t('Path'),
'#default_value' => $this->configuration['path'],
'#element_validate' => [
[
$this,
'validatePath',
],
],
'#maxlength' => 255,
'#description' => $this
->t('Location of the directory where the background images are stored.') . ' ' . $this
->t('Relative paths will be resolved relative to the Drupal installation directory.'),
];
return $element;
}
/**
* Validation handler for the 'path' element.
*/
public function validatePath($element, FormStateInterface $form_state, $form) {
if (!is_dir($element['#value'])) {
$form_state
->setErrorByName(implode('][', $element['#parents']), $this
->t('Invalid directory specified.'));
}
}
/**
* {@inheritdoc}
*/
public function selectionElement(array $options = []) {
// Get list of images.
$image_files = $this
->getList();
if (empty($image_files)) {
drupal_set_message($this
->t('No images available. Make sure at least one image is available in the directory specified in the <a href=":url">configuration page</a>.', [
':url' => Url::fromRoute('image_effects.settings')
->toString(),
]), 'warning');
}
// Strip the path from the URI.
$options['#default_value'] = isset($options['#default_value']) ? pathinfo($options['#default_value'], PATHINFO_BASENAME) : '';
// Element.
return array_merge([
'#type' => 'select',
'#title' => $this
->t('Image'),
'#description' => $this
->t('Select an image.'),
'#options' => array_combine($image_files, $image_files),
'#element_validate' => [
[
$this,
'validateSelectorUri',
],
],
], $options);
}
/**
* Validation handler for the selection element.
*/
public function validateSelectorUri($element, FormStateInterface $form_state, $form) {
if (!empty($element['#value'])) {
if (file_exists($file_path = $this->configuration['path'] . '/' . $element['#value'])) {
$form_state
->setValueForElement($element, $file_path);
}
else {
$form_state
->setErrorByName(implode('][', $element['#parents']), $this
->t('The selected file does not exist.'));
}
}
}
/**
* Returns an array of files with image extensions in the specified directory.
*
* @return array
* Array of image files.
*/
protected function getList() {
$filelist = [];
if (is_dir($this->configuration['path']) && ($handle = opendir($this->configuration['path']))) {
while ($file = readdir($handle)) {
$extension = pathinfo($file, PATHINFO_EXTENSION);
if (in_array($extension, $this->imageFactory
->getSupportedExtensions())) {
$filelist[] = $file;
}
}
closedir($handle);
}
return $filelist;
}
}
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 | |
Dropdown:: |
protected | property | The image factory service. | |
Dropdown:: |
public | function |
Form constructor. Overrides ImageEffectsPluginBase:: |
|
Dropdown:: |
public static | function |
Creates an instance of the plugin. Overrides ImageEffectsPluginBase:: |
|
Dropdown:: |
public | function |
Gets default configuration for this plugin. Overrides ImageEffectsPluginBase:: |
|
Dropdown:: |
protected | function | Returns an array of files with image extensions in the specified directory. | |
Dropdown:: |
public | function |
Return a form element to select the plugin content. Overrides ImageEffectsPluginBase:: |
|
Dropdown:: |
public | function | Validation handler for the 'path' element. | |
Dropdown:: |
public | function | Validation handler for the selection element. | |
Dropdown:: |
public | function |
Constructs a ImageEffectsPluginBase object. Overrides ImageEffectsPluginBase:: |
|
ImageEffectsPluginBase:: |
protected | property | Configuration object for image_effects. | |
ImageEffectsPluginBase:: |
protected | property | The image_effects logger. | |
ImageEffectsPluginBase:: |
protected | property | The image_effects plugin type. | |
ImageEffectsPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurablePluginInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Get the image_effects plugin type. Overrides ImageEffectsPluginBaseInterface:: |
|
ImageEffectsPluginBase:: |
public static | function |
Determines if plugin can be used. Overrides ImageEffectsPluginBaseInterface:: |
1 |
ImageEffectsPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurablePluginInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
|
ImageEffectsPluginBase:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
|
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. |