diff --git a/spec/Renderer/ContentElement/PagesCollectionContentElementRendererSpec.php b/spec/Renderer/ContentElement/PagesCollectionContentElementRendererSpec.php index 97a5966c..a44bea05 100644 --- a/spec/Renderer/ContentElement/PagesCollectionContentElementRendererSpec.php +++ b/spec/Renderer/ContentElement/PagesCollectionContentElementRendererSpec.php @@ -10,7 +10,6 @@ use Sylius\CmsPlugin\Entity\ContentConfigurationInterface; use Sylius\CmsPlugin\Form\Type\ContentElements\PagesCollectionContentElementType; use Sylius\CmsPlugin\Renderer\ContentElement\AbstractContentElement; -use Sylius\CmsPlugin\Renderer\ContentElement\ContentElementRendererInterface; use Sylius\CmsPlugin\Renderer\ContentElement\PagesCollectionContentElementRenderer; use Sylius\CmsPlugin\Repository\CollectionRepositoryInterface; use Twig\Environment; diff --git a/spec/Renderer/ContentElementRendererStrategySpec.php b/spec/Renderer/ContentElementRendererStrategySpec.php index 7cd6b2c7..96147132 100644 --- a/spec/Renderer/ContentElementRendererStrategySpec.php +++ b/spec/Renderer/ContentElementRendererStrategySpec.php @@ -19,7 +19,7 @@ final class ContentElementRendererStrategySpec extends ObjectBehavior public function let( ContentParserInterface $contentParser, LocaleContextInterface $localeContext, - ContentElementRendererInterface $renderer + ContentElementRendererInterface $renderer, ): void { $this->beConstructedWith($contentParser, $localeContext, [$renderer]); } @@ -34,7 +34,7 @@ public function it_renders_a_page_content_element_correctly( ContentConfigurationInterface $contentElement, LocaleContextInterface $localeContext, ContentElementRendererInterface $renderer, - ContentParserInterface $contentParser + ContentParserInterface $contentParser, ): void { $page->getContentElements()->willReturn(new ArrayCollection([$contentElement->getWrappedObject()])); $localeContext->getLocaleCode()->willReturn('en_US'); @@ -52,7 +52,7 @@ public function it_skips_content_element_with_non_matching_locale( BlockInterface $block, ContentConfigurationInterface $contentElement, LocaleContextInterface $localeContext, - ContentParserInterface $contentParser + ContentParserInterface $contentParser, ): void { $block->getContentElements()->willReturn(new ArrayCollection([$contentElement])); $localeContext->getLocaleCode()->willReturn('en_US'); @@ -69,7 +69,7 @@ public function it_renders_only_supported_content_elements( ContentConfigurationInterface $unsupportedElement, LocaleContextInterface $localeContext, ContentElementRendererInterface $renderer, - ContentParserInterface $contentParser + ContentParserInterface $contentParser, ): void { $block->getContentElements()->willReturn(new ArrayCollection([$supportedElement->getWrappedObject(), $unsupportedElement->getWrappedObject()])); $localeContext->getLocaleCode()->willReturn('en_US'); diff --git a/spec/Twig/Runtime/TranslationFormReduceRuntimeSpec.php b/spec/Twig/Runtime/TranslationFormReduceRuntimeSpec.php index 0e8e718f..80822f69 100644 --- a/spec/Twig/Runtime/TranslationFormReduceRuntimeSpec.php +++ b/spec/Twig/Runtime/TranslationFormReduceRuntimeSpec.php @@ -19,10 +19,10 @@ public function it_reduces_form_to_specified_fields( FormView $form, FormView $localeForm, FormView $slugForm, - FormView $titleForm + FormView $titleForm, ): void { $form->children = [ - 'en_US' => $localeForm + 'en_US' => $localeForm, ]; $localeForm->children = [ @@ -56,7 +56,7 @@ public function it_handles_multiple_locales( FormView $enLocale, FormView $deLocale, FormView $slugForm, - FormView $titleForm + FormView $titleForm, ): void { $form->children = [ 'en_US' => $enLocale, @@ -85,7 +85,7 @@ public function it_throws_exception_if_field_is_not_present_in_multiple_locales( FormView $form, FormView $enLocale, FormView $deLocale, - FormView $slugForm + FormView $slugForm, ): void { $form->children = [ 'en_US' => $enLocale, @@ -108,7 +108,7 @@ public function it_handles_empty_field_array( FormView $form, FormView $localeForm, FormView $slugForm, - FormView $titleForm + FormView $titleForm, ): void { $form->children = [ 'en_US' => $localeForm, diff --git a/src/Fixture/BlockFixture.php b/src/Fixture/BlockFixture.php index 6208f020..f2063335 100755 --- a/src/Fixture/BlockFixture.php +++ b/src/Fixture/BlockFixture.php @@ -41,7 +41,9 @@ protected function configureOptionsNode(ArrayNodeDefinition $optionsNode): void ->arrayNode('taxons')->scalarPrototype()->end()->end() ->arrayNode('products_in_taxons')->scalarPrototype()->end()->end() ->arrayNode('content_elements') - ->useAttributeAsKey('key') + ->useAttributeAsKey('locale') + ->arrayPrototype() + ->useAttributeAsKey('key') ->arrayPrototype() ->children() ->scalarNode('type')->end() @@ -54,7 +56,6 @@ protected function configureOptionsNode(ArrayNodeDefinition $optionsNode): void ->scalarNode('products_carousel_by_taxon')->end() ->scalarNode('products_grid_by_taxon')->end() ->scalarNode('pages_collection')->end() - ->scalarNode('pages_collection')->end() ->scalarNode('spacer')->end() ->arrayNode('multiple_media')->scalarPrototype()->end()->end() ->arrayNode('products_grid') diff --git a/src/Fixture/Factory/BlockFixtureFactory.php b/src/Fixture/Factory/BlockFixtureFactory.php index e3118601..3faee5e6 100755 --- a/src/Fixture/Factory/BlockFixtureFactory.php +++ b/src/Fixture/Factory/BlockFixtureFactory.php @@ -61,16 +61,19 @@ private function createBlock(string $code, array $blockData): void $this->taxonsAssigner->assign($block, $blockData['taxons']); $this->productsInTaxonsAssigner->assign($block, $blockData['products_in_taxons']); - foreach ($blockData['content_elements'] as $data) { - $data['data'] = array_filter($data['data'], static function ($value) { - return !empty($value); - }); + foreach ($blockData['content_elements'] as $locale => $data) { + foreach ($data as $contentElementData) { + $contentElementData['data'] = array_filter($contentElementData['data'], static function ($value) { + return !empty($value); + }); - $contentConfiguration = new ContentConfiguration(); - $contentConfiguration->setType($data['type']); - $contentConfiguration->setConfiguration($data['data']); - $contentConfiguration->setBlock($block); - $block->addContentElement($contentConfiguration); + $contentConfiguration = new ContentConfiguration(); + $contentConfiguration->setType($contentElementData['type']); + $contentConfiguration->setConfiguration($contentElementData['data']); + $contentConfiguration->setLocale($locale); + $contentConfiguration->setBlock($block); + $block->addContentElement($contentConfiguration); + } } $this->blockRepository->add($block); diff --git a/src/Fixture/Factory/PageFixtureFactory.php b/src/Fixture/Factory/PageFixtureFactory.php index ac96822b..946a4b63 100755 --- a/src/Fixture/Factory/PageFixtureFactory.php +++ b/src/Fixture/Factory/PageFixtureFactory.php @@ -78,16 +78,19 @@ private function createPage( $page->addTranslation($pageTranslation); } - foreach ($pageData['content_elements'] as $data) { - $data['data'] = array_filter($data['data'], static function ($value) { - return !empty($value); - }); - - $contentConfiguration = new ContentConfiguration(); - $contentConfiguration->setType($data['type']); - $contentConfiguration->setConfiguration($data['data']); - $contentConfiguration->setPage($page); - $page->addContentElement($contentConfiguration); + foreach ($pageData['content_elements'] as $locale => $data) { + foreach ($data as $contentElementData) { + $contentElementData['data'] = array_filter($contentElementData['data'], static function ($value) { + return !empty($value); + }); + + $contentConfiguration = new ContentConfiguration(); + $contentConfiguration->setType($contentElementData['type']); + $contentConfiguration->setConfiguration($contentElementData['data']); + $contentConfiguration->setLocale($locale); + $contentConfiguration->setPage($page); + $page->addContentElement($contentConfiguration); + } } $this->pageRepository->add($page); diff --git a/src/Fixture/PageFixture.php b/src/Fixture/PageFixture.php index c015ec89..9d331b02 100755 --- a/src/Fixture/PageFixture.php +++ b/src/Fixture/PageFixture.php @@ -50,7 +50,9 @@ protected function configureOptionsNode(ArrayNodeDefinition $optionsNode): void ->end() ->end() ->arrayNode('content_elements') - ->useAttributeAsKey('key') + ->useAttributeAsKey('locale') + ->arrayPrototype() + ->useAttributeAsKey('key') ->arrayPrototype() ->children() ->scalarNode('type')->end() diff --git a/src/Form/Type/BlockType.php b/src/Form/Type/BlockType.php index 955ffad7..a3a436c5 100755 --- a/src/Form/Type/BlockType.php +++ b/src/Form/Type/BlockType.php @@ -101,7 +101,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'sylius.ui.locale', 'attr' => [ 'class' => 'locale-selector', - ] + ], ]) ; diff --git a/src/Form/Type/PageType.php b/src/Form/Type/PageType.php index c168697f..6b02ddb7 100755 --- a/src/Form/Type/PageType.php +++ b/src/Form/Type/PageType.php @@ -95,7 +95,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'sylius.ui.locale', 'attr' => [ 'class' => 'locale-selector', - ] + ], ]) ; diff --git a/tests/Application/config/packages/sylius_cms_plugin.yaml b/tests/Application/config/packages/sylius_cms_plugin.yaml index 0e94ebca..ccd13a04 100644 --- a/tests/Application/config/packages/sylius_cms_plugin.yaml +++ b/tests/Application/config/packages/sylius_cms_plugin.yaml @@ -41,19 +41,20 @@ sylius_fixtures: locales: - "en_US" content_elements: - heading: - type: "heading" - data: - heading_type: "h1" - heading: "Textarea" - textarea: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ en_US: + heading: + type: "heading" + data: + heading_type: "h1" + heading: "Textarea" + textarea: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

homepage_products_carousel: name: "Homepage products carousel" channels: @@ -61,20 +62,21 @@ sylius_fixtures: locales: - "en_US" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Products carousel" - products_carousel: - type: "products_carousel" - data: - products_carousel: - products: - - "Everyday_white_basic_T_Shirt" - - "Loose_white_designer_T_Shirt" - - "Ribbed_copper_slim_fit_Tee" - - "Sport_basic_white_T_Shirt" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Products carousel" + products_carousel: + type: "products_carousel" + data: + products_carousel: + products: + - "Everyday_white_basic_T_Shirt" + - "Loose_white_designer_T_Shirt" + - "Ribbed_copper_slim_fit_Tee" + - "Sport_basic_white_T_Shirt" homepage_products_carousel_by_taxon: name: "Homepage products carousel by Taxon" channels: @@ -82,67 +84,71 @@ sylius_fixtures: locales: - "en_US" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Products carousel by Taxon" - products_carousel_by_taxon: - type: "products_carousel_by_taxon" - data: - products_carousel_by_taxon: "t_shirts" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Products carousel by Taxon" + products_carousel_by_taxon: + type: "products_carousel_by_taxon" + data: + products_carousel_by_taxon: "t_shirts" homepage_products_grid: name: "Homepage products grid" channels: - "FASHION_WEB" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Products grid" - products_grid: - type: "products_grid" - data: - products_grid: - products: - - "Raglan_grey_&_black_Tee" - - "Loose_white_designer_T_Shirt" - - "Sport_basic_white_T_Shirt" - - "Ribbed_copper_slim_fit_Tee" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Products grid" + products_grid: + type: "products_grid" + data: + products_grid: + products: + - "Raglan_grey_&_black_Tee" + - "Loose_white_designer_T_Shirt" + - "Sport_basic_white_T_Shirt" + - "Ribbed_copper_slim_fit_Tee" homepage_products_grid_by_taxon: name: "Homepage products grid by Taxon" channels: - "FASHION_WEB" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Products grid by Taxon" - products_grid_by_taxon: - type: "products_grid_by_taxon" - data: - products_grid_by_taxon: "caps" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Products grid by Taxon" + products_grid_by_taxon: + type: "products_grid_by_taxon" + data: + products_grid_by_taxon: "caps" homepage_taxons_list: name: "Homepage taxons list" channels: - "FASHION_WEB" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Taxons list" - taxons_list: - type: "taxons_list" - data: - taxons_list: - taxons: - - "t_shirts" - - "caps" - - "dresses" - - "jeans" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Taxons list" + taxons_list: + type: "taxons_list" + data: + taxons_list: + taxons: + - "t_shirts" + - "caps" + - "dresses" + - "jeans" taxon_t_shirts_banner: name: "T-Shirts banner" channels: @@ -150,15 +156,16 @@ sylius_fixtures: taxons: - "t_shirts" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Image block for specified category (T-Shirts)" - single_media: - type: "single_media" - data: - single_media: "t_shirts_banner" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Image block for specified category (T-Shirts)" + single_media: + type: "single_media" + data: + single_media: "t_shirts_banner" specified_products_banner: name: "Specified products banner" channels: @@ -168,15 +175,16 @@ sylius_fixtures: - "Loose_white_designer_T_Shirt" - "Ribbed_copper_slim_fit_Tee" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Image block for specified products" - single_media: - type: "single_media" - data: - single_media: "specified_products_banner" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Image block for specified products" + single_media: + type: "single_media" + data: + single_media: "specified_products_banner" specified_products_in_taxons: name: "Specified products in taxons" channels: @@ -184,19 +192,20 @@ sylius_fixtures: products_in_taxons: - "womens_t_shirts" content_elements: - heading: - type: "heading" - data: - heading_type: "h2" - heading: "Block for products in specified taxons" - products_carousel_by_taxon: - type: "products_carousel_by_taxon" - data: - products_carousel_by_taxon: "t_shirts" - products_grid_by_taxon: - type: "products_grid_by_taxon" - data: - products_grid_by_taxon: "caps" + en_US: + heading: + type: "heading" + data: + heading_type: "h2" + heading: "Block for products in specified taxons" + products_carousel_by_taxon: + type: "products_carousel_by_taxon" + data: + products_carousel_by_taxon: "t_shirts" + products_grid_by_taxon: + type: "products_grid_by_taxon" + data: + products_grid_by_taxon: "caps" media: options: custom: @@ -302,51 +311,52 @@ sylius_fixtures: meta_title: "FAQ" meta_keywords: "faq" content_elements: - question1: - type: "heading" - data: - heading_type: "h3" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" - answer1: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" - question2: - type: "heading" - data: - heading_type: "h3" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" - answer2: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" - question3: - type: "heading" - data: - heading_type: "h3" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" - answer3: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" - question4: - type: "heading" - data: - heading_type: "h3" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" - answer4: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" - question5: - type: "heading" - data: - heading_type: "h3" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" - answer5: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + en_US: + question1: + type: "heading" + data: + heading_type: "h3" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" + answer1: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + question2: + type: "heading" + data: + heading_type: "h3" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" + answer2: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + question3: + type: "heading" + data: + heading_type: "h3" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" + answer3: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + question4: + type: "heading" + data: + heading_type: "h3" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" + answer4: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" + question5: + type: "heading" + data: + heading_type: "h3" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit?" + answer5: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

" blog: name: "Blog" channels: @@ -356,18 +366,19 @@ sylius_fixtures: slug: "blog" meta_title: "Blog" content_elements: - single_media: - type: "single_media" - data: - single_media: "blog_banner" - textarea: - type: "textarea" - data: - textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie nulla ac tempus volutpat.

" - pages_collection: - type: "pages_collection" - data: - pages_collection: "blog" + en_US: + single_media: + type: "single_media" + data: + single_media: "blog_banner" + textarea: + type: "textarea" + data: + textarea: "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie nulla ac tempus volutpat.

" + pages_collection: + type: "pages_collection" + data: + pages_collection: "blog" blog_post_1: name: "Blog post 1" channels: @@ -382,51 +393,52 @@ sylius_fixtures: teaser_content: "
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie nulla ac tempus volutpat. Aenean aliquet viverra sem a feugiat. Pellentesque a sollicitudin lacus. Mauris vel dolor quis justo vestibulum posuere. Sed sagittis, ipsum a cursus porttitor, justo felis tincidunt neque, eget scelerisque lacus sapien tempor felis.
" teaser_image: "sale" content_elements: - single_media: - type: "single_media" - data: - single_media: "blog_post_1_header_banner" - spacer1: - type: "spacer" - data: - spacer: 30 - heading1: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text1: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

- spacer2: - type: "spacer" - data: - spacer: 30 - products_grid: - type: "products_grid" - data: - products_grid: - products: - - "Raglan_grey_&_black_Tee" - - "Loose_white_designer_T_Shirt" - - "Sport_basic_white_T_Shirt" - - "Ribbed_copper_slim_fit_Tee" - heading2: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text2: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ en_US: + single_media: + type: "single_media" + data: + single_media: "blog_post_1_header_banner" + spacer1: + type: "spacer" + data: + spacer: 30 + heading1: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text1: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ spacer2: + type: "spacer" + data: + spacer: 30 + products_grid: + type: "products_grid" + data: + products_grid: + products: + - "Raglan_grey_&_black_Tee" + - "Loose_white_designer_T_Shirt" + - "Sport_basic_white_T_Shirt" + - "Ribbed_copper_slim_fit_Tee" + heading2: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text2: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

blog_post_2: name: "Blog post 2" channels: @@ -441,51 +453,52 @@ sylius_fixtures: teaser_content: "
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie nulla ac tempus volutpat. Aenean aliquet viverra sem a feugiat. Pellentesque a sollicitudin lacus. Mauris vel dolor quis justo vestibulum posuere. Sed sagittis, ipsum a cursus porttitor, justo felis tincidunt neque, eget scelerisque lacus sapien tempor felis.
" teaser_image: "sale" content_elements: - single_media: - type: "single_media" - data: - single_media: "blog_post_1_header_banner" - spacer1: - type: "spacer" - data: - spacer: 30 - heading1: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text1: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

- spacer2: - type: "spacer" - data: - spacer: 30 - products_grid: - type: "products_grid" - data: - products_grid: - products: - - "Raglan_grey_&_black_Tee" - - "Loose_white_designer_T_Shirt" - - "Sport_basic_white_T_Shirt" - - "Ribbed_copper_slim_fit_Tee" - heading2: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text2: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ en_US: + single_media: + type: "single_media" + data: + single_media: "blog_post_1_header_banner" + spacer1: + type: "spacer" + data: + spacer: 30 + heading1: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text1: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ spacer2: + type: "spacer" + data: + spacer: 30 + products_grid: + type: "products_grid" + data: + products_grid: + products: + - "Raglan_grey_&_black_Tee" + - "Loose_white_designer_T_Shirt" + - "Sport_basic_white_T_Shirt" + - "Ribbed_copper_slim_fit_Tee" + heading2: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text2: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

blog_post_3: name: "Blog post 3" channels: @@ -500,51 +513,52 @@ sylius_fixtures: teaser_content: "
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean molestie nulla ac tempus volutpat. Aenean aliquet viverra sem a feugiat. Pellentesque a sollicitudin lacus. Mauris vel dolor quis justo vestibulum posuere. Sed sagittis, ipsum a cursus porttitor, justo felis tincidunt neque, eget scelerisque lacus sapien tempor felis.
" teaser_image: "sale" content_elements: - single_media: - type: "single_media" - data: - single_media: "blog_post_1_header_banner" - spacer1: - type: "spacer" - data: - spacer: 30 - heading1: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text1: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

- spacer2: - type: "spacer" - data: - spacer: 30 - products_grid: - type: "products_grid" - data: - products_grid: - products: - - "Raglan_grey_&_black_Tee" - - "Loose_white_designer_T_Shirt" - - "Sport_basic_white_T_Shirt" - - "Ribbed_copper_slim_fit_Tee" - heading2: - type: "heading" - data: - heading_type: "h2" - heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - text2: - type: "textarea" - data: - textarea: | -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

-

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ en_US: + single_media: + type: "single_media" + data: + single_media: "blog_post_1_header_banner" + spacer1: + type: "spacer" + data: + spacer: 30 + heading1: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text1: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

+ spacer2: + type: "spacer" + data: + spacer: 30 + products_grid: + type: "products_grid" + data: + products_grid: + products: + - "Raglan_grey_&_black_Tee" + - "Loose_white_designer_T_Shirt" + - "Sport_basic_white_T_Shirt" + - "Ribbed_copper_slim_fit_Tee" + heading2: + type: "heading" + data: + heading_type: "h2" + heading: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" + text2: + type: "textarea" + data: + textarea: | +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit. +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In metus metus, pellentesque feugiat dictum vitae, viverra et purus. Etiam ornare arcu eget bibendum ornare. Donec at dictum odio, venenatis imperdiet tortor. Aenean aliquam mauris id massa commodo condimentum. Praesent sit amet feugiat justo, quis dictum nulla.

+

Fusce gravida orci eu lorem pharetra viverra. Ut non posuere arcu, pellentesque tristique massa. Donec sit amet efficitur risus, a mattis sem. Pellentesque id fringilla lorem, non finibus velit.

about: name: "About us page" channels: