You are here

class ThunderMenuSchemaExtension in Thunder 6.2.x

The menu schema extension.

Plugin annotation


@SchemaExtension(
  id = "thunder_menu",
  name = "Menu types",
  description = "Menu type definitions.",
  schema = "thunder"
)

Hierarchy

Expanded class hierarchy of ThunderMenuSchemaExtension

File

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

Namespace

Drupal\thunder_gqls\Plugin\GraphQL\SchemaExtension
View source
class ThunderMenuSchemaExtension extends ThunderSchemaExtensionPluginBase {

  /**
   * {@inheritdoc}
   */
  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())));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ResolverHelperTrait::$builder protected property ResolverBuilder.
ResolverHelperTrait::$registry protected property ResolverRegistryInterface.
ResolverHelperTrait::addFieldResolverIfNotExists protected function Add field resolver to registry, if it does not already exist.
ResolverHelperTrait::addSimpleCallbackFields public function Define callback field resolver for a type.
ResolverHelperTrait::createResolverBuilder protected function Create the ResolverBuilder.
ResolverHelperTrait::fromEntityReference public function Produces an entity_reference field.
ResolverHelperTrait::fromEntityReferenceRevisions public function Produces an entity_reference_revisions field.
ResolverHelperTrait::fromRoute public function Produces an entity from a given path.
ThunderMenuSchemaExtension::registerResolvers public function Overrides ThunderSchemaExtensionPluginBase::registerResolvers
ThunderSchemaExtensionPluginBase::$dataProducerManager protected property The data producer plugin manager.
ThunderSchemaExtensionPluginBase::$entityTypeManager protected property The entity type manager service.
ThunderSchemaExtensionPluginBase::create public static function
ThunderSchemaExtensionPluginBase::mapBundleToSchemaName protected function Takes the bundle name and returns the schema name.
ThunderSchemaExtensionPluginBase::resolveBaseFields protected function Add fields common to all entities.
ThunderSchemaExtensionPluginBase::resolveMediaInterfaceFields protected function Add fields common to all media types.
ThunderSchemaExtensionPluginBase::resolvePageInterfaceFields protected function Add fields common to all page types.
ThunderSchemaExtensionPluginBase::resolvePageInterfaceQueryFields protected function Add content query field resolvers.
ThunderSchemaExtensionPluginBase::resolveParagraphInterfaceFields protected function Add fields common to all media types.
ThunderSchemaExtensionPluginBase::setDataProducerManager protected function Set the plugin manager.
ThunderSchemaExtensionPluginBase::setEntityTypeManager protected function Set the entity type manager.