Skip to content
Snippets Groups Projects

Resolve #3462514 "Link attributes with manager"

Files
6
@@ -10,6 +10,7 @@ use Drupal\graphql\GraphQL\ResolverBuilder;
use Drupal\graphql\GraphQL\ResolverRegistryInterface;
use Drupal\graphql_compose\Plugin\GraphQL\SchemaExtension\ResolverOnlySchemaExtensionPluginBase;
use Drupal\menu_link_content\Plugin\Menu\MenuLinkContent;
use Symfony\Component\DependencyInjection\ContainerInterface;
use function Symfony\Component\String\u;
@@ -25,6 +26,32 @@ use function Symfony\Component\String\u;
*/
class MenusSchemaExtension extends ResolverOnlySchemaExtensionPluginBase {
/**
* Link attributes plugin manager.
*
* @var \Drupal\link_attributes\LinkAttributesManager|null
*/
protected $linkAttributesManager;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$instance = parent::create(
$container,
$configuration,
$plugin_id,
$plugin_definition
);
$instance->linkAttributesManager = $container->get(
'plugin.manager.link_attributes',
ContainerInterface::NULL_ON_INVALID_REFERENCE
);
return $instance;
}
/**
* {@inheritdoc}
*/
@@ -171,9 +198,18 @@ class MenusSchemaExtension extends ResolverOnlySchemaExtensionPluginBase {
);
$attributes = ['class'];
if ($this->moduleHandler->moduleExists('menu_link_attributes')) {
$menu_link_attributes = $this->configFactory->get('menu_link_attributes.config')->get('attributes') ?: [];
$attributes = array_merge($attributes, array_keys($menu_link_attributes));
$attributes = array_merge(
$attributes,
array_keys($this->configFactory->get('menu_link_attributes.config')->get('attributes') ?: [])
);
}
elseif ($this->moduleHandler->moduleExists('link_attributes_menu_link_content')) {
$attributes = array_merge(
$attributes,
array_keys($this->linkAttributesManager->getDefinitions()),
);
}
foreach ($attributes as $attr) {
Loading