abstract class BlazyAdminFormatterBase in Blazy 8.2
Same name and namespace in other branches
- 8 src/Form/BlazyAdminFormatterBase.php \Drupal\blazy\Form\BlazyAdminFormatterBase
- 7 src/Form/BlazyAdminFormatterBase.php \Drupal\blazy\Form\BlazyAdminFormatterBase
A base for field formatter admin to have re-usable methods in one place.
Hierarchy
- class \Drupal\blazy\Form\BlazyAdminBase implements BlazyAdminInterface uses StringTranslationTrait
- class \Drupal\blazy\Form\BlazyAdminFormatterBase
Expanded class hierarchy of BlazyAdminFormatterBase
1 file declares its use of BlazyAdminFormatterBase
- BlazyAdminExtended.php in src/
Dejavu/ BlazyAdminExtended.php
File
- src/
Form/ BlazyAdminFormatterBase.php, line 11
Namespace
Drupal\blazy\FormView source
abstract class BlazyAdminFormatterBase extends BlazyAdminBase {
/**
* Defines re-usable basic form elements.
*/
public function basicImageForm(array &$form, $definition = []) {
$this
->imageStyleForm($form, $definition);
if (!empty($definition['media_switch_form']) && !isset($form['media_switch'])) {
$this
->mediaSwitchForm($form, $definition);
}
if (isset($definition['images'])) {
$form['image'] = $this
->baseForm($definition)['image'];
$form['image']['#prefix'] = '';
}
if (isset($form['responsive_image_style'])) {
$form['responsive_image_style']['#description'] = $this
->t('Be sure to enable <strong>Responsive image</strong> option via Blazy UI. Leave empty to disable.');
if ($this
->blazyManager()
->getModuleHandler()
->moduleExists('blazy_ui')) {
$form['responsive_image_style']['#description'] .= ' ' . $this
->t('<a href=":url" target="_blank">Enable lazyloading Responsive image</a>.', [
':url' => Url::fromRoute('blazy.settings')
->toString(),
]);
}
}
}
/**
* Returns re-usable image formatter form elements.
*/
public function imageStyleForm(array &$form, $definition = []) {
$is_responsive = function_exists('responsive_image_get_image_dimensions');
if (empty($definition['no_image_style'])) {
$form['image_style'] = $this
->baseForm($definition)['image_style'];
}
if (!empty($definition['thumbnail_style'])) {
$form['thumbnail_style'] = $this
->baseForm($definition)['thumbnail_style'];
}
if ($is_responsive && !empty($definition['responsive_image'])) {
$url = Url::fromRoute('entity.responsive_image_style.collection')
->toString();
$form['responsive_image_style'] = [
'#type' => 'select',
'#title' => $this
->t('Responsive image'),
'#options' => $this
->getResponsiveImageOptions(),
'#description' => $this
->t('Responsive image style for the main stage image is more reasonable for large images. Works with multi-serving IMG, or PICTURE element. Leave empty to disable. <a href=":url" target="_blank">Manage responsive image styles</a>.', [
':url' => $url,
]),
'#access' => $this
->getResponsiveImageOptions(),
'#weight' => -100,
];
}
if (!empty($definition['thumbnail_effect'])) {
$form['thumbnail_effect'] = [
'#type' => 'select',
'#title' => $this
->t('Thumbnail effect'),
'#options' => isset($definition['thumbnail_effect']) ? $definition['thumbnail_effect'] : [],
'#weight' => -100,
];
}
}
/**
* Return the field formatter settings summary.
*/
public function getSettingsSummary($definition = []) {
if (empty($definition['settings'])) {
return [];
}
$this
->getExcludedSettingsSummary($definition);
$enforced = [
'optionset',
'cache',
'skin',
'view_mode',
'override',
'overridables',
'style',
'vanilla',
];
$summary = [];
$enforced = isset($definition['enforced']) ? $definition['enforced'] : $enforced;
$settings = array_filter($definition['settings']);
foreach ($definition['settings'] as $key => $setting) {
$title = Unicode::ucfirst(str_replace('_', ' ', $key));
$vanilla = !empty($settings['vanilla']);
// @todo remove deprecated breakpoints anytime before 3.x.
if ($key == 'breakpoints') {
continue;
}
if ($vanilla && !in_array($key, $enforced)) {
continue;
}
if ($key == 'override' && empty($setting)) {
unset($settings['overridables']);
}
if (is_bool($setting) && $setting) {
$setting = 'yes';
}
elseif (is_array($setting)) {
$setting = array_filter($setting);
if (!empty($setting)) {
$setting = implode(', ', $setting);
}
}
if ($key == 'cache') {
$setting = $this
->getCacheOptions()[$setting];
}
if (empty($setting)) {
continue;
}
if (isset($settings[$key]) && is_string($setting)) {
$summary[] = $this
->t('@title: <strong>@setting</strong>', [
'@title' => $title,
'@setting' => $setting,
]);
}
}
return $summary;
}
/**
* Exclude the field formatter settings summary as required.
*/
public function getExcludedSettingsSummary(array &$definition = []) {
$settings =& $definition['settings'];
$excludes = empty($definition['excludes']) ? [] : $definition['excludes'];
$plugin_id = isset($definition['plugin_id']) ? $definition['plugin_id'] : '';
$blazy = $plugin_id && strpos($plugin_id, 'blazy') !== FALSE;
$image_styles = $this
->getEntityAsOptions('image_style');
$lightboxes = $this->blazyManager
->getLightboxes();
$excludes['current_view_mode'] = TRUE;
if ($blazy) {
$excludes['optionset'] = TRUE;
}
if (empty($settings['grid'])) {
foreach ([
'grid',
'grid_medium',
'grid_small',
'visible_items',
] as $key) {
$excludes[$key] = TRUE;
}
}
if ($lightboxes && !empty($settings['media_switch']) && !in_array($settings['media_switch'], $lightboxes)) {
foreach ([
'box_style',
'box_media_style',
'box_caption',
] as $key) {
$excludes[$key] = TRUE;
}
}
if (empty($settings['media_switch'])) {
foreach ([
'box_style',
'box_media_style',
'box_caption',
] as $key) {
$excludes[$key] = TRUE;
}
}
// Remove exluded settings.
foreach ($excludes as $key => $value) {
if (isset($settings[$key])) {
unset($settings[$key]);
}
}
foreach ($settings as $key => $setting) {
if ($key == 'style' || $key == 'responsive_image_style' || empty($settings[$key])) {
continue;
}
if (strpos($key, 'style') !== FALSE && isset($image_styles[$settings[$key]])) {
$settings[$key] = $image_styles[$settings[$key]];
}
}
}
/**
* Returns available fields for select options.
*/
public function getFieldOptions($target_bundles = [], $allowed_field_types = [], $entity_type = 'media', $target_type = '') {
$options = [];
$storage = $this
->blazyManager()
->getEntityTypeManager()
->getStorage('field_config');
// Fix for Views UI not recognizing Media bundles, unlike Formatters.
if (empty($target_bundles)) {
$bundle_service = \Drupal::service('entity_type.bundle.info');
$target_bundles = $bundle_service
->getBundleInfo($entity_type);
}
// Declutters options from less relevant options.
$excludes = $this
->getExcludedFieldOptions();
foreach ($target_bundles as $bundle => $label) {
if ($fields = $storage
->loadByProperties([
'entity_type' => $entity_type,
'bundle' => $bundle,
])) {
foreach ((array) $fields as $field) {
if (in_array($field
->getName(), $excludes)) {
continue;
}
if (empty($allowed_field_types)) {
$options[$field
->getName()] = $field
->getLabel();
}
elseif (in_array($field
->getType(), $allowed_field_types)) {
$options[$field
->getName()] = $field
->getLabel();
}
if (!empty($target_type) && $field
->getSetting('target_type') == $target_type) {
$options[$field
->getName()] = $field
->getLabel();
}
}
}
}
return $options;
}
/**
* Declutters options from less relevant options, specific to captions.
*/
public function getExcludedFieldOptions() {
// @todo figure out a more efficient way than blacklisting.
// Do not exclude field_media_image as needed for Main stage.
$fields = 'document_size media_file id media_in_library mime_type source tweet_author tweet_id tweet_url media_video_embed_field instagram_shortcode instagram_url media_soundcloud media_oembed_video media_audio_file media_video_file media_facebook media_flickr file_url external_thumbnail local_thumbnail local_thumbnail_uri media_unsplash';
$fields = explode(' ', $fields);
$excludes = [];
foreach ($fields as $exclude) {
$excludes['field_' . $exclude] = 'field_' . $exclude;
}
$this->blazyManager
->getModuleHandler()
->alter('blazy_excluded_field_options', $excludes);
return $excludes;
}
/**
* Return the field formatter settings summary.
*
* @deprecated in blazy:8.x-1.0 and is removed from blazy:8.x-2.0. Use
* self::getSettingsSummary() instead.
* @see https://www.drupal.org/node/3103018
*/
public function settingsSummary($plugin, $definition = []) {
@trigger_error('settingsSummary is deprecated in blazy:8.x-1.0 and is removed from blazy:8.x-2.0. Use \\Drupal\\blazy\\BlazyAdminFormatterBase::getSettingsSummary() instead. See https://www.drupal.org/node/3103018', E_USER_DEPRECATED);
$definition = isset($definition) ? $definition : $plugin
->getScopedFormElements();
$definition['settings'] = isset($definition['settings']) ? $definition['settings'] : $plugin
->getSettings();
return $this
->getSettingsSummary($definition);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BlazyAdminBase:: |
protected | property | The blazy manager service. | |
BlazyAdminBase:: |
protected | property | The date formatter service. | |
BlazyAdminBase:: |
protected | property | The entity type manager service. | |
BlazyAdminBase:: |
protected | property | The typed config manager service. | |
BlazyAdminBase:: |
public | function | Returns simple form elements common for Views field, EB widget, formatters. | |
BlazyAdminBase:: |
public | function | Returns the blazy manager. | |
BlazyAdminBase:: |
public | function | Deprecated method to remove. | |
BlazyAdminBase:: |
public | function | Returns shared ending form elements across field formatter and Views. | 1 |
BlazyAdminBase:: |
public static | function | ||
BlazyAdminBase:: |
public | function | Returns re-usable logic, styling and assets across fields and Views. | |
BlazyAdminBase:: |
public | function | Returns time in interval for select options. | |
BlazyAdminBase:: |
public | function | Returns available entities for select options. | |
BlazyAdminBase:: |
public | function | Returns the entity display repository. | |
BlazyAdminBase:: |
public | function | Returns available lightbox captions for select options. | |
BlazyAdminBase:: |
public | function | Returns available optionsets for select options. | |
BlazyAdminBase:: |
public | function | Returns Responsive image for select options. | |
BlazyAdminBase:: |
protected | function | Get one of the pre-defined states used in this form. | |
BlazyAdminBase:: |
public | function | Returns the typed config. | |
BlazyAdminBase:: |
public | function | Returns available view modes for select options. | |
BlazyAdminBase:: |
public | function | Returns re-usable grid elements across field formatter and Views. | |
BlazyAdminBase:: |
public | function | Returns re-usable media switch form elements. | |
BlazyAdminBase:: |
public | function | Returns shared form elements across field formatter and Views. | 1 |
BlazyAdminBase:: |
constant | A state that represents the media switch iframe is enabled. | ||
BlazyAdminBase:: |
constant | A state that represents the image rendered switch is enabled. | ||
BlazyAdminBase:: |
constant | A state that represents the custom lightbox caption is enabled. | ||
BlazyAdminBase:: |
constant | A state that represents the media switch lightbox is enabled. | ||
BlazyAdminBase:: |
constant | A state that represents the responsive image style is disabled. | ||
BlazyAdminBase:: |
constant | A state that represents the thumbnail style is enabled. | ||
BlazyAdminBase:: |
public | function | Constructs a BlazyAdminBase object. | |
BlazyAdminFormatterBase:: |
public | function | Defines re-usable basic form elements. | |
BlazyAdminFormatterBase:: |
public | function | Declutters options from less relevant options, specific to captions. | |
BlazyAdminFormatterBase:: |
public | function | Exclude the field formatter settings summary as required. | |
BlazyAdminFormatterBase:: |
public | function | Returns available fields for select options. | |
BlazyAdminFormatterBase:: |
public | function | Return the field formatter settings summary. | |
BlazyAdminFormatterBase:: |
public | function | Returns re-usable image formatter form elements. | |
BlazyAdminFormatterBase:: |
public | function | Return the field formatter settings summary. | |
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. |