Loading src/Plugin/Field/FieldFormatter/TelegramEmbedFormatter.php +2 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\FormatterBase; use Drupal\Core\Render\Markup; use Drupal\telegram_media_type\Plugin\media\Source\Telegram; /** Loading @@ -33,13 +32,14 @@ class TelegramEmbedFormatter extends FormatterBase { if (($source = $media->getSource()) && $source instanceof Telegram) { foreach ($items as $delta => $item) { $element[$delta] = [ '#markup' => Markup::create($source->getMetadata($media, 'html')), '#cache' => [ 'contexts' => Cache::mergeContexts(['languages'], $media->getCacheContexts()), 'tags' => $media->getCacheTags(), 'max-age' => $media->getCacheMaxAge(), ], ]; $element[$delta] += $source->getMetadata($media, 'html'); } } Loading src/TelegramFetcher.php +12 −10 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\Core\Logger\LoggerChannelFactoryInterface; use Drupal\Core\Template\Attribute; use GuzzleHttp\ClientInterface; /** Loading Loading @@ -88,20 +89,21 @@ class TelegramFetcher { } $urlToDisplay = 'https://t.me/' . $postLink; $oembedResponse['html'] = ' <blockquote class="telegram-media-placeholder-loading" style="padding:2em;background-color:#FBFBFB;text-align:center;"">' . $urlToDisplay . '</blockquote> <script> var placeholders = document.querySelectorAll(".telegram-media-placeholder-loading"); for (var i = 0; i < placeholders.length; ++i) { placeholders[i].style.display = "none"; } </script> <script async src="https://telegram.org/js/telegram-widget.js?18" data-telegram-post="' . $postLink . '" data-width="100%"></script>'; $scriptAttributes = new Attribute(); $scriptAttributes['data-telegram-post'] = [$postLink]; $scriptAttributes['data-width'] = ['100%']; $scriptAttributes['data-is-telegram'] = ['true']; $oembedResponse['html'] = [ '#theme' => 'telegram_media_type', '#url' => $urlToDisplay, '#script_attributes' => $scriptAttributes, ]; $oembedResponse['author_name'] = 'Telegram'; $oembedResponse['width'] = '500'; $oembedResponse['height'] = 'auto'; $oembedResponse['url'] = $oembedResponse['html']; $oembedResponse['url'] = $urlToDisplay; return $oembedResponse; } Loading telegram_media_type.module +14 −0 Original line number Diff line number Diff line Loading @@ -13,3 +13,17 @@ function telegram_media_type_help($route_name, RouteMatchInterface $route_match) } return NULL; } /** * Implements hook_theme(). */ function telegram_media_type_theme($existing, $type, $theme, $path) { return [ 'telegram_media_type' => [ 'variables' => [ 'url' => '', 'script_attributes' => [], ], ], ]; } templates/telegram-media-type.html.twig 0 → 100644 +10 −0 Original line number Diff line number Diff line <div class="telegram-embedded-content"> <blockquote class="telegram-media-placeholder-loading" style="padding:2em;background-color:#FBFBFB;text-align:center;">{{ url }}</blockquote> <script> var placeholders = document.querySelectorAll(".telegram-media-placeholder-loading"); for (var i = 0; i < placeholders.length; ++i) { placeholders[i].style.display = "none"; } </script> <script async src="https://telegram.org/js/telegram-widget.js?18" {{ script_attributes|without('src', 'async') }}></script> </div> Loading
src/Plugin/Field/FieldFormatter/TelegramEmbedFormatter.php +2 −2 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\FormatterBase; use Drupal\Core\Render\Markup; use Drupal\telegram_media_type\Plugin\media\Source\Telegram; /** Loading @@ -33,13 +32,14 @@ class TelegramEmbedFormatter extends FormatterBase { if (($source = $media->getSource()) && $source instanceof Telegram) { foreach ($items as $delta => $item) { $element[$delta] = [ '#markup' => Markup::create($source->getMetadata($media, 'html')), '#cache' => [ 'contexts' => Cache::mergeContexts(['languages'], $media->getCacheContexts()), 'tags' => $media->getCacheTags(), 'max-age' => $media->getCacheMaxAge(), ], ]; $element[$delta] += $source->getMetadata($media, 'html'); } } Loading
src/TelegramFetcher.php +12 −10 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\Core\Logger\LoggerChannelFactoryInterface; use Drupal\Core\Template\Attribute; use GuzzleHttp\ClientInterface; /** Loading Loading @@ -88,20 +89,21 @@ class TelegramFetcher { } $urlToDisplay = 'https://t.me/' . $postLink; $oembedResponse['html'] = ' <blockquote class="telegram-media-placeholder-loading" style="padding:2em;background-color:#FBFBFB;text-align:center;"">' . $urlToDisplay . '</blockquote> <script> var placeholders = document.querySelectorAll(".telegram-media-placeholder-loading"); for (var i = 0; i < placeholders.length; ++i) { placeholders[i].style.display = "none"; } </script> <script async src="https://telegram.org/js/telegram-widget.js?18" data-telegram-post="' . $postLink . '" data-width="100%"></script>'; $scriptAttributes = new Attribute(); $scriptAttributes['data-telegram-post'] = [$postLink]; $scriptAttributes['data-width'] = ['100%']; $scriptAttributes['data-is-telegram'] = ['true']; $oembedResponse['html'] = [ '#theme' => 'telegram_media_type', '#url' => $urlToDisplay, '#script_attributes' => $scriptAttributes, ]; $oembedResponse['author_name'] = 'Telegram'; $oembedResponse['width'] = '500'; $oembedResponse['height'] = 'auto'; $oembedResponse['url'] = $oembedResponse['html']; $oembedResponse['url'] = $urlToDisplay; return $oembedResponse; } Loading
telegram_media_type.module +14 −0 Original line number Diff line number Diff line Loading @@ -13,3 +13,17 @@ function telegram_media_type_help($route_name, RouteMatchInterface $route_match) } return NULL; } /** * Implements hook_theme(). */ function telegram_media_type_theme($existing, $type, $theme, $path) { return [ 'telegram_media_type' => [ 'variables' => [ 'url' => '', 'script_attributes' => [], ], ], ]; }
templates/telegram-media-type.html.twig 0 → 100644 +10 −0 Original line number Diff line number Diff line <div class="telegram-embedded-content"> <blockquote class="telegram-media-placeholder-loading" style="padding:2em;background-color:#FBFBFB;text-align:center;">{{ url }}</blockquote> <script> var placeholders = document.querySelectorAll(".telegram-media-placeholder-loading"); for (var i = 0; i < placeholders.length; ++i) { placeholders[i].style.display = "none"; } </script> <script async src="https://telegram.org/js/telegram-widget.js?18" {{ script_attributes|without('src', 'async') }}></script> </div>