improvements-2.x-dev/src/ImprovementsTrustedCallbacks.php
src/ImprovementsTrustedCallbacks.php
<?php namespace Drupal\improvements; use Drupal\Component\Utility\Html; use Drupal\Core\Render\Markup; use Drupal\Core\Security\TrustedCallbackInterface; use Drupal\Core\Url; class ImprovementsTrustedCallbacks implements TrustedCallbackInterface { /** * {@inheritDoc} */ public static function trustedCallbacks(): array { return [ 'pagePreRender', 'linkPostRender', ]; } /** * "Page" element pre render callback. * * @see improvements_element_info_alter() */ public static function pagePreRender(array $element): array { // Remove "off canvas" wrapper for non-admin users. if (!\Drupal::currentUser()->hasPermission('administer site configuration')) { unset($element['#theme_wrappers']['off_canvas_page_wrapper']); } return $element; } /** * "Link" element post render callback. * * @see improvements_element_info_alter() */ public static function linkPostRender($markup, array $element) { // Add support empty link fragment if ( isset($element['#url']) && $element['#url'] instanceof Url && $element['#url']->getOption('fragment') == '<none>' ) { $markup = Markup::create(str_replace('href="#' . Html::escape('<none>') . '"', 'href="#"', $markup)); } return $markup; } }