diff --git a/config/config.yaml b/config/config.yaml
index 663d8f9e9..9a8a7bea6 100755
--- a/config/config.yaml
+++ b/config/config.yaml
@@ -1,6 +1,5 @@
imports:
- { resource: "@SyliusCmsPlugin/config/grids.yaml" }
- - { resource: "@SyliusCmsPlugin/config/services.xml" }
- { resource: "@SyliusCmsPlugin/config/fixtures/*.yaml"}
- { resource: '@SyliusCmsPlugin/config/twig_hooks/**/*.yaml' }
diff --git a/config/services.php b/config/services.php
new file mode 100644
index 000000000..efeb1ec32
--- /dev/null
+++ b/config/services.php
@@ -0,0 +1,72 @@
+services();
+ $parameters = $container->parameters();
+ $container->import('services/**/*.php');
+
+ $parameters->set('sylius_cms.media_provider.interface', ProviderInterface::class);
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.registry.media_provider', ServiceRegistry::class)
+ ->args([
+ '%sylius_cms.media_provider.interface%',
+ 'Media provider',
+ ]);
+
+ $services->set('sylius_cms.media_uploader.image', MediaUploader::class)
+ ->args([service('sylius_cms.media.filesystem.image')]);
+
+ $services->set('sylius_cms.media_uploader.video', MediaUploader::class)
+ ->args([service('sylius_cms.media.filesystem.video')]);
+
+ $services->set('sylius_cms.media_uploader.file', MediaUploader::class)
+ ->args([service('sylius_cms.media.filesystem.file')]);
+
+ $services->set('sylius_cms.media.filesystem.image', FlysystemFilesystemAdapter::class)
+ ->args([service('sylius_cms_media.image.storage')]);
+
+ $services->set('sylius_cms.media.filesystem.video', FlysystemFilesystemAdapter::class)
+ ->args([service('sylius_cms_media.video.storage')]);
+
+ $services->set('sylius_cms.media.filesystem.file', FlysystemFilesystemAdapter::class)
+ ->args([service('sylius_cms_media.file.storage')]);
+
+ $services->set('sylius_cms.sorter.collections', CollectionsSorter::class);
+
+ $services->set('sylius_cms.context.locale.admin_preview', PreviewLocaleContext::class)
+ ->args([
+ service('sylius.section_resolver.uri_based'),
+ service('request_stack'),
+ service('sylius.provider.locale'),
+ ])
+ ->tag('sylius.context.locale', ['priority' => 256]);
+
+ $services->set('sylius_cms.provider.resource_template', ResourceTemplateProvider::class)
+ ->args([service('parameter_bag')]);
+
+ $services->set('sylius_cms.menu.reorder', MenuReorder::class);
+
+ $services->set(EnabledAndAvailableExtension::class)
+ ->args([
+ service(UserContextInterface::class),
+ service('sylius.context.channel'),
+ ])
+ ->tag('api_platform.doctrine.orm.query_extension.collection')
+ ->tag('api_platform.doctrine.orm.query_extension.item');
+};
diff --git a/config/services/controller.php b/config/services/controller.php
new file mode 100644
index 000000000..dc458f79b
--- /dev/null
+++ b/config/services/controller.php
@@ -0,0 +1,51 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.controller.action.admin.upload_editor_image', UploadEditorImageAction::class)
+ ->args([
+ service('sylius_cms.resolver.media_provider'),
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.factory.media'),
+ ]);
+
+ $services->set('sylius_cms.controller.helper.form_errors_flash', FormErrorsFlashHelper::class)
+ ->args([
+ service('request_stack'),
+ service('translator'),
+ ]);
+
+ $services->set('sylius_cms.controller.media.overriden', MediaController::class)
+ ->parent('sylius_cms.controller.media')
+ ->call('setMediaProviderResolver', [service('sylius_cms.resolver.media_provider')])
+ ->call('setMediaResourceResolver', [service('sylius_cms.resolver.media_resource')])
+ ->call('setFormErrorsFlashHelper', [service('sylius_cms.controller.helper.form_errors_flash')])
+ ->call('setCacheManager', [service('liip_imagine.cache.manager')])
+ ->call('setDataManager', [service('liip_imagine.data.manager')]);
+
+ $services->set('sylius_cms.controller.page.overriden', PageController::class)
+ ->parent('sylius_cms.controller.page')
+ ->call('setFormErrorsFlashHelper', [service('sylius_cms.controller.helper.form_errors_flash')])
+ ->call('setCacheManager', [service('liip_imagine.cache.manager')])
+ ->call('setDataManager', [service('liip_imagine.data.manager')]);
+};
diff --git a/config/services/controller.xml b/config/services/controller.xml
deleted file mode 100644
index a3cd02331..000000000
--- a/config/services/controller.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/event_listener.php b/config/services/event_listener.php
new file mode 100644
index 000000000..4aae05cd5
--- /dev/null
+++ b/config/services/event_listener.php
@@ -0,0 +1,31 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.menu.content_management', ContentManagementMenuBuilder::class)
+ ->args([service('sylius_cms.menu.reorder')])
+ ->tag('kernel.event_listener', ['event' => 'sylius.menu.admin.main', 'method' => 'buildMenu']);
+
+ $services->set('sylius_cms.event_listener.media_upload', MediaUploadListener::class)
+ ->args([service('sylius_cms.resolver.media_provider')])
+ ->tag('kernel.event_listener', ['event' => 'sylius_cms.media.pre_create', 'method' => 'uploadMedia'])
+ ->tag('kernel.event_listener', ['event' => 'sylius_cms.media.pre_update', 'method' => 'uploadMedia']);
+};
diff --git a/config/services/event_listener.xml b/config/services/event_listener.xml
deleted file mode 100644
index bc71c6cc7..000000000
--- a/config/services/event_listener.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/fixture.php b/config/services/fixture.php
new file mode 100644
index 000000000..3b273124c
--- /dev/null
+++ b/config/services/fixture.php
@@ -0,0 +1,114 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.fixture.assigner.channels', ChannelsAssigner::class)
+ ->args([service('sylius.repository.channel')]);
+
+ $services->set('sylius_cms.fixture.assigner.products', ProductsAssigner::class)
+ ->args([service('sylius.repository.product')]);
+
+ $services->set('sylius_cms.fixture.assigner.taxons', TaxonsAssigner::class)
+ ->args([service('sylius.repository.taxon')]);
+
+ $services->set('sylius_cms.fixture.assigner.collections', CollectionsAssigner::class)
+ ->args([service('sylius_cms.repository.collection')]);
+
+ $services->set('sylius_cms.fixture.assigner.products_in_taxons', ProductsInTaxonsAssigner::class)
+ ->args([service('sylius.repository.taxon')]);
+
+ $services->set('sylius_cms.fixture.block', BlockFixture::class)
+ ->args([service('sylius_cms.fixture.factory.block')])
+ ->tag('sylius_fixtures.fixture');
+
+ $services->set('sylius_cms.fixture.page', PageFixture::class)
+ ->args([service('sylius_cms.fixture.factory.page')])
+ ->tag('sylius_fixtures.fixture');
+
+ $services->set('sylius_cms.fixture.collection', CollectionFixture::class)
+ ->args([service('sylius_cms.fixture.factory.collection')])
+ ->tag('sylius_fixtures.fixture');
+
+ $services->set('sylius_cms.fixture.media', MediaFixture::class)
+ ->args([service('sylius_cms.fixture.factory.media')])
+ ->tag('sylius_fixtures.fixture');
+
+ $services->set('sylius_cms.fixture.template', TemplateFixture::class)
+ ->args([service('sylius_cms.fixture.factory.template')])
+ ->tag('sylius_fixtures.fixture');
+
+ $services->set('sylius_cms.fixture.factory.block', BlockFixtureFactory::class)
+ ->args([
+ service('sylius_cms.factory.block'),
+ service('sylius_cms.repository.block'),
+ service('sylius_cms.fixture.assigner.collections'),
+ service('sylius_cms.fixture.assigner.channels'),
+ service('sylius_cms.fixture.assigner.products'),
+ service('sylius_cms.fixture.assigner.taxons'),
+ service('sylius_cms.fixture.assigner.products_in_taxons'),
+ ]);
+
+ $services->set('sylius_cms.fixture.factory.page', PageFixtureFactory::class)
+ ->args([
+ service('sylius_cms.factory.page'),
+ service('sylius_cms.factory.page_translation'),
+ service('sylius_cms.repository.page'),
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.fixture.assigner.collections'),
+ service('sylius_cms.fixture.assigner.channels'),
+ ]);
+
+ $services->set('sylius_cms.fixture.factory.collection', CollectionFixtureFactory::class)
+ ->args([
+ service('sylius_cms.factory.collection'),
+ service('sylius_cms.repository.collection'),
+ service('sylius_cms.repository.page'),
+ ]);
+
+ $services->set('sylius_cms.fixture.factory.media', MediaFixtureFactory::class)
+ ->args([
+ service('sylius_cms.factory.media'),
+ service('sylius_cms.factory.media_translation'),
+ service('sylius_cms.resolver.media_provider'),
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.fixture.assigner.collections'),
+ service('sylius_cms.fixture.assigner.channels'),
+ ]);
+
+ $services->set('sylius_cms.fixture.factory.template', TemplateFixtureFactory::class)
+ ->args([
+ service('sylius_cms.factory.template'),
+ service('sylius_cms.repository.template'),
+ ]);
+};
diff --git a/config/services/fixture.xml b/config/services/fixture.xml
deleted file mode 100644
index 5f1208878..000000000
--- a/config/services/fixture.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/form.php b/config/services/form.php
new file mode 100644
index 000000000..42a74f7ef
--- /dev/null
+++ b/config/services/form.php
@@ -0,0 +1,209 @@
+services();
+ $parameters = $container->parameters();
+ $parameters->set('sylius_cms.content_elements.type.single_media', SingleMediaContentElementType::TYPE);
+ $parameters->set('sylius_cms.content_elements.type.multiple_media', MultipleMediaContentElementType::TYPE);
+ $parameters->set('sylius_cms.content_elements.type.products_carousel_by_taxon', ProductsCarouselByTaxonContentElementType::TYPE);
+ $parameters->set('sylius_cms.content_elements.type.products_grid_by_taxon', ProductsGridByTaxonContentElementType::TYPE);
+ $parameters->set('sylius_cms.content_elements.type.pages_collection', PagesCollectionContentElementType::TYPE);
+
+ $services->set('sylius_cms.form.type.block', BlockType::class)
+ ->args([
+ '%sylius_cms.model.block.class%',
+ '%sylius_cms.form.type.block.validation_groups%',
+ service('sylius_cms.provider.resource_template'),
+ service('sylius.provider.locale'),
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_configuration', ContentConfigurationType::class)
+ ->args([
+ tagged_iterator('sylius_cms.content_elements.type', indexAttribute: 'key'),
+ service('twig'),
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.page', PageType::class)
+ ->args([
+ '%sylius_cms.model.page.class%',
+ '%sylius_cms.form.type.page.validation_groups%',
+ service('sylius_cms.provider.resource_template'),
+ service('sylius.provider.locale'),
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.translation.page', PageTranslationType::class)
+ ->args([
+ '%sylius_cms.model.page_translation.class%',
+ '%sylius_cms.form.type.translation.page.validation_groups%',
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.collection', CollectionType::class)
+ ->args([
+ '%sylius_cms.model.collection.class%',
+ '%sylius_cms.form.type.collection.validation_groups%',
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.translation.media', MediaTranslationType::class)
+ ->args([
+ '%sylius_cms.model.media_translation.class%',
+ '%sylius_cms.form.type.translation.media.validation_groups%',
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.media', MediaType::class)
+ ->args([
+ '%sylius_cms.model.media.class%',
+ '%sylius_cms.form.type.media.validation_groups%',
+ '%sylius_cms.media_providers%',
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.template', TemplateType::class)
+ ->args([
+ '%sylius_cms.model.template.class%',
+ '%sylius_cms.form.type.template.validation_groups%',
+ ])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element', ContentElementType::class)
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element.single_media', SingleMediaContentElementType::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.form.data_transformer.content_element_checker'),
+ ])
+ ->tag('sylius_cms.content_elements.type', ['key' => '%sylius_cms.content_elements.type.single_media%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element.multiple_media', MultipleMediaContentElementType::class)
+ ->args([service('sylius_cms.form.type.data_transformer.multiple_media_to_codes')])
+ ->tag('sylius_cms.content_elements.type', ['key' => '%sylius_cms.content_elements.type.multiple_media%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element.products_carousel_by_taxon', ProductsCarouselByTaxonContentElementType::class)
+ ->args([
+ service('sylius.repository.taxon'),
+ service('sylius_cms.form.data_transformer.content_element_checker'),
+ ])
+ ->tag('sylius_cms.content_elements.type', ['key' => '%sylius_cms.content_elements.type.products_carousel_by_taxon%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element.products_grid_by_taxon', ProductsGridByTaxonContentElementType::class)
+ ->args([
+ service('sylius.repository.taxon'),
+ service('sylius_cms.form.data_transformer.content_element_checker'),
+ ])
+ ->tag('sylius_cms.content_elements.type', ['key' => '%sylius_cms.content_elements.type.products_grid_by_taxon%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element.pages_collection', PagesCollectionContentElementType::class)
+ ->args([
+ service('sylius_cms.repository.collection'),
+ service('sylius_cms.form.data_transformer.content_element_checker'),
+ ])
+ ->tag('sylius_cms.content_elements.type', ['key' => '%sylius_cms.content_elements.type.pages_collection%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.wysiwyg', WysiwygType::class)
+ ->args([service('sylius_cms.resolver.wysiwyg_strategy_resolver')])
+ ->call('setStrategy', ['%sylius_cms.wysiwyg_editor%'])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.data_transformer.multiple_media_to_codes', MultipleMediaToCodesTransformer::class)
+ ->args([service('sylius_cms.repository.media')]);
+
+ $services->set('sylius_cms.form.data_transformer.content_element_checker', ContentElementDataTransformerChecker::class);
+
+ $services->set('sylius_cms.form.wysiwyg_strategy.trix', TrixStrategy::class)
+ ->tag('sylius_cms.wysiwyg_strategy', ['strategy' => 'trix']);
+
+ $services->set('sylius_cms.form.wysiwyg_strategy.quill', QuillStrategy::class)
+ ->tag('sylius_cms.wysiwyg_strategy', ['strategy' => 'quill']);
+
+ $services->set('sylius_cms.form.type.page_autocomplete', PageAutocompleteType::class)
+ ->args(['%sylius_cms.model.page.class%'])
+ ->tag('form.type')
+ ->tag('ux.entity_autocomplete_field');
+
+ $services->set('sylius_cms.form.type.block_autocomplete', BlockAutocompleteType::class)
+ ->args(['%sylius_cms.model.block.class%'])
+ ->tag('form.type')
+ ->tag('ux.entity_autocomplete_field');
+
+ $services->set('sylius_cms.form.type.media_autocomplete', MediaAutocompleteType::class)
+ ->args(['%sylius_cms.model.media.class%'])
+ ->tag('form.type')
+ ->tag('ux.entity_autocomplete_field');
+
+ $services->set('sylius_cms.form.type.collection_autocomplete', CollectionAutocompleteType::class)
+ ->args(['%sylius_cms.model.collection.class%'])
+ ->tag('form.type')
+ ->tag('ux.entity_autocomplete_field');
+
+ $services->set('sylius_cms.form.type.admin.template_autocomplete', TemplateAutocompleteType::class)
+ ->args(['%sylius_cms.model.template.class%'])
+ ->tag('form.type')
+ ->tag('ux.entity_autocomplete_field');
+
+ $services->set('sylius_cms.form.type.admin.content_configuration_translations', ContentConfigurationTranslationsType::class)
+ ->args([service('sylius.provider.translation_locale.admin')])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.content_element_choice', ContentElementChoiceType::class)
+ ->args([tagged_iterator('sylius_cms.content_elements.type', indexAttribute: 'key')])
+ ->tag('form.type');
+
+ $services->set('sylius_cms.form.type.admin.content_element_configuration', ContentElementConfigurationType::class)
+ ->args([
+ ContentConfiguration::class,
+ '%sylius_cms.form.type.content_configuration.validation_groups%',
+ tagged_iterator('sylius_cms.content_elements.type', indexAttribute: 'key'),
+ ])
+ ->tag('form.type');
+};
diff --git a/config/services/form.xml b/config/services/form.xml
deleted file mode 100644
index c6be280dc..000000000
--- a/config/services/form.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
-
-
- Sylius\CmsPlugin\Form\Type\ContentElements\SingleMediaContentElementType::TYPE
- Sylius\CmsPlugin\Form\Type\ContentElements\MultipleMediaContentElementType::TYPE
- Sylius\CmsPlugin\Form\Type\ContentElements\ProductsCarouselByTaxonContentElementType::TYPE
- Sylius\CmsPlugin\Form\Type\ContentElements\ProductsGridByTaxonContentElementType::TYPE
- Sylius\CmsPlugin\Form\Type\ContentElements\PagesCollectionContentElementType::TYPE
-
-
-
-
- %sylius_cms.model.block.class%
- %sylius_cms.form.type.block.validation_groups%
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.model.page.class%
- %sylius_cms.form.type.page.validation_groups%
-
-
-
-
-
-
- %sylius_cms.model.page_translation.class%
- %sylius_cms.form.type.translation.page.validation_groups%
-
-
-
-
- %sylius_cms.model.collection.class%
- %sylius_cms.form.type.collection.validation_groups%
-
-
-
-
- %sylius_cms.model.media_translation.class%
- %sylius_cms.form.type.translation.media.validation_groups%
-
-
-
-
- %sylius_cms.model.media.class%
- %sylius_cms.form.type.media.validation_groups%
- %sylius_cms.media_providers%
-
-
-
-
- %sylius_cms.model.template.class%
- %sylius_cms.form.type.template.validation_groups%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.wysiwyg_editor%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.model.page.class%
-
-
-
-
-
- %sylius_cms.model.block.class%
-
-
-
-
-
- %sylius_cms.model.media.class%
-
-
-
-
-
- %sylius_cms.model.collection.class%
-
-
-
-
-
- %sylius_cms.model.template.class%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sylius\CmsPlugin\Entity\ContentConfiguration
- %sylius_cms.form.type.content_configuration.validation_groups%
-
-
-
-
-
-
diff --git a/config/services/media_provider.php b/config/services/media_provider.php
new file mode 100644
index 000000000..7ca74ca2f
--- /dev/null
+++ b/config/services/media_provider.php
@@ -0,0 +1,45 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.media_provider.image', GenericProvider::class)
+ ->args([
+ service('sylius_cms.media_uploader.image'),
+ service('twig'),
+ '@SyliusCmsPlugin/shop/media/show/image.html.twig',
+ ])
+ ->tag('sylius_cms.media_provider', ['type' => 'image', 'label' => 'sylius_cms.ui.image_provider']);
+
+ $services->set('sylius_cms.media_provider.video', GenericProvider::class)
+ ->args([
+ service('sylius_cms.media_uploader.video'),
+ service('twig'),
+ '@SyliusCmsPlugin/shop/media/show/video.html.twig',
+ ])
+ ->tag('sylius_cms.media_provider', ['type' => 'video', 'label' => 'sylius_cms.ui.video_provider']);
+
+ $services->set('sylius_cms.media_provider.file', GenericProvider::class)
+ ->args([
+ service('sylius_cms.media_uploader.file'),
+ service('twig'),
+ '@SyliusCmsPlugin/shop/media/show/file.html.twig',
+ ])
+ ->tag('sylius_cms.media_provider', ['type' => 'file', 'label' => 'sylius_cms.ui.file_provider']);
+};
diff --git a/config/services/media_provider.xml b/config/services/media_provider.xml
deleted file mode 100644
index a35483a4e..000000000
--- a/config/services/media_provider.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
- @SyliusCmsPlugin/shop/media/show/image.html.twig
-
-
-
-
-
-
- @SyliusCmsPlugin/shop/media/show/video.html.twig
-
-
-
-
-
-
- @SyliusCmsPlugin/shop/media/show/file.html.twig
-
-
-
-
diff --git a/config/services/renderer.php b/config/services/renderer.php
new file mode 100644
index 000000000..13f07f451
--- /dev/null
+++ b/config/services/renderer.php
@@ -0,0 +1,136 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.content_element_renderer_strategy', ContentElementRendererStrategy::class)
+ ->args([
+ service('sylius_cms.twig.parser.content'),
+ service('sylius.context.locale'),
+ tagged_iterator('sylius_cms.content_element'),
+ ]);
+
+ $services->set('sylius_cms.content_element.textarea', TextareaContentElementRenderer::class)
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/textarea.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\TextareaContentElementType::class]);
+
+ $services->set('sylius_cms.content_element.single_media', SingleMediaContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.twig.runtime.media'),
+ service('sylius_cms.repository.media'),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/single_media.html.twig']);
+
+ $services->set('sylius_cms.content_element.multiple_media', MultipleMediaContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.twig.runtime.media'),
+ service('sylius_cms.repository.media'),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/multiple_media.html.twig']);
+
+ $services->set('sylius_cms.content_element.heading', HeadingContentElementRenderer::class)
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/heading.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\HeadingContentElementType::class]);
+
+ $services->set('sylius_cms.products_provider', ProductsProvider::class)
+ ->args([
+ service('sylius.repository.product'),
+ service('sylius.context.channel'),
+ ]);
+
+ $services->alias(ProductsProviderInterface::class, 'sylius_cms.products_provider');
+
+ $services->set('sylius_cms.content_element.products_carousel', ProductsCarouselContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.products_provider'),
+ service('sylius.context.channel'),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/products_carousel.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\ProductsCarouselContentElementType::class]);
+
+ $services->set('sylius_cms.content_element.products_carousel_by_taxon', ProductsCarouselByTaxonContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.products_provider'),
+ service('sylius.context.channel'),
+ service('sylius.repository.taxon')->nullOnInvalid(),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/products_carousel.html.twig']);
+
+ $services->set('sylius_cms.content_element.products_grid', ProductsGridContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.products_provider'),
+ service('sylius.context.channel'),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/products_grid.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\ProductsGridContentElementType::class]);
+
+ $services->set('sylius_cms.content_element.products_grid_by_taxon', ProductsGridByTaxonContentElementRenderer::class)
+ ->args([
+ service('sylius_cms.products_provider'),
+ service('sylius.context.channel'),
+ service('sylius.repository.taxon')->nullOnInvalid(),
+ ])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/products_grid.html.twig']);
+
+ $services->set('sylius_cms.content_element.taxons_list', TaxonsListContentElementRenderer::class)
+ ->args([service('sylius.repository.taxon')])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/taxons_list.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\TaxonsListContentElementType::class]);
+
+ $services->set('sylius_cms.content_element.pages_collection', PagesCollectionContentElementRenderer::class)
+ ->args([service('sylius_cms.repository.collection')])
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/pages_collection.html.twig']);
+
+ $services->set('sylius_cms.content_element.spacer', SpacerContentElementRenderer::class)
+ ->tag('sylius_cms.content_element', ['template' => '@SyliusCmsPlugin/shop/content_element/elements/spacer.html.twig', 'form_type' => \Sylius\CmsPlugin\Form\Type\ContentElements\SpacerContentElementType::class]);
+
+ $services->set('sylius_cms.collection_renderer_strategy', CollectionRendererStrategy::class)
+ ->args([tagged_iterator('sylius_cms.renderer.collection')]);
+
+ $services->set('sylius_cms.renderer.collection.blocks', CollectionBlocksRenderer::class)
+ ->args([service('sylius_cms.content_element_renderer_strategy')])
+ ->tag('sylius_cms.renderer.collection');
+
+ $services->set('sylius_cms.renderer.collection.media', CollectionMediaRenderer::class)
+ ->args([service('sylius_cms.twig.runtime.media')])
+ ->tag('sylius_cms.renderer.collection');
+
+ $services->set('sylius_cms.renderer.collection.pages', CollectionPagesRenderer::class)
+ ->args([service('sylius_cms.page_link_renderer')])
+ ->tag('sylius_cms.renderer.collection');
+
+ $services->set('sylius_cms.page_link_renderer', PageLinkRenderer::class)
+ ->args([
+ service('router.default'),
+ service('twig'),
+ ]);
+};
diff --git a/config/services/renderer.xml b/config/services/renderer.xml
deleted file mode 100644
index fb878d944..000000000
--- a/config/services/renderer.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/resolver.php b/config/services/resolver.php
new file mode 100644
index 000000000..66c719eee
--- /dev/null
+++ b/config/services/resolver.php
@@ -0,0 +1,90 @@
+services();
+
+ $services->defaults()
+ ->private();
+
+ $services->set('sylius_cms.resolver.resource.page', ResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.page'),
+ service('sylius_cms.factory.page'),
+ 'code',
+ ]);
+
+ $services->set('sylius_cms.resolver.resource.collection', ResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.collection'),
+ service('sylius_cms.factory.collection'),
+ 'code',
+ ]);
+
+ $services->set('sylius_cms.resolver.resource.block', ResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.block'),
+ service('sylius_cms.factory.block'),
+ 'code',
+ ]);
+
+ $services->set('sylius_cms.resolver.resource.media', ResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.factory.media'),
+ 'code',
+ ]);
+
+ $services->set('sylius_cms.resolver.block_resource', BlockResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.block'),
+ service('logger'),
+ service('sylius.context.channel'),
+ ]);
+
+ $services->set('sylius_cms.resolver.collection_resource', CollectionResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.collection'),
+ service('logger'),
+ ]);
+
+ $services->set('sylius_cms.resolver.page_resource', PageResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.page'),
+ service('logger'),
+ ]);
+
+ $services->set('sylius_cms.resolver.media_resource', MediaResourceResolver::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('sylius.context.channel'),
+ service('logger'),
+ ]);
+
+ $services->set('sylius_cms.resolver.media_provider', MediaProviderResolver::class)
+ ->args([service('sylius_cms.registry.media_provider')]);
+
+ $services->set('sylius_cms.resolver.wysiwyg_strategy_resolver', WysiwygStrategyResolver::class)
+ ->args([
+ tagged_iterator('sylius_cms.wysiwyg_strategy', indexAttribute: 'strategy'),
+ '%sylius_cms.wysiwyg_editor%',
+ ]);
+};
diff --git a/config/services/resolver.xml b/config/services/resolver.xml
deleted file mode 100644
index cb039fd11..000000000
--- a/config/services/resolver.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
- code
-
-
-
-
-
- code
-
-
-
-
-
- code
-
-
-
-
-
- code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.wysiwyg_editor%
-
-
-
diff --git a/config/services/twig.php b/config/services/twig.php
new file mode 100644
index 000000000..08b902b8e
--- /dev/null
+++ b/config/services/twig.php
@@ -0,0 +1,29 @@
+services();
+ $parameters = $container->parameters();
+ $parameters->set('sylius_cms.twig.admin_functions', ['sylius_cms_render_block', 'sylius_cms_render_media']);
+
+ $services->defaults()
+ ->private();
+
+ $services->set('sylius_cms.twig.parser.content', ContentParser::class)
+ ->args([
+ service('twig'),
+ '%sylius_cms.twig.admin_functions%',
+ ]);
+};
diff --git a/config/services/twig.xml b/config/services/twig.xml
deleted file mode 100644
index 7e403343d..000000000
--- a/config/services/twig.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
- sylius_cms_render_block
- sylius_cms_render_media
-
-
-
-
-
-
-
-
- %sylius_cms.twig.admin_functions%
-
-
-
diff --git a/config/services/twig/component.php b/config/services/twig/component.php
new file mode 100644
index 000000000..7d5a0422c
--- /dev/null
+++ b/config/services/twig/component.php
@@ -0,0 +1,89 @@
+services();
+
+ $services->defaults()
+ ->private();
+
+ $services->set('sylius_cms.twig.component.template.form', ResourceFormComponent::class)
+ ->args([
+ service('sylius_cms.repository.template'),
+ service('form.factory'),
+ '%sylius_cms.model.template.class%',
+ TemplateType::class,
+ ])
+ ->tag('sylius.live_component.admin', ['key' => 'sylius_cms:admin:template:form']);
+
+ $services->set('sylius_cms.twig.component.collection.form', ResourceFormComponent::class)
+ ->args([
+ service('sylius_cms.repository.collection'),
+ service('form.factory'),
+ '%sylius_cms.model.collection.class%',
+ CollectionType::class,
+ ])
+ ->tag('sylius.live_component.admin', ['key' => 'sylius_cms:admin:collection:form']);
+
+ $services->set('sylius_cms.twig.component.block.form', FormComponent::class)
+ ->args([
+ service('sylius_cms.repository.block'),
+ service('form.factory'),
+ '%sylius_cms.model.block.class%',
+ BlockType::class,
+ service('sylius_cms.repository.template'),
+ service('twig'),
+ service('sylius.provider.locale'),
+ '@SyliusCmsPlugin/admin/block/preview.html.twig',
+ service('sylius_cms.content_element_renderer_strategy'),
+ ])
+ ->call('setLiveResponder', [service('ux.live_component.live_responder')])
+ ->tag('sylius.live_component.admin', ['key' => 'sylius_cms:admin:block:form']);
+
+ $services->set('sylius_cms.twig.component.media.form', ResourceFormComponent::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('form.factory'),
+ '%sylius_cms.model.media.class%',
+ MediaType::class,
+ ])
+ ->tag('sylius.live_component.admin', ['key' => 'sylius_cms:admin:media:form']);
+
+ $services->set('sylius_cms.twig.component.media.preview', MediaPreviewComponent::class)
+ ->tag('sylius.twig_component', ['key' => 'sylius_cms:admin:media:preview']);
+
+ $services->set('sylius_cms.twig.component.admin.page.form', PageFormComponent::class)
+ ->args([
+ service('sylius_cms.repository.page'),
+ service('form.factory'),
+ '%sylius_cms.model.page.class%',
+ PageType::class,
+ service('sylius_cms.repository.template'),
+ service('twig'),
+ service('sylius.provider.locale'),
+ '@SyliusCmsPlugin/admin/page/preview.html.twig',
+ service('sylius.generator.slug'),
+ ])
+ ->call('setLiveResponder', [service('ux.live_component.live_responder')])
+ ->tag('sylius.live_component.admin', ['key' => 'sylius_cms:admin:page:form']);
+};
diff --git a/config/services/twig/component.xml b/config/services/twig/component.xml
deleted file mode 100644
index 3a9bda8e6..000000000
--- a/config/services/twig/component.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
-
-
-
-
- %sylius_cms.model.template.class%
- Sylius\CmsPlugin\Form\Type\TemplateType
-
-
-
-
-
-
-
- %sylius_cms.model.collection.class%
- Sylius\CmsPlugin\Form\Type\CollectionType
-
-
-
-
-
-
-
- %sylius_cms.model.block.class%
- Sylius\CmsPlugin\Form\Type\BlockType
-
-
-
- @SyliusCmsPlugin/admin/block/preview.html.twig
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.model.media.class%
- Sylius\CmsPlugin\Form\Type\MediaType
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.model.page.class%
- Sylius\CmsPlugin\Form\Type\PageType
-
-
-
- @SyliusCmsPlugin/admin/page/preview.html.twig
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/twig/extension.php b/config/services/twig/extension.php
new file mode 100644
index 000000000..06fc0895e
--- /dev/null
+++ b/config/services/twig/extension.php
@@ -0,0 +1,50 @@
+services();
+
+ $services->defaults()
+ ->private()
+ ->tag('twig.extension');
+
+ $services->set('sylius_cms.twig.extension.block', RenderBlockExtension::class)
+ ->args([service('sylius_cms.twig.runtime.block')]);
+
+ $services->set('sylius_cms.twig.extension.collection', RenderCollectionExtension::class)
+ ->args([service('sylius_cms.twig.runtime.collection')]);
+
+ $services->set('sylius_cms.twig.extension.media', RenderMediaExtension::class)
+ ->args([service('sylius_cms.twig.runtime.media')]);
+
+ $services->set('sylius_cms.twig.extension.render_content', RenderContentExtension::class);
+
+ $services->set('sylius_cms.twig.extension.render_content_elements', RenderContentElementsExtension::class);
+
+ $services->set('sylius_cms.twig.extension.render_link', RenderPageLinkExtension::class);
+
+ $services->set('sylius_cms.twig.extension.template_exists', TemplateExistsExtension::class)
+ ->args([service('sylius_cms.twig.runtime.template_exists')]);
+
+ $services->set('sylius_cms.twig.extension.resolve_media_video_path', ResolveMediaVideoPathExtension::class)
+ ->args([service('sylius_cms.twig.runtime.resolve_media_video_path')]);
+};
diff --git a/config/services/twig/extension.xml b/config/services/twig/extension.xml
deleted file mode 100644
index ad3cec3a9..000000000
--- a/config/services/twig/extension.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/services/twig/runtime.php b/config/services/twig/runtime.php
new file mode 100644
index 000000000..ad8763332
--- /dev/null
+++ b/config/services/twig/runtime.php
@@ -0,0 +1,79 @@
+services();
+ $parameters = $container->parameters();
+ $parameters->set('sylius_cms.twig.link_template', '@SyliusCmsPlugin/shop/page/link.html.twig');
+
+ $services->defaults()
+ ->private()
+ ->tag('twig.runtime');
+
+ $services->set('sylius_cms.twig.runtime.block', RenderBlockRuntime::class)
+ ->args([
+ service('sylius_cms.resolver.block_resource'),
+ service('twig'),
+ service('sylius_cms.content_element_renderer_strategy'),
+ ]);
+
+ $services->set('sylius_cms.twig.runtime.collection', RenderCollectionRuntime::class)
+ ->args([
+ service('twig'),
+ service('sylius_cms.resolver.collection_resource'),
+ service('sylius_cms.collection_renderer_strategy'),
+ ]);
+
+ $services->set('sylius_cms.twig.runtime.media', RenderMediaRuntime::class)
+ ->args([
+ service('sylius_cms.resolver.media_provider'),
+ service('sylius_cms.resolver.media_resource'),
+ ]);
+
+ $services->set('sylius_cms.twig.runtime.render_content', RenderContentRuntime::class)
+ ->args([service('sylius_cms.twig.parser.content')]);
+
+ $services->set('sylius_cms.twig.runtime.render_content_elements', RenderContentElementsRuntime::class)
+ ->args([service('sylius_cms.content_element_renderer_strategy')]);
+
+ $services->set('sylius_cms.twig.runtime.render_link', RenderPageLinkRuntime::class)
+ ->args([
+ service('sylius_cms.repository.page'),
+ service('router.default'),
+ '%sylius_cms.twig.link_template%',
+ ]);
+
+ $services->set('sylius_cms.twig.runtime.template_exists', TemplateExistsRuntime::class)
+ ->lazy(TemplateExistsRuntimeInterface::class)
+ ->args([service('twig')]);
+
+ $services->set('sylius_cms.twig.runtime.resolve_media_video_path', ResolveMediaVideoPathRuntime::class)
+ ->args([
+ service('sylius_cms_media.video.storage'),
+ '%sylius_cms.videos_dir%',
+ '%sylius_core.public_dir%',
+ ]);
+
+ $services->alias(ResolveMediaVideoPathRuntimeInterface::class, 'sylius_cms.twig.runtime.resolve_media_video_path');
+};
diff --git a/config/services/twig/runtime.xml b/config/services/twig/runtime.xml
deleted file mode 100644
index 5a4062b1c..000000000
--- a/config/services/twig/runtime.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
- @SyliusCmsPlugin/shop/page/link.html.twig
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %sylius_cms.twig.link_template%
-
-
-
-
-
-
-
-
- %sylius_cms.videos_dir%
- %sylius_core.public_dir%
-
-
-
-
diff --git a/src/DependencyInjection/SyliusCmsExtension.php b/src/DependencyInjection/SyliusCmsExtension.php
index a4dad948e..37f35fe0a 100755
--- a/src/DependencyInjection/SyliusCmsExtension.php
+++ b/src/DependencyInjection/SyliusCmsExtension.php
@@ -16,8 +16,10 @@
use Sylius\Bundle\CoreBundle\DependencyInjection\PrependDoctrineMigrationsTrait;
use Sylius\Bundle\ResourceBundle\DependencyInjection\Extension\AbstractResourceExtension;
use Symfony\Component\Config\Definition\ConfigurationInterface;
+use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
+use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
final class SyliusCmsExtension extends AbstractResourceExtension implements PrependExtensionInterface
{
@@ -32,6 +34,10 @@ public function load(array $configs, ContainerBuilder $container): void
$container->setParameter('sylius_cms.templates.blocks', $config['templates']['blocks']);
$container->setParameter('sylius_cms.wysiwyg_editor', $config['wysiwyg_editor']);
+
+ $loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
+
+ $loader->load('services.php');
}
public function prepend(ContainerBuilder $container): void
diff --git a/tests/Behat/Resources/services.php b/tests/Behat/Resources/services.php
new file mode 100644
index 000000000..b48072623
--- /dev/null
+++ b/tests/Behat/Resources/services.php
@@ -0,0 +1,29 @@
+services();
+ $container->import('services/api.php');
+ $container->import('services/contexts.php');
+ $container->import('services/elements.php');
+ $container->import('services/pages.php');
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.random_string_generator', RandomStringGenerator::class);
+};
diff --git a/tests/Behat/Resources/services.xml b/tests/Behat/Resources/services.xml
deleted file mode 100644
index cf20700d3..000000000
--- a/tests/Behat/Resources/services.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/api.php b/tests/Behat/Resources/services/api.php
new file mode 100644
index 000000000..4eaa09e68
--- /dev/null
+++ b/tests/Behat/Resources/services/api.php
@@ -0,0 +1,39 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.api_platform_client.shop.block', ApiPlatformClient::class)
+ ->parent('sylius.behat.api_platform_client')
+ ->args(['shop/cms-plugin']);
+
+ $services->set('sylius_cms.behat.api_platform_client.shop.media', ApiPlatformClient::class)
+ ->parent('sylius.behat.api_platform_client')
+ ->args(['shop/cms-plugin']);
+
+ $services->set('sylius_cms.behat.api_platform_client.shop.page', ApiPlatformClient::class)
+ ->parent('sylius.behat.api_platform_client')
+ ->args(['shop/cms-plugin']);
+
+ $services->set('sylius_cms.behat.api_platform_client.shop.collection', ApiPlatformClient::class)
+ ->parent('sylius.behat.api_platform_client')
+ ->args(['shop/cms-plugin']);
+};
diff --git a/tests/Behat/Resources/services/api.xml b/tests/Behat/Resources/services/api.xml
deleted file mode 100644
index f604eb6dd..000000000
--- a/tests/Behat/Resources/services/api.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- shop/cms-plugin
-
-
-
- shop/cms-plugin
-
-
-
- shop/cms-plugin
-
-
-
- shop/cms-plugin
-
-
-
diff --git a/tests/Behat/Resources/services/contexts.php b/tests/Behat/Resources/services/contexts.php
new file mode 100644
index 000000000..50f932346
--- /dev/null
+++ b/tests/Behat/Resources/services/contexts.php
@@ -0,0 +1,21 @@
+import('contexts/setup.php');
+ $container->import('contexts/ui.php');
+ $container->import('contexts/api.php');
+ $container->import('contexts/transform.php');
+};
diff --git a/tests/Behat/Resources/services/contexts.xml b/tests/Behat/Resources/services/contexts.xml
deleted file mode 100644
index b1c0d3182..000000000
--- a/tests/Behat/Resources/services/contexts.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/contexts/api.php b/tests/Behat/Resources/services/contexts/api.php
new file mode 100644
index 000000000..a2f0e7798
--- /dev/null
+++ b/tests/Behat/Resources/services/contexts/api.php
@@ -0,0 +1,51 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.context.api.block', BlockContext::class)
+ ->args([
+ service('sylius_cms.behat.api_platform_client.shop.block'),
+ service(ResponseCheckerInterface::class),
+ ]);
+
+ $services->set('sylius_cms.behat.context.api.media', MediaContext::class)
+ ->args([
+ service('sylius_cms.behat.api_platform_client.shop.media'),
+ service(ResponseCheckerInterface::class),
+ ]);
+
+ $services->set('sylius_cms.behat.context.api.page', PageContext::class)
+ ->args([
+ service('sylius_cms.behat.api_platform_client.shop.page'),
+ service(ResponseCheckerInterface::class),
+ ]);
+
+ $services->set('sylius_cms.behat.context.api.collection', CollectionContext::class)
+ ->args([
+ service('sylius_cms.behat.api_platform_client.shop.collection'),
+ service(ResponseCheckerInterface::class),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/contexts/api.xml b/tests/Behat/Resources/services/contexts/api.xml
deleted file mode 100644
index d367d68bc..000000000
--- a/tests/Behat/Resources/services/contexts/api.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/contexts/setup.php b/tests/Behat/Resources/services/contexts/setup.php
new file mode 100644
index 000000000..975d5fddf
--- /dev/null
+++ b/tests/Behat/Resources/services/contexts/setup.php
@@ -0,0 +1,71 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.context.setup.block', BlockContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.factory.block'),
+ service('sylius_cms.repository.block'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.setup.page', PageContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.factory.page'),
+ service('sylius_cms.repository.page'),
+ service('doctrine.orm.entity_manager'),
+ service('sylius.repository.product'),
+ service('sylius_cms.repository.collection'),
+ service('sylius_cms.media_provider.image'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.setup.collection', CollectionContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.factory.collection'),
+ service('sylius_cms.repository.collection'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.setup.media', MediaContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.factory.media'),
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.resolver.media_provider'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.setup.content_template', ContentTemplateContext::class)
+ ->args([
+ service('sylius_cms.factory.template'),
+ service('sylius.behat.shared_storage'),
+ service('sylius_cms.repository.template'),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/contexts/setup.xml b/tests/Behat/Resources/services/contexts/setup.xml
deleted file mode 100644
index b965e08e9..000000000
--- a/tests/Behat/Resources/services/contexts/setup.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/contexts/transform.php b/tests/Behat/Resources/services/contexts/transform.php
new file mode 100644
index 000000000..ca7ae3668
--- /dev/null
+++ b/tests/Behat/Resources/services/contexts/transform.php
@@ -0,0 +1,50 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.context.transform.block', BlockContext::class)
+ ->args([
+ service('sylius_cms.repository.block'),
+ '%locale%',
+ ]);
+
+ $services->set('sylius_cms.behat.context.transform.media', MediaContext::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('sylius.behat.shared_storage'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.transform.page', PageContext::class)
+ ->args([
+ service('sylius_cms.repository.page'),
+ '%locale%',
+ ]);
+
+ $services->set('sylius_cms.behat.context.transform.collection', CollectionContext::class)
+ ->args([
+ service('sylius_cms.repository.collection'),
+ '%locale%',
+ ]);
+};
diff --git a/tests/Behat/Resources/services/contexts/transform.xml b/tests/Behat/Resources/services/contexts/transform.xml
deleted file mode 100644
index 50cb5c9b4..000000000
--- a/tests/Behat/Resources/services/contexts/transform.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
- %locale%
-
-
-
-
-
-
-
-
-
- %locale%
-
-
-
-
- %locale%
-
-
-
diff --git a/tests/Behat/Resources/services/contexts/ui.php b/tests/Behat/Resources/services/contexts/ui.php
new file mode 100644
index 000000000..87479b336
--- /dev/null
+++ b/tests/Behat/Resources/services/contexts/ui.php
@@ -0,0 +1,112 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.context.ui.admin.block', BlockContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius.behat.current_page_resolver'),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius_cms.behat.page.admin.block.index'),
+ service('sylius_cms.behat.page.admin.block.create'),
+ service('sylius_cms.behat.page.admin.block.update'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.repository.block'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.page', PageContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius.behat.current_page_resolver'),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius_cms.behat.page.admin.page.index'),
+ service('sylius_cms.behat.page.admin.page.create'),
+ service('sylius_cms.behat.page.admin.page.update'),
+ service('sylius_cms.behat.random_string_generator'),
+ service('sylius_cms.repository.page'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.content_collection', ContentCollectionContext::class)
+ ->args([service('sylius_cms.behat.element.admin.content_elements_collection')]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.collection', CollectionContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius.behat.current_page_resolver'),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius_cms.behat.page.admin.collection.index'),
+ service('sylius_cms.behat.page.admin.collection.create'),
+ service('sylius_cms.behat.page.admin.collection.update'),
+ service('sylius_cms.behat.random_string_generator'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.shop.homepage_blocks', HomepageBlocksContext::class)
+ ->args([service('sylius_cms.behat.page.shop.home')]);
+
+ $services->set('sylius_cms.behat.context.ui.shop.page', \Tests\Sylius\CmsPlugin\Behat\Context\Ui\Shop\PageContext::class)
+ ->args([
+ service('sylius_cms.behat.page.shop.page.show'),
+ service('sylius_cms.behat.page.shop.page.index'),
+ service('sylius.behat.shared_storage'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.media', MediaContext::class)
+ ->args([
+ service('sylius.behat.current_page_resolver'),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius_cms.behat.page.admin.media.index'),
+ service('sylius_cms.behat.page.admin.media.create'),
+ service('sylius_cms.behat.page.admin.media.update'),
+ service('sylius_cms.behat.random_string_generator'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.shop.media', \Tests\Sylius\CmsPlugin\Behat\Context\Ui\Shop\MediaContext::class)
+ ->args([
+ service('sylius_cms.repository.media'),
+ service('sylius_cms.behat.page.shop.home'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.content_template', ContentTemplateContext::class)
+ ->args([
+ service('sylius.behat.shared_storage'),
+ service('sylius.behat.current_page_resolver'),
+ service('sylius.behat.notification_checker.admin'),
+ service('sylius_cms.behat.page.admin.template.index'),
+ service('sylius_cms.behat.page.admin.template.create'),
+ service('sylius_cms.behat.page.admin.template.update'),
+ service('sylius_cms.repository.template'),
+ service('sylius_cms.behat.random_string_generator'),
+ ]);
+
+ $services->set('sylius_cms.behat.context.ui.admin.trix_wysiwyg', TrixWysiwygContext::class);
+
+ $services->set('sylius_cms.behat.context.ui.admin.quill_wysiwyg', QuillWysiwygContext::class)
+ ->args([service('sylius_cms.behat.element.admin.quill_editor')]);
+};
diff --git a/tests/Behat/Resources/services/contexts/ui.xml b/tests/Behat/Resources/services/contexts/ui.xml
deleted file mode 100644
index 28f05240e..000000000
--- a/tests/Behat/Resources/services/contexts/ui.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/elements.php b/tests/Behat/Resources/services/elements.php
new file mode 100644
index 000000000..b42992bac
--- /dev/null
+++ b/tests/Behat/Resources/services/elements.php
@@ -0,0 +1,39 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.element.admin.content_elements_collection', ContentElementsCollectionElement::class)
+ ->args([
+ service('behat.mink.default_session'),
+ service('behat.mink.parameters'),
+ service(AutocompleteHelperInterface::class),
+ '%locale%',
+ ]);
+
+ $services->set('sylius_cms.behat.element.admin.quill_editor', QuillEditorElement::class)
+ ->args([
+ service('behat.mink.default_session'),
+ service('behat.mink.parameters'),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/elements.xml b/tests/Behat/Resources/services/elements.xml
deleted file mode 100644
index ebd6ec3eb..000000000
--- a/tests/Behat/Resources/services/elements.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- %locale%
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/pages.php b/tests/Behat/Resources/services/pages.php
new file mode 100644
index 000000000..aadfbe6b3
--- /dev/null
+++ b/tests/Behat/Resources/services/pages.php
@@ -0,0 +1,31 @@
+services();
+ $container->import('pages/admin.php');
+ $container->import('pages/shop.php');
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page', Page::class)
+ ->args([
+ service('behat.mink.default_session'),
+ service('behat.mink.parameters'),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/pages.xml b/tests/Behat/Resources/services/pages.xml
deleted file mode 100644
index 21e5df9ab..000000000
--- a/tests/Behat/Resources/services/pages.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin.php b/tests/Behat/Resources/services/pages/admin.php
new file mode 100644
index 000000000..b7c1a3344
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin.php
@@ -0,0 +1,22 @@
+import('admin/block.php');
+ $container->import('admin/page.php');
+ $container->import('admin/collection.php');
+ $container->import('admin/media.php');
+ $container->import('admin/template.php');
+};
diff --git a/tests/Behat/Resources/services/pages/admin.xml b/tests/Behat/Resources/services/pages/admin.xml
deleted file mode 100644
index 098584262..000000000
--- a/tests/Behat/Resources/services/pages/admin.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin/block.php b/tests/Behat/Resources/services/pages/admin/block.php
new file mode 100644
index 000000000..b2df7150c
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin/block.php
@@ -0,0 +1,47 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.admin.block.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_cms_admin_block_index']);
+
+ $services->set('sylius_cms.behat.page.admin.block.create', CreatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.create')
+ ->args([
+ 'sylius_cms_admin_block_create',
+ service(AutocompleteHelperInterface::class),
+ ]);
+
+ $services->set('sylius_cms.behat.page.admin.block.update', UpdatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.update')
+ ->args([
+ 'sylius_cms_admin_block_update',
+ service(AutocompleteHelperInterface::class),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/pages/admin/block.xml b/tests/Behat/Resources/services/pages/admin/block.xml
deleted file mode 100644
index 1a10358cf..000000000
--- a/tests/Behat/Resources/services/pages/admin/block.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
- sylius_cms_admin_block_index
-
-
-
- sylius_cms_admin_block_create
-
-
-
-
- sylius_cms_admin_block_update
-
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin/collection.php b/tests/Behat/Resources/services/pages/admin/collection.php
new file mode 100644
index 000000000..b1a9361dd
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin/collection.php
@@ -0,0 +1,40 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.admin.collection.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_cms_admin_collection_index']);
+
+ $services->set('sylius_cms.behat.page.admin.collection.create', CreatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.create')
+ ->args(['sylius_cms_admin_collection_create']);
+
+ $services->set('sylius_cms.behat.page.admin.collection.update', UpdatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.update')
+ ->args(['sylius_cms_admin_collection_update']);
+};
diff --git a/tests/Behat/Resources/services/pages/admin/collection.xml b/tests/Behat/Resources/services/pages/admin/collection.xml
deleted file mode 100644
index 22fb0b881..000000000
--- a/tests/Behat/Resources/services/pages/admin/collection.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- sylius_cms_admin_collection_index
-
-
-
- sylius_cms_admin_collection_create
-
-
-
- sylius_cms_admin_collection_update
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin/media.php b/tests/Behat/Resources/services/pages/admin/media.php
new file mode 100644
index 000000000..707896e27
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin/media.php
@@ -0,0 +1,40 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.admin.media.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_cms_admin_media_index']);
+
+ $services->set('sylius_cms.behat.page.admin.media.create', CreatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.create')
+ ->args(['sylius_cms_admin_media_create']);
+
+ $services->set('sylius_cms.behat.page.admin.media.update', UpdatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.update')
+ ->args(['sylius_cms_admin_media_update']);
+};
diff --git a/tests/Behat/Resources/services/pages/admin/media.xml b/tests/Behat/Resources/services/pages/admin/media.xml
deleted file mode 100644
index c9f557d2f..000000000
--- a/tests/Behat/Resources/services/pages/admin/media.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- sylius_cms_admin_media_index
-
-
-
- sylius_cms_admin_media_create
-
-
-
- sylius_cms_admin_media_update
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin/page.php b/tests/Behat/Resources/services/pages/admin/page.php
new file mode 100644
index 000000000..0107eb042
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin/page.php
@@ -0,0 +1,47 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.admin.page.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_cms_admin_page_index']);
+
+ $services->set('sylius_cms.behat.page.admin.page.create', CreatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.create')
+ ->args([
+ 'sylius_cms_admin_page_create',
+ service(AutocompleteHelperInterface::class),
+ ]);
+
+ $services->set('sylius_cms.behat.page.admin.page.update', UpdatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.update')
+ ->args([
+ 'sylius_cms_admin_page_update',
+ service(AutocompleteHelperInterface::class),
+ ]);
+};
diff --git a/tests/Behat/Resources/services/pages/admin/page.xml b/tests/Behat/Resources/services/pages/admin/page.xml
deleted file mode 100644
index 8f8736046..000000000
--- a/tests/Behat/Resources/services/pages/admin/page.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
- sylius_cms_admin_page_index
-
-
-
- sylius_cms_admin_page_create
-
-
-
-
- sylius_cms_admin_page_update
-
-
-
-
diff --git a/tests/Behat/Resources/services/pages/admin/template.php b/tests/Behat/Resources/services/pages/admin/template.php
new file mode 100644
index 000000000..a90372c5e
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/admin/template.php
@@ -0,0 +1,40 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.admin.template.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.index')
+ ->args(['sylius_cms_admin_template_index']);
+
+ $services->set('sylius_cms.behat.page.admin.template.create', CreatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.create')
+ ->args(['sylius_cms_admin_template_create']);
+
+ $services->set('sylius_cms.behat.page.admin.template.update', UpdatePage::class)
+ ->private()
+ ->parent('sylius.behat.page.admin.crud.update')
+ ->args(['sylius_cms_admin_template_update']);
+};
diff --git a/tests/Behat/Resources/services/pages/admin/template.xml b/tests/Behat/Resources/services/pages/admin/template.xml
deleted file mode 100644
index e527e920f..000000000
--- a/tests/Behat/Resources/services/pages/admin/template.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- sylius_cms_admin_template_index
-
-
-
- sylius_cms_admin_template_create
-
-
-
- sylius_cms_admin_template_update
-
-
-
diff --git a/tests/Behat/Resources/services/pages/shop.php b/tests/Behat/Resources/services/pages/shop.php
new file mode 100644
index 000000000..f28e6cc5b
--- /dev/null
+++ b/tests/Behat/Resources/services/pages/shop.php
@@ -0,0 +1,38 @@
+services();
+
+ $services->defaults()
+ ->public();
+
+ $services->set('sylius_cms.behat.page.shop.home', HomePage::class)
+ ->private()
+ ->parent('sylius.behat.page.shop.home')
+ ->args(['sylius_shop_homepage']);
+
+ $services->set('sylius_cms.behat.page.shop.page.show', ShowPage::class)
+ ->private()
+ ->parent('sylius.behat.symfony_page');
+
+ $services->set('sylius_cms.behat.page.shop.page.index', IndexPage::class)
+ ->private()
+ ->parent('sylius.behat.symfony_page');
+};
diff --git a/tests/Behat/Resources/services/pages/shop.xml b/tests/Behat/Resources/services/pages/shop.xml
deleted file mode 100644
index 2f8bb125a..000000000
--- a/tests/Behat/Resources/services/pages/shop.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
- sylius_shop_homepage
-
-
-
-
-
-
-
-
diff --git a/tests/TestApplication/config/services_test.php b/tests/TestApplication/config/services_test.php
index 48c9bcca6..b39833680 100644
--- a/tests/TestApplication/config/services_test.php
+++ b/tests/TestApplication/config/services_test.php
@@ -18,6 +18,6 @@
if (str_starts_with($env, 'test')) {
$container->import('../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml');
- $container->import('@SyliusCmsPlugin/tests/Behat/Resources/services.xml');
+ $container->import('@SyliusCmsPlugin/tests/Behat/Resources/services.php');
}
};