From 0254a7b3503b01ff0318a0158e5e106a6593765e Mon Sep 17 00:00:00 2001 From: Christian Adamski <christian.adamski@googlemail.com> Date: Sun, 9 Jun 2024 13:22:33 +0200 Subject: [PATCH] Issue #3447082 by drupalviking: Ajax error thrown if no providers are enabled --- .../GeolocationMapFormatterBase.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php b/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php index c043268d..20d95611 100644 --- a/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php +++ b/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php @@ -88,7 +88,6 @@ abstract class GeolocationMapFormatterBase extends FormatterBase { $container->get('plugin.manager.geolocation.mapprovider'), $container->get('plugin.manager.geolocation.mapcenter'), $container->get('plugin.manager.geolocation.dataprovider'), - $container->get('plugin.manager.geolocation.datalayerprovider'), ); } @@ -325,13 +324,26 @@ abstract class GeolocationMapFormatterBase extends FormatterBase { } } - return array_replace_recursive($summary, $this->mapProvider->getSettingsSummary($settings['map_provider_settings'])); + if ($this->mapProvider ?? NULL) { + return array_replace_recursive($summary, $this->mapProvider->getSettingsSummary($settings['map_provider_settings'])); + } + + $summary[] = $this->t('Attention: No map provider set.'); + + \Drupal::messenger()->addWarning('Geolocation Formatter - Map: No map provider set. Map cannot be displayed.'); + + return $summary; } /** * {@inheritdoc} */ public function viewElements(FieldItemListInterface $items, $langcode): array { + if (!($this->mapProvider ?? NULL)) { + \Drupal::logger('geolocation')->warning('No map provider set. No map can be displayed.'); + return []; + } + if ($items->count() == 0) { return []; } -- GitLab