You are here

public function ThunderMenuSchemaExtension::registerResolvers in Thunder 6.2.x

Overrides ThunderSchemaExtensionPluginBase::registerResolvers

File

modules/thunder_gqls/src/Plugin/GraphQL/SchemaExtension/ThunderMenuSchemaExtension.php, line 22

Class

ThunderMenuSchemaExtension
The menu schema extension.

Namespace

Drupal\thunder_gqls\Plugin\GraphQL\SchemaExtension

Code

public function registerResolvers(ResolverRegistryInterface $registry) {
  parent::registerResolvers($registry);
  $this
    ->addFieldResolverIfNotExists('Query', 'menu', $this->builder
    ->compose($this
    ->fromRoute($this->builder
    ->fromArgument('path')), $this->builder
    ->context('entity', $this->builder
    ->fromParent()), $this->builder
    ->produce('entity_load')
    ->map('type', $this->builder
    ->fromValue('menu'))
    ->map('id', $this->builder
    ->fromArgument('id'))
    ->map('access', $this->builder
    ->fromValue(FALSE))));

  // Menu id.
  $this
    ->addFieldResolverIfNotExists('Menu', 'id', $this->builder
    ->fromPath('entity:menu', 'id'));

  // Menu name.
  $this
    ->addFieldResolverIfNotExists('Menu', 'name', $this->builder
    ->fromPath('entity:menu', 'label'));

  // Menu items.
  $this
    ->addFieldResolverIfNotExists('Menu', 'items', $this->builder
    ->produce('menu_links_active_trail')
    ->map('menu', $this->builder
    ->fromParent())
    ->map('entity', $this->builder
    ->fromContext('entity')));

  // Menu title.
  $this
    ->addFieldResolverIfNotExists('MenuItem', 'title', $this->builder
    ->produce('menu_link_label')
    ->map('link', $this->builder
    ->produce('menu_tree_link')
    ->map('element', $this->builder
    ->fromParent())));

  // Menu in active trail.
  $this
    ->addFieldResolverIfNotExists('MenuItem', 'inActiveTrail', $this->builder
    ->produce('menu_tree_in_active_trail')
    ->map('element', $this->builder
    ->fromParent()));

  // Menu children.
  $this
    ->addFieldResolverIfNotExists('MenuItem', 'children', $this->builder
    ->produce('menu_tree_subtree')
    ->map('element', $this->builder
    ->fromParent()));

  // Menu url.
  $this
    ->addFieldResolverIfNotExists('MenuItem', 'url', $this->builder
    ->compose($this->builder
    ->produce('menu_link_url')
    ->map('link', $this->builder
    ->produce('menu_tree_link')
    ->map('element', $this->builder
    ->fromParent())), $this->builder
    ->produce('url_path')
    ->map('url', $this->builder
    ->fromParent())));
}