diff --git a/composer.json b/composer.json index 34172523d..74efcf40b 100644 --- a/composer.json +++ b/composer.json @@ -73,7 +73,8 @@ "symfony/validator": "^6.4.0", "symfony/workflow": "^6.4.0", "symfony/yaml": "^6.4.0", - "twig/twig": "^3.3" + "twig/twig": "^3.3", + "yokai/sonata-workflow": "^0.7.0" }, "require-dev": { "aws/aws-sdk-php-symfony": "^2.2", diff --git a/composer.lock b/composer.lock index f962b7a42..632366fb0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6d601d4191257809fe0b434c1ca6073f", + "content-hash": "2e16170f5bfc04c02b26951a3ee44c06", "packages": [ { "name": "aws/aws-crt-php", @@ -3789,16 +3789,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.2.0", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb" + "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb", - "reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a", + "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a", "shasum": "" }, "require": { @@ -3841,9 +3841,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.2.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0" }, - "time": "2024-09-15T16:40:33+00:00" + "time": "2024-09-29T13:56:26+00:00" }, { "name": "phar-io/manifest", @@ -12795,6 +12795,58 @@ "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "yokai/sonata-workflow", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/yokai-php/sonata-workflow.git", + "reference": "71a156626dde23e0f4ba0498f38bf353e8627206" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yokai-php/sonata-workflow/zipball/71a156626dde23e0f4ba0498f38bf353e8627206", + "reference": "71a156626dde23e0f4ba0498f38bf353e8627206", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "sonata-project/admin-bundle": "^4.0", + "symfony/workflow": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Yokai\\SonataWorkflow\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yann Eugoné", + "email": "eugone.yann@gmail.com" + } + ], + "description": "Integrate Symfony workflow component in Sonata Admin", + "keywords": [ + "admin", + "sonata", + "workflow" + ], + "support": { + "issues": "https://github.com/yokai-php/sonata-workflow/issues", + "source": "https://github.com/yokai-php/sonata-workflow/tree/v0.7.2" + }, + "time": "2024-01-12T08:43:58+00:00" } ], "packages-dev": [ diff --git a/packages/sonata-integration-bundle/DependencyInjection/DrawSonataIntegrationExtension.php b/packages/sonata-integration-bundle/DependencyInjection/DrawSonataIntegrationExtension.php index 1cfc60320..e596f33f3 100644 --- a/packages/sonata-integration-bundle/DependencyInjection/DrawSonataIntegrationExtension.php +++ b/packages/sonata-integration-bundle/DependencyInjection/DrawSonataIntegrationExtension.php @@ -3,12 +3,14 @@ namespace Draw\Bundle\SonataIntegrationBundle\DependencyInjection; use Draw\Bundle\SonataExtraBundle\Configuration\SonataAdminNodeConfiguration; +use Draw\Bundle\SonataExtraBundle\Extension\WorkflowExtension; use Draw\Bundle\SonataIntegrationBundle\Configuration\Admin\ConfigAdmin; use Draw\Bundle\SonataIntegrationBundle\Console\Admin\ExecutionAdmin; use Draw\Bundle\SonataIntegrationBundle\Console\Command; use Draw\Bundle\SonataIntegrationBundle\Console\CommandRegistry; use Draw\Bundle\SonataIntegrationBundle\CronJob\Admin\CronJobAdmin; use Draw\Bundle\SonataIntegrationBundle\CronJob\Admin\CronJobExecutionAdmin; +use Draw\Bundle\SonataIntegrationBundle\EntityMigrator\Admin\BaseEntityMigrationAdmin; use Draw\Bundle\SonataIntegrationBundle\EntityMigrator\Admin\MigrationAdmin; use Draw\Bundle\SonataIntegrationBundle\Messenger\Admin\MessengerMessageAdmin; use Draw\Bundle\SonataIntegrationBundle\Messenger\EventListener\FinalizeContextQueueCountEventListener; @@ -36,6 +38,7 @@ use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\DependencyInjection\Loader; use Symfony\Component\DependencyInjection\Parameter; +use Symfony\Component\DependencyInjection\Reference; class DrawSonataIntegrationExtension extends Extension implements PrependExtensionInterface { @@ -211,6 +214,23 @@ private function configureEntityMigrator(array $config, Loader\FileLoader $loade ->setAutowired(true) ->setAutoconfigured(true) ; + + $container + ->setDefinition( + 'draw.sonata_integration.extension.workflow.entity_migrator', + new Definition(WorkflowExtension::class), + ) + ->setAutowired(true) + ->setAutoconfigured(true) + ->setArgument('$registry', new Reference('workflow.registry')) + ->setArgument( + '$options', + [ + 'dropdown_transitions_label' => 'workflow.dropdown_transitions_label', + ] + ) + ->addTag('sonata.admin.extension', ['admin_instanceof' => BaseEntityMigrationAdmin::class]) + ; } private function configureUser(array $config, Loader\FileLoader $loader, ContainerBuilder $container): void @@ -417,6 +437,7 @@ public function prepend(ContainerBuilder $container): void ); $this->prependUser($config['user'], $container); + $this->prependEntityMigrator($config['entity_migrator'], $container); } private function prependUser(array $config, ContainerBuilder $container): void @@ -448,6 +469,20 @@ private function prependUser(array $config, ContainerBuilder $container): void } } + private function prependEntityMigrator(array $config, ContainerBuilder $container): void + { + if (!$config['enabled']) { + return; + } + + $container->prependExtensionConfig( + 'draw_sonata_extra', + [ + 'workflow' => true, + ] + ); + } + private function setControllerClassDefinition(array $config, ContainerBuilder $container): void { if ($container->hasDefinition($config['controller_class'])) { diff --git a/packages/sonata-integration-bundle/EntityMigrator/Admin/BaseEntityMigrationAdmin.php b/packages/sonata-integration-bundle/EntityMigrator/Admin/BaseEntityMigrationAdmin.php index 8942fbc25..2db10e8ee 100644 --- a/packages/sonata-integration-bundle/EntityMigrator/Admin/BaseEntityMigrationAdmin.php +++ b/packages/sonata-integration-bundle/EntityMigrator/Admin/BaseEntityMigrationAdmin.php @@ -20,6 +20,7 @@ abstract class BaseEntityMigrationAdmin extends AbstractAdmin 'pager_type' => 'simple', 'group' => 'Entity Migrator', 'icon' => 'fas fa-cogs', + 'translation_domain' => 'DrawEntityMigratorAdmin', ]; protected function configureDatagridFilters(DatagridMapper $filter): void diff --git a/packages/sonata-integration-bundle/Resources/translations/DrawEntityMigratorAdmin.en.yaml b/packages/sonata-integration-bundle/Resources/translations/DrawEntityMigratorAdmin.en.yaml new file mode 100644 index 000000000..22f1357b9 --- /dev/null +++ b/packages/sonata-integration-bundle/Resources/translations/DrawEntityMigratorAdmin.en.yaml @@ -0,0 +1 @@ +workflow.dropdown_transitions_label: 'Transitions' \ No newline at end of file diff --git a/packages/sonata-integration-bundle/Resources/views/EntityMigrator/BaseEntityMigration/show_transition_logs.html.twig b/packages/sonata-integration-bundle/Resources/views/EntityMigrator/BaseEntityMigration/show_transition_logs.html.twig index e87ae1b82..e2ca0af88 100644 --- a/packages/sonata-integration-bundle/Resources/views/EntityMigrator/BaseEntityMigration/show_transition_logs.html.twig +++ b/packages/sonata-integration-bundle/Resources/views/EntityMigrator/BaseEntityMigration/show_transition_logs.html.twig @@ -10,6 +10,7 @@