Skip to content

Commit

Permalink
IBX-7603: Added missing subfield for ezurl (#73)
Browse files Browse the repository at this point in the history
  • Loading branch information
mateuszdebinski authored Nov 28, 2024
1 parent cff568b commit 301d87c
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/bundle/Resources/config/default_settings.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
parameters:
ibexa.graphql.schema.should.extend.ezurl: false
ibexa.graphql.schema.content.field_name.override:
id: id_
ibexa.graphql.schema.content.mapping.field_definition_type:
Expand Down
13 changes: 13 additions & 0 deletions src/bundle/Resources/config/graphql/Field.types.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,16 @@ SelectionFieldValue:
type: "String"
description: "String representation of the value"
resolve: "@=value"

UrlFieldValue:
type: object
config:
fields:
link:
type: String
description: "The link's URL"
resolve: "@=value.link"
text:
type: String
description: "The link's name or description"
resolve: "@=value.text"
6 changes: 6 additions & 0 deletions src/bundle/Resources/config/services/schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ services:
arguments:
$innerMapper: '@Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\SelectionFieldDefinitionMapper.inner'

Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\UrlFieldDefinitionMapper:
decorates: Ibexa\Contracts\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionMapper
arguments:
$innerMapper: '@Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\UrlFieldDefinitionMapper.inner'
$shouldExtendUrlInputType: '%ibexa.graphql.schema.should.extend.ezurl%'

Ibexa\GraphQL\Schema\Domain\Content\Worker\FieldDefinition\AddFieldValueToDomainContent: ~

Ibexa\GraphQL\Schema\Domain\Content\Worker\ContentType\AddItemOfTypeConnectionToGroup: ~
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

/**
* @copyright Copyright (C) Ibexa AS. All rights reserved.
* @license For full copyright and license information view LICENSE file distributed with this source code.
*/
declare(strict_types=1);

namespace Ibexa\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition;

use Ibexa\Contracts\Core\Repository\Values\ContentType\FieldDefinition;
use Ibexa\Contracts\GraphQL\Schema\Domain\Content\Mapper\FieldDefinition\FieldDefinitionMapper;

final class UrlFieldDefinitionMapper extends DecoratingFieldDefinitionMapper implements FieldDefinitionMapper
{
private const FIELD_TYPE_IDENTIFIER = 'ezurl';

private bool $shouldExtendUrlInputType;

public function __construct(
FieldDefinitionMapper $innerMapper,
bool $shouldExtendUrlInputType
) {
parent::__construct($innerMapper);
$this->shouldExtendUrlInputType = $shouldExtendUrlInputType;
}

public function mapToFieldValueType(FieldDefinition $fieldDefinition): string
{
$type = parent::mapToFieldValueType($fieldDefinition);
if (!$this->canMap($fieldDefinition)) {
return $type;
}

if ($this->shouldExtendUrlInputType) {
$type = 'UrlFieldValue';
} else {
@trigger_error(
'The return type `string` for the URL field has been deprecated since version 4.6 ' .
'and will be removed in version 5.0. To start receiving `UrlFieldInput` instead of the deprecated ' .
'`string`, set the parameter `ibexa.graphql.schema.should.extend.ezurl` to `true`.',
E_USER_DEPRECATED
);
}

return $type;
}

protected function getFieldTypeIdentifier(): string
{
return self::FIELD_TYPE_IDENTIFIER;
}
}

0 comments on commit 301d87c

Please sign in to comment.