Commit 2cdbc287 authored by Robert Kasza's avatar Robert Kasza Committed by Robert Kasza
Browse files

Issue #3281414 by kaszarobert: Use Twig template for rendering embedded content

parent ad9f3e41
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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');
      }
    }

+12 −10
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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;
  }
+14 −0
Original line number Diff line number Diff line
@@ -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' => [],
      ],
    ],
  ];
}
+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>