Mercurial > hg > isophonics-drupal-site
diff core/modules/contextual/src/Element/ContextualLinksPlaceholder.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/contextual/src/Element/ContextualLinksPlaceholder.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,51 @@ +<?php + +namespace Drupal\contextual\Element; + +use Drupal\Core\Template\Attribute; +use Drupal\Core\Render\Element\RenderElement; +use Drupal\Component\Utility\SafeMarkup; + +/** + * Provides a contextual_links_placeholder element. + * + * @RenderElement("contextual_links_placeholder") + */ +class ContextualLinksPlaceholder extends RenderElement { + + /** + * {@inheritdoc} + */ + public function getInfo() { + $class = get_class($this); + return [ + '#pre_render' => [ + [$class, 'preRenderPlaceholder'], + ], + '#id' => NULL, + ]; + } + + /** + * Pre-render callback: Renders a contextual links placeholder into #markup. + * + * Renders an empty (hence invisible) placeholder div with a data-attribute + * that contains an identifier ("contextual id"), which allows the JavaScript + * of the drupal.contextual-links library to dynamically render contextual + * links. + * + * @param array $element + * A structured array with #id containing a "contextual id". + * + * @return array + * The passed-in element with a contextual link placeholder in '#markup'. + * + * @see _contextual_links_to_id() + */ + public static function preRenderPlaceholder(array $element) { + $element['#markup'] = SafeMarkup::format('<div@attributes></div>', ['@attributes' => new Attribute(['data-contextual-id' => $element['#id']])]); + + return $element; + } + +}