wse-1.0.x-dev/modules/wse_menu/src/WseToolbarMenuLinkTree.php

modules/wse_menu/src/WseToolbarMenuLinkTree.php
<?php

namespace Drupal\wse_menu;

use Drupal\Core\Menu\MenuLinkTreeInterface;
use Drupal\Core\Menu\MenuTreeParameters;
use Drupal\workspaces\WorkspaceManagerInterface;

/**
 * Ensures that toolbar tree actions are always executed outside a workspace.
 */
class WseToolbarMenuLinkTree implements MenuLinkTreeInterface {

  /**
   * Constructs a WseToolbarMenuLinkTree object.
   */
  public function __construct(
    protected MenuLinkTreeInterface $inner,
    protected WorkspaceManagerInterface $workspaceManager,
  ) {}

  /**
   * {@inheritdoc}
   */
  public function getCurrentRouteMenuTreeParameters($menu_name) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($menu_name) {
      return $this->inner->getCurrentRouteMenuTreeParameters($menu_name);
    });
  }

  /**
   * {@inheritdoc}
   */
  public function load($menu_name, MenuTreeParameters $parameters) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($menu_name, $parameters) {
      return $this->inner->load($menu_name, $parameters);
    });
  }

  /**
   * {@inheritdoc}
   */
  public function transform(array $tree, array $manipulators) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($tree, $manipulators) {
      return $this->inner->transform($tree, $manipulators);
    });
  }

  /**
   * {@inheritdoc}
   */
  public function build(array $tree) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($tree) {
      return $this->inner->build($tree);
    });
  }

  /**
   * {@inheritdoc}
   */
  public function maxDepth() {
    return $this->workspaceManager->executeOutsideWorkspace(function () {
      return $this->inner->maxDepth();
    });
  }

  /**
   * {@inheritdoc}
   */
  public function getSubtreeHeight($id) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($id) {
      return $this->inner->getSubtreeHeight($id);
    });
  }

  /**
   * {@inheritdoc}
   */
  public function getExpanded($menu_name, array $parents) {
    return $this->workspaceManager->executeOutsideWorkspace(function () use ($menu_name, $parents) {
      return $this->inner->getExpanded($menu_name, $parents);
    });
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc