You are here

public static function AmpProcessedText::preRenderAmpText in Accelerated Mobile Pages (AMP) 8.3

Same name and namespace in other branches
  1. 8 src/Element/AmpProcessedText.php \Drupal\amp\Element\AmpProcessedText::preRenderAmpText()
  2. 8.2 src/Element/AmpProcessedText.php \Drupal\amp\Element\AmpProcessedText::preRenderAmpText()

Pre-render callback: Processes the amp markup and attaches libraries.

File

src/Element/AmpProcessedText.php, line 39

Class

AmpProcessedText
Provides an amp-processed text render element.

Namespace

Drupal\amp\Element

Code

public static function preRenderAmpText($element) {

  /** @var \Drupal\amp\Service\AMPService $amp_service */
  $amp_service = \Drupal::service('amp.utilities');

  /** @var \Lullabot\AMP\AMP $amp */
  $amp = $amp_service
    ->createAMPConverter();
  $amp
    ->loadHtml($element['#markup']);
  $element['#markup'] = $amp
    ->convertToAmpHtml();
  $element['#allowed_tags'] = array_merge(Xss::getAdminTagList(), [
    'amp-img',
  ]);
  $js = $amp
    ->getComponentJs();
  if (!empty($js)) {
    $element['#attached']['library'] = $amp_service
      ->addComponentLibraries($js);
    $element['#allowed_tags'] = array_merge($amp_service
      ->getComponentTags($js), $element['#allowed_tags']);
  }
  return $element;
}