Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8020884
NGSTACK-921 add new target 'Download link' which directly downloads t…
AntePrkacin Jul 1, 2025
a883c0d
NGSTACK-921 add new target 'Download inline' which opens the content …
AntePrkacin Jul 1, 2025
cf45d78
NGSTACK-921 add support for new targets 'Download link' and 'Download…
AntePrkacin Jul 1, 2025
0bd7a37
NGSTACK-921 remove cases for target download and downloadInline in st…
AntePrkacin Jul 2, 2025
d5a0f1d
NGSTACK-921 change TARGET_DOWNLOAD_LINK const to be 'download' instea…
AntePrkacin Jul 2, 2025
bcf4ab1
NGSTACK-921 add translations for enhancedlink field_view template in …
AntePrkacin Jul 2, 2025
eaf1188
NGSTACK-921 update FieldValueConverterTest with new value for TARGET_…
AntePrkacin Jul 2, 2025
d5bad81
NGSTACK-921 add GitHub workflows for php-cs-fixer and tests
AntePrkacin Jul 2, 2025
1a68d62
NGSTACK-921 apply php-cs-fixer fix to files
AntePrkacin Jul 2, 2025
d1ca8ea
NGSTACK-921 modfiy tests workflow to not have strict composer validation
AntePrkacin Jul 2, 2025
9f4021f
NGSTACK-921 update composer dependencies
AntePrkacin Jul 2, 2025
4919d27
NGSTACK-921 update php-cs-fixer config file and apply php-cs-fixer fi…
AntePrkacin Jul 2, 2025
a42990f
NGSTACK-921 update phpunit-integration-legacy.xml to disable deprecat…
AntePrkacin Jul 2, 2025
176d837
NGSTACK-921 update GitHub workflow for php-cs-fixer
AntePrkacin Jul 2, 2025
e5050cc
NGSTACK-921 add friendsofphp/php-cs-fixer to composer.json dev depend…
AntePrkacin Jul 8, 2025
b3c3fd1
NGSTACK-921 update php-cs-fixer GitHub workflow to use php-cs-fixer f…
AntePrkacin Jul 8, 2025
3787d6c
NGSTACK-921 apply php-cs-fixer to fix files
AntePrkacin Jul 8, 2025
22bab41
NGSTACK-921 revert the changes made to hasLocation() method in FieldT…
AntePrkacin Jul 10, 2025
fca5edd
NGSTACK-921 refactor hasLOcation() method so that PHPStorm doesn't re…
AntePrkacin Jul 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/coding-standards.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: PHP-CS-Fixer

on:
push:
branches:
- 'master'
- '[0-9].[0-9]+'
pull_request: ~

jobs:
php-cs-fixer:
name: PHP CS Fixer
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: composer

- name: Install dependencies
run: composer install --no-interaction --prefer-dist

- name: Run PHP CS Fixer
run: vendor/bin/php-cs-fixer fix --diff --dry-run
51 changes: 51 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Tests

on:
push:
branches:
- 'master'
- '[0-9].[0-9]+'
pull_request: ~

jobs:
tests:
name: PHP ${{ matrix.php }} / ${{ matrix.phpunit }}
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
php: ['8.1']
phpunit: ['phpunit.xml', 'phpunit-integration-legacy.xml']

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none

- run: composer --version
- run: composer validate

- name: Get Composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php${{ matrix.php }}-composer-

- name: Install dependencies
run: composer update --prefer-dist

- name: Run tests
run: vendor/bin/phpunit -c ${{ matrix.phpunit }} --colors=always

3 changes: 3 additions & 0 deletions .php-cs-fixer.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
'yoda_style' => false,
'php_unit_strict' => false,
'php_unit_test_annotation' => false,
'php_unit_data_provider_static' => false,
'php_unit_data_provider_name' => false,
'php_unit_data_provider_return_type' => false,

// Additional rules
'return_assignment' => false,
Expand Down
7 changes: 4 additions & 3 deletions bundle/Form/Field/FieldValueType.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use Ibexa\Contracts\Core\Repository\ContentService;
use Ibexa\Contracts\Core\Repository\ContentTypeService;
use Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException;
use Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException;
use Ibexa\Contracts\Core\Repository\FieldTypeService;
use Ibexa\Contracts\Core\Repository\Values\Content\Location;
Expand Down Expand Up @@ -48,7 +49,7 @@ public function getBlockPrefix(): string
}

/**
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException
* @throws NotFoundException
*/
public function buildForm(FormBuilderInterface $builder, array $options): void
{
Expand Down Expand Up @@ -161,15 +162,15 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
}

/**
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException
* @throws NotFoundException
*/
public function finishView(FormView $view, FormInterface $form, array $options): void
{
$view->vars['relations'] = [];
$view->vars['default_location'] = $options['default_location'];
$view->vars['root_default_location'] = $options['root_default_location'];

/** @var \Netgen\IbexaFieldTypeEnhancedLink\FieldType\Value $data */
/** @var Value $data */
$data = $form->getData();

if (!$data instanceof Value || null === $data->reference || $data->isTypeExternal()) {
Expand Down
2 changes: 2 additions & 0 deletions bundle/Form/FieldDefinition/FormMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
'field_definition.ngenhancedlink.target.' . Type::TARGET_LINK_IN_NEW_TAB => Type::TARGET_LINK_IN_NEW_TAB,
'field_definition.ngenhancedlink.target.' . Type::TARGET_EMBED => Type::TARGET_EMBED,
'field_definition.ngenhancedlink.target.' . Type::TARGET_MODAL => Type::TARGET_MODAL,
'field_definition.ngenhancedlink.target.' . Type::TARGET_DOWNLOAD_LINK => Type::TARGET_DOWNLOAD_LINK,
'field_definition.ngenhancedlink.target.' . Type::TARGET_DOWNLOAD_INLINE => Type::TARGET_DOWNLOAD_INLINE,
],
'property_path' => 'fieldSettings[allowedTargetsInternal]',
'label' => /* @Desc("Allowed Targets Internal") */ 'field_definition.ngenhancedlink.selection_allowed_targets.internal',
Expand Down
4 changes: 1 addition & 3 deletions bundle/NetgenIbexaFieldTypeEnhancedLinkBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,5 @@

class NetgenIbexaFieldTypeEnhancedLinkBundle extends Bundle
{
public function build(ContainerBuilder $container): void
{
}
public function build(ContainerBuilder $container): void {}
}
2 changes: 2 additions & 0 deletions bundle/Resources/translations/content_type.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ field_definition.ngenhancedlink.target.link: "Link"
field_definition.ngenhancedlink.target.link_new_tab: "Link in new tab"
field_definition.ngenhancedlink.target.embed: "Embed"
field_definition.ngenhancedlink.target.modal: "Modal"
field_definition.ngenhancedlink.target.download: "Download"
field_definition.ngenhancedlink.target.download_inline: "Download inline"
field_definition.ngenhancedlink.link_type.internal: "Internal"
field_definition.ngenhancedlink.link_type.external: "External"
field_definition.ngenhancedlink.link_type.all: "All"
Expand Down
2 changes: 2 additions & 0 deletions bundle/Resources/translations/field_edit.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ ngenhancedlink.url: 'URL'
ngenhancedlink.target.link_new_tab: 'Link in new tab'
ngenhancedlink.target.embed: 'Embed'
ngenhancedlink.target.modal: 'Modal'
ngenhancedlink.target.download: 'Download'
ngenhancedlink.target.download_inline: 'Download inline'
7 changes: 7 additions & 0 deletions bundle/Resources/translations/field_view.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@ ngenhancedlink.single_relation: "Enhanced link"
ngenhancedlink.name: "Name"
ngenhancedlink.content_type: "Content type"
ngenhancedlink.created: "Created"

ngenhancedlink.target.link: "Link"
ngenhancedlink.target.link_new_tab: "Link in new tab"
ngenhancedlink.target.embed: "Embed"
ngenhancedlink.target.modal: "Modal"
ngenhancedlink.target.download: "Download"
ngenhancedlink.target.download_inline: "Download inline"
2 changes: 2 additions & 0 deletions bundle/Resources/translations/ibexa_content_type.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ field_definition.ngenhancedlink.target.link: "Link"
field_definition.ngenhancedlink.target.link_new_tab: "Link in new tab"
field_definition.ngenhancedlink.target.embed: "Embed"
field_definition.ngenhancedlink.target.modal: "Modal"
field_definition.ngenhancedlink.target.download: "Download"
field_definition.ngenhancedlink.target.download_inline: "Download inline"
field_definition.ngenhancedlink.link_type.internal: "Internal"
field_definition.ngenhancedlink.link_type.external: "External"
field_definition.ngenhancedlink.link_type.all: "All"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
{% endembed %}
<p>Type: internal</p>
<p>Label: {{ field.value.label }}</p>
<p>Target: {{ field.value.target }}</p>
<p>Target: {{ ('ngenhancedlink.target.' ~ field.value.target)|trans }}</p>
<p>Suffix: {{ field.value.suffix }}</p>
{% endif %}
{% if field.value.isTypeExternal %}
Expand Down
4 changes: 3 additions & 1 deletion bundle/Templating/Twig/Extension/FieldTypeExtension.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

declare(strict_types=1);

namespace Netgen\IbexaFieldTypeEnhancedLinkBundle\Templating\Twig\Extension;

use Twig\Extension\AbstractExtension;
Expand All @@ -8,7 +10,7 @@
class FieldTypeExtension extends AbstractExtension
{
/**
* @return \Twig\TwigFunction[]
* @return TwigFunction[]
*/
public function getFunctions(): array
{
Expand Down
9 changes: 6 additions & 3 deletions bundle/Templating/Twig/Extension/FieldTypeRuntime.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

declare(strict_types=1);

namespace Netgen\IbexaFieldTypeEnhancedLinkBundle\Templating\Twig\Extension;

use Ibexa\Contracts\Core\Repository\Repository;
Expand All @@ -15,8 +17,9 @@ public function __construct(Repository $repository)

public function hasLocation(int $reference): bool
{
return $this->repository->sudo(
fn (): bool => $this->repository->getContentService()->loadContentInfo($reference)->mainLocationId !== null
);
/** @var bool $callback */
$callback = fn (): bool => $this->repository->getContentService()->loadContentInfo($reference)->mainLocationId !== null;

return $this->repository->sudo($callback);
}
}
3 changes: 2 additions & 1 deletion bundle/View/ParameterProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Ibexa\Contracts\Core\Repository\FieldTypeService;
use Ibexa\Contracts\Core\Repository\Values\Content\Field;
use Ibexa\Core\MVC\Symfony\FieldType\View\ParameterProviderInterface;
use Netgen\IbexaFieldTypeEnhancedLink\FieldType\Value;

final class ParameterProvider implements ParameterProviderInterface
{
Expand All @@ -33,7 +34,7 @@ public function getViewParameters(Field $field): array

private function isLinkAvailable(Field $field): bool
{
/** @var \Netgen\IbexaFieldTypeEnhancedLink\FieldType\Value $value */
/** @var Value $value */
$value = $field->value;

if ($this->fieldTypeService->getFieldType($field->fieldTypeIdentifier)->isEmptyValue($value)) {
Expand Down
8 changes: 7 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"symfony/phpunit-bridge": "^6.1"
"symfony/phpunit-bridge": "^6.1",
"friendsofphp/php-cs-fixer": "^3.7.0"
},
"minimum-stability": "dev",
"prefer-stable": true,
Expand All @@ -43,5 +44,10 @@
},
"scripts": {
"test": "@php vendor/bin/phpunit --colors=always"
},
"config": {
"allow-plugins": {
"php-http/discovery": false
}
}
}
Loading