class ContextualThemeHooks

Hook implementations for contextual.

Hierarchy

Expanded class hierarchy of ContextualThemeHooks

File

core/modules/contextual/src/Hook/ContextualThemeHooks.php, line 11

Namespace

Drupal\contextual\Hook
View source
class ContextualThemeHooks {
    public function __construct(AccountInterface $currentUser) {
    }
    
    /**
     * Implements hook_preprocess().
     *
     * @see \Drupal\contextual\Element\ContextualLinksPlaceholder
     * @see contextual_page_attachments()
     * @see \Drupal\contextual\ContextualController::render()
     */
    public function preprocess(&$variables, $hook, $info) : void {
        // Determine the primary theme function argument.
        if (!empty($info['variables'])) {
            $keys = array_keys($info['variables']);
            $key = $keys[0];
        }
        elseif (!empty($info['render element'])) {
            $key = $info['render element'];
        }
        if (!empty($key) && isset($variables[$key])) {
            $element = $variables[$key];
        }
        if (isset($element) && is_array($element) && !empty($element['#contextual_links'])) {
            $variables['#cache']['contexts'][] = 'user.permissions';
            if ($this->currentUser
                ->hasPermission('access contextual links')) {
                // Mark this element as potentially having contextual links attached to it.
                $variables['attributes']['class'][] = 'contextual-region';
                // Renders a contextual links placeholder unconditionally, thus not breaking
                // the render cache. Although the empty placeholder is rendered for all
                // users, contextual_page_attachments() only adds the asset library for
                // users with the 'access contextual links' permission, thus preventing
                // unnecessary HTTP requests for users without that permission.
                $variables['title_suffix']['contextual_links'] = [
                    '#type' => 'contextual_links_placeholder',
                    '#id' => _contextual_links_to_id($element['#contextual_links']),
                ];
            }
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary
ContextualThemeHooks::preprocess public function Implements hook_preprocess().
ContextualThemeHooks::__construct public function

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.