You are here

class AmpCustomStyle in Accelerated Mobile Pages (AMP) 8.3

Provides a render element for the amp-custom style tag.

Properties:

  • #tag: The tag name to output.
  • #value: (string, optional) A string containing the textual contents of the tag.

Plugin annotation

@RenderElement("amp_custom_style");

Hierarchy

Expanded class hierarchy of AmpCustomStyle

1 #type use of AmpCustomStyle
AmpCssCollectionRenderer::render in src/Asset/AmpCssCollectionRenderer.php
Renders an asset collection.

File

src/Element/AmpCustomStyle.php, line 21

Namespace

Drupal\amp\Element
View source
class AmpCustomStyle extends HtmlTag {

  /**
   * {@inheritdoc}
   */
  public static function preRenderHtmlTag($element) {

    // An HTML tag should not contain any special characters. Escape them to
    // ensure this cannot be abused.
    $escaped_tag = HtmlUtility::escape($element['#tag']);

    // We can't pass amp-custom in as an attribute, a key/value pair will not
    // validate, we must force it to be rendered <style amp-custom>...</style>.
    $open_tag = '<' . $escaped_tag . ' amp-custom>';
    $close_tag = '</' . $escaped_tag . ">\n";

    // Avoid escaping valid css attributes.
    // For instance '.content > li' would be converted to '.content &gt; li'
    $markup = $element['#value'];
    $markup = str_replace('>', 'xxxxxxxxxx', $markup);
    $markup = $markup instanceof MarkupInterface ? $markup : Xss::filterAdmin($markup);
    $markup = str_replace('xxxxxxxxxx', '>', $markup);
    $markup = Markup::create($markup);

    // Avoid re-escaping valid css attributes in later sanitization if $markup
    // is set in #markup by setting the value in #children instead.
    $element['#markup'] = "\n";
    $element['#children'] = $markup;
    $element['#prefix'] = Markup::create($open_tag);
    $element['#suffix'] = Markup::create($close_tag);
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public static function preRenderConditionalComments($element) {

    // Browser-specific comments won't apply or work in AMP inline styles.
    return $element;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AmpCustomStyle::preRenderConditionalComments public static function Pre-render callback: Renders #browsers into #prefix and #suffix. Overrides HtmlTag::preRenderConditionalComments
AmpCustomStyle::preRenderHtmlTag public static function Pre-render callback: Renders a generic HTML tag with attributes. Overrides HtmlTag::preRenderHtmlTag
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
HtmlTag::$voidElements protected static property Void elements do not contain values or closing tags.
HtmlTag::getInfo public function Returns the element properties for this element. Overrides ElementInterface::getInfo
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
RenderElement::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript.
RenderElement::preRenderGroup public static function Adds members of this group as actual elements for rendering.
RenderElement::processAjaxForm public static function Form element processing handler for the #ajax form property. 1
RenderElement::processGroup public static function Arranges elements into groups.
RenderElement::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.