From 3bc89e66434119051802007dd776555b807b04db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kr=C3=B3l?= Date: Sun, 15 Jul 2018 22:47:33 +0200 Subject: [PATCH 1/5] Add Assigner specs --- spec/Assigner/ChannelsAssignerSpec.php | 44 ++++++++++++++++++++++++++ spec/Assigner/ProductsAssignerSpec.php | 44 ++++++++++++++++++++++++++ spec/Assigner/SectionsAssignerSpec.php | 44 ++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 spec/Assigner/ChannelsAssignerSpec.php create mode 100644 spec/Assigner/ProductsAssignerSpec.php create mode 100644 spec/Assigner/SectionsAssignerSpec.php diff --git a/spec/Assigner/ChannelsAssignerSpec.php b/spec/Assigner/ChannelsAssignerSpec.php new file mode 100644 index 000000000..e8ab0b882 --- /dev/null +++ b/spec/Assigner/ChannelsAssignerSpec.php @@ -0,0 +1,44 @@ +beConstructedWith($channelRepository); + } + + function it_is_initializable(): void + { + $this->shouldHaveType(ChannelsAssigner::class); + } + + function it_implements_channels_assigner_interface(): void + { + $this->shouldHaveType(ChannelsAssignerInterface::class); + } + + function it_assigns_channels( + ChannelRepositoryInterface $channelRepository, + ChannelInterface $webChannel, + ChannelInterface $posChannel, + ChannelsAwareInterface $channelsAware + ): void + { + $channelRepository->findOneBy(['code' => 'web'])->willReturn($webChannel); + $channelRepository->findOneBy(['code' => 'pos'])->willReturn($posChannel); + + $channelsAware->addChannel($webChannel)->shouldBeCalled(); + $channelsAware->addChannel($posChannel)->shouldBeCalled(); + + $this->assign($channelsAware, ['web', 'pos']); + } +} diff --git a/spec/Assigner/ProductsAssignerSpec.php b/spec/Assigner/ProductsAssignerSpec.php new file mode 100644 index 000000000..a6779ac8c --- /dev/null +++ b/spec/Assigner/ProductsAssignerSpec.php @@ -0,0 +1,44 @@ +beConstructedWith($productRepository); + } + + function it_is_initializable(): void + { + $this->shouldHaveType(ProductsAssigner::class); + } + + function it_implements_products_assigner_interface(): void + { + $this->shouldHaveType(ProductsAssignerInterface::class); + } + + function it_assigns_products( + ProductRepositoryInterface $productRepository, + ProductInterface $mugProduct, + ProductInterface $tshirtProduct, + ProductsAwareInterface $productsAware + ): void + { + $productRepository->findOneBy(['code' => 'mug'])->willReturn($mugProduct); + $productRepository->findOneBy(['code' => 't-shirt'])->willReturn($tshirtProduct); + + $productsAware->addProduct($mugProduct)->shouldBeCalled(); + $productsAware->addProduct($tshirtProduct)->shouldBeCalled(); + + $this->assign($productsAware, ['mug', 't-shirt']); + } +} diff --git a/spec/Assigner/SectionsAssignerSpec.php b/spec/Assigner/SectionsAssignerSpec.php new file mode 100644 index 000000000..9b553b2b2 --- /dev/null +++ b/spec/Assigner/SectionsAssignerSpec.php @@ -0,0 +1,44 @@ +beConstructedWith($sectionRepository); + } + + function it_is_initializable(): void + { + $this->shouldHaveType(SectionsAssigner::class); + } + + function it_implements_sections_assigner_interface(): void + { + $this->shouldHaveType(SectionsAssignerInterface::class); + } + + function it_assigns_sections( + SectionRepositoryInterface $sectionRepository, + SectionInterface $aboutSection, + SectionInterface $blogSection, + SectionableInterface $sectionsAware + ): void + { + $sectionRepository->findOneBy(['code' => 'about'])->willReturn($aboutSection); + $sectionRepository->findOneBy(['code' => 'blog'])->willReturn($blogSection); + + $sectionsAware->addSection($aboutSection)->shouldBeCalled(); + $sectionsAware->addSection($blogSection)->shouldBeCalled(); + + $this->assign($sectionsAware, ['about', 'blog']); + } +} From 0b669ab063f932661c5c4c0273a5838fd05738f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kr=C3=B3l?= Date: Mon, 16 Jul 2018 00:48:15 +0200 Subject: [PATCH 2/5] Fix CS --- spec/Entity/MediaTranslationSpec.php | 2 +- spec/Twig/Parser/ContentParserSpec.php | 44 +++++++++++++++++++ src/Assigner/ChannelsAssigner.php | 2 +- .../Action/Admin/ProductSearchAction.php | 4 +- src/Fixture/Factory/PageFixtureFactory.php | 4 +- src/Importer/PageImporter.php | 2 +- src/Menu/ContentManagementMenuBuilder.php | 16 +++---- .../views/Shop/Media/Show/image.html.twig | 4 ++ src/Twig/Extension/RenderBlockExtension.php | 2 +- src/Twig/Parser/ContentParser.php | 4 +- .../views/Homepage/index.html.twig | 5 ++- 11 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 spec/Twig/Parser/ContentParserSpec.php diff --git a/spec/Entity/MediaTranslationSpec.php b/spec/Entity/MediaTranslationSpec.php index 15fa927d7..6492eac4e 100755 --- a/spec/Entity/MediaTranslationSpec.php +++ b/spec/Entity/MediaTranslationSpec.php @@ -37,7 +37,7 @@ function it_implements_media_translation_interface(): void $this->shouldHaveType(TranslationInterface::class); } - function it_allows_access_via_properties(PageImageInterface $pageImage): void + function it_allows_access_via_properties(): void { $this->setName('Video'); $this->getName()->shouldReturn('Video'); diff --git a/spec/Twig/Parser/ContentParserSpec.php b/spec/Twig/Parser/ContentParserSpec.php new file mode 100644 index 000000000..d48e53799 --- /dev/null +++ b/spec/Twig/Parser/ContentParserSpec.php @@ -0,0 +1,44 @@ +beConstructedWith($twigEnvironment, ['bitbag_cms_render_block']); + } + + function it_is_initializable(): void + { + $this->shouldHaveType(ContentParser::class); + } + + function it_implements_content_parser_interface(): void + { + $this->shouldHaveType(ContentParserInterface::class); + } + + function it_parses_string_functions( + \Twig_Environment $twigEnvironment, + \Twig_Function $renderBlockFunction, + RenderBlockExtension $renderBlockExtension + ): void + { + $twigEnvironment->getFunctions()->willReturn([ + 'bitbag_cms_render_block' => $renderBlockFunction, + ]); + $renderBlockFunction->getCallable()->willReturn([$renderBlockExtension, 'renderBlock']); + + $input = "Let's render! {{ bitbag_cms_render_block('intro', '@BitBagSyliusCmsPlugin/Shop/Block/show.html.twig') }}"; + + $renderBlockExtension->renderBlock('intro', '@BitBagSyliusCmsPlugin/Shop/Block/show.html.twig')->shouldBeCalled(); + + $this->parse($input); + } +} diff --git a/src/Assigner/ChannelsAssigner.php b/src/Assigner/ChannelsAssigner.php index 6eb4e591a..05beac626 100644 --- a/src/Assigner/ChannelsAssigner.php +++ b/src/Assigner/ChannelsAssigner.php @@ -29,7 +29,7 @@ public function __construct(ChannelRepositoryInterface $channelRepository) public function assign(ChannelsAwareInterface $channelsAware, array $channelsCodes): void { foreach ($channelsCodes as $channelCode) { - /** @var ChannelInterface $channel */ + /** @var ChannelInterface $channel|null */ $channel = $this->channelRepository->findOneBy(['code' => $channelCode]); if (null !== $channel) { diff --git a/src/Controller/Action/Admin/ProductSearchAction.php b/src/Controller/Action/Admin/ProductSearchAction.php index fd13b1a70..94528a12c 100644 --- a/src/Controller/Action/Admin/ProductSearchAction.php +++ b/src/Controller/Action/Admin/ProductSearchAction.php @@ -34,8 +34,8 @@ public function __construct(ProductRepositoryInterface $productRepository, ViewH public function __invoke(Request $request): Response { - $resource = $this->productRepository->findByNamePart($request->get('phrase', '')); - $view = View::create($resource); + $product = $this->productRepository->findByNamePart($request->get('phrase', '')); + $view = View::create($product); $this->viewHandler->setExclusionStrategyGroups(['Autocomplete']); $view->getContext()->enableMaxDepth(); diff --git a/src/Fixture/Factory/PageFixtureFactory.php b/src/Fixture/Factory/PageFixtureFactory.php index 6b96f61ed..6a1f58cc5 100755 --- a/src/Fixture/Factory/PageFixtureFactory.php +++ b/src/Fixture/Factory/PageFixtureFactory.php @@ -12,8 +12,8 @@ namespace BitBag\SyliusCmsPlugin\Fixture\Factory; -use BitBag\SyliusCmsPlugin\Entity\PageInterface; use BitBag\SyliusCmsPlugin\Entity\PageImage; +use BitBag\SyliusCmsPlugin\Entity\PageInterface; use BitBag\SyliusCmsPlugin\Entity\PageTranslationInterface; use BitBag\SyliusCmsPlugin\Entity\SectionInterface; use BitBag\SyliusCmsPlugin\Repository\PageRepositoryInterface; @@ -39,7 +39,7 @@ final class PageFixtureFactory implements FixtureFactoryInterface /** @var SectionRepositoryInterface */ private $sectionRepository; - /** @var ProductRepositoryInterface */ + /** @var ImageUploaderInterface */ private $imageUploader; /** @var ProductRepositoryInterface */ diff --git a/src/Importer/PageImporter.php b/src/Importer/PageImporter.php index b38d37927..baf7231b9 100644 --- a/src/Importer/PageImporter.php +++ b/src/Importer/PageImporter.php @@ -13,8 +13,8 @@ namespace BitBag\SyliusCmsPlugin\Importer; use BitBag\SyliusCmsPlugin\Downloader\ImageDownloaderInterface; -use BitBag\SyliusCmsPlugin\Entity\PageInterface; use BitBag\SyliusCmsPlugin\Entity\PageImage; +use BitBag\SyliusCmsPlugin\Entity\PageInterface; use BitBag\SyliusCmsPlugin\Entity\PageTranslationInterface; use BitBag\SyliusCmsPlugin\Resolver\ImporterChannelsResolverInterface; use BitBag\SyliusCmsPlugin\Resolver\ImporterProductsResolverInterface; diff --git a/src/Menu/ContentManagementMenuBuilder.php b/src/Menu/ContentManagementMenuBuilder.php index ad8eea5bd..e1b3af81a 100755 --- a/src/Menu/ContentManagementMenuBuilder.php +++ b/src/Menu/ContentManagementMenuBuilder.php @@ -33,6 +33,14 @@ public function buildMenu(MenuBuilderEvent $menuBuilderEvent): void ->setLabelAttribute('icon', 'block layout') ; + $cmsRootMenuItem + ->addChild('media', [ + 'route' => 'bitbag_sylius_cms_plugin_admin_media_index', + ]) + ->setLabel('bitbag_sylius_cms_plugin.ui.media') + ->setLabelAttribute('icon', 'file') + ; + $cmsRootMenuItem ->addChild('pages', [ 'route' => 'bitbag_sylius_cms_plugin_admin_page_index', @@ -56,13 +64,5 @@ public function buildMenu(MenuBuilderEvent $menuBuilderEvent): void ->setLabel('bitbag_sylius_cms_plugin.ui.sections') ->setLabelAttribute('icon', 'grid layout') ; - - $cmsRootMenuItem - ->addChild('media', [ - 'route' => 'bitbag_sylius_cms_plugin_admin_media_index', - ]) - ->setLabel('bitbag_sylius_cms_plugin.ui.media') - ->setLabelAttribute('icon', 'file') - ; } } diff --git a/src/Resources/views/Shop/Media/Show/image.html.twig b/src/Resources/views/Shop/Media/Show/image.html.twig index 7320a5057..67177e09f 100755 --- a/src/Resources/views/Shop/Media/Show/image.html.twig +++ b/src/Resources/views/Shop/Media/Show/image.html.twig @@ -1,3 +1,7 @@ {% set path = '/'~media.path %} +

{{ media.name|raw }}

+ {{ media.name }} + +

{{ media.description|raw }}

diff --git a/src/Twig/Extension/RenderBlockExtension.php b/src/Twig/Extension/RenderBlockExtension.php index 822ea5ef4..d2e1481cb 100644 --- a/src/Twig/Extension/RenderBlockExtension.php +++ b/src/Twig/Extension/RenderBlockExtension.php @@ -16,7 +16,7 @@ use BitBag\SyliusCmsPlugin\Resolver\BlockResourceResolverInterface; use Symfony\Component\Templating\EngineInterface; -final class RenderBlockExtension extends \Twig_Extension +class RenderBlockExtension extends \Twig_Extension { /** @var BlockRepositoryInterface */ private $blockRepository; diff --git a/src/Twig/Parser/ContentParser.php b/src/Twig/Parser/ContentParser.php index b9319260a..f3cea4c22 100644 --- a/src/Twig/Parser/ContentParser.php +++ b/src/Twig/Parser/ContentParser.php @@ -60,7 +60,7 @@ private function getFunctionArguments(string $functionName, string $input): ?arr $arguments = explode(',', $functionParts[0]); return array_map(function (string $element): string { - return trim($element, '\''); + return trim(trim($element), '\''); }, $arguments); } @@ -76,6 +76,6 @@ private function callFunction(array $functions, string $functionName, array $arg $extension = $callable[0]; $extensionMethod = $callable[1]; - return $extension->$extensionMethod(...$arguments); + return call_user_func_array([$extension, $extensionMethod], $arguments); } } diff --git a/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig b/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig index 1047e5edb..d86a7647f 100755 --- a/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig +++ b/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig @@ -13,7 +13,7 @@
- {{ render(path('bitbag_sylius_cms_plugin_shop_block_render', {'code' : 'homepage_header_image'})) }} + {{ bitbag_cms_render_media('homepage_header_image') }}
@@ -47,7 +47,8 @@
Like it? We do a lot of Sylius projects & plugins.
- Perhaps there is something we can do for you. Visit our website for more information. + Perhaps there is something we can do for you. Visit our website for + more information.
From 290d04d05fe68ae1565ddebbf60eb95c6abd7283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kr=C3=B3l?= Date: Mon, 16 Jul 2018 01:54:23 +0200 Subject: [PATCH 3/5] Add last fixes before 2.0 --- src/Controller/MediaController.php | 9 +++- src/Entity/Media.php | 14 ------ src/Entity/MediaInterface.php | 4 -- src/Fixture/Factory/MediaFixtureFactory.php | 11 +++-- src/MediaProvider/AbstractProvider.php | 2 +- src/Resources/config/doctrine/Media.orm.yml | 5 -- src/Resources/config/services.yml | 1 - src/Resources/config/services/fixture.yml | 2 +- .../views/Shop/Media/Show/file.html.twig | 8 +-- .../views/Shop/Media/Show/image.html.twig | 4 +- .../views/Shop/Media/Show/video.html.twig | 8 +-- src/Uploader/MediaUploader.php | 9 +--- .../views/Homepage/index.html.twig | 4 +- .../app/Resources/fixtures/BitBagOffer.pdf | Bin 0 -> 2241847 bytes .../Resources/fixtures/homepage_banner_1.jpeg | Bin 309953 -> 0 bytes .../Resources/fixtures/homepage_banner_2.jpeg | Bin 142528 -> 0 bytes .../app/Resources/fixtures/homepage_video.mp4 | Bin 0 -> 4145766 bytes tests/Application/app/config/fixtures.yml | 46 +++++++++++++----- 18 files changed, 63 insertions(+), 64 deletions(-) create mode 100644 tests/Application/app/Resources/fixtures/BitBagOffer.pdf delete mode 100644 tests/Application/app/Resources/fixtures/homepage_banner_1.jpeg delete mode 100644 tests/Application/app/Resources/fixtures/homepage_banner_2.jpeg create mode 100644 tests/Application/app/Resources/fixtures/homepage_video.mp4 diff --git a/src/Controller/MediaController.php b/src/Controller/MediaController.php index ca4b9e860..213fd137e 100755 --- a/src/Controller/MediaController.php +++ b/src/Controller/MediaController.php @@ -16,6 +16,8 @@ use Sylius\Bundle\ResourceBundle\Controller\ResourceController; use Sylius\Component\Resource\ResourceActions; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\File\File; +use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\ResponseHeaderBag; @@ -60,9 +62,12 @@ public function downloadMediaAction(Request $request): Response $this->eventDispatcher->dispatch(ResourceActions::SHOW, $configuration, $media); - $response = new BinaryFileResponse($media->getOriginalPath()); + $mediaPath = $this->getParameter('kernel.project_dir') . '/web' . $media->getPath(); + $mediaFile = new File($mediaPath); + $mediaName = $media->getName() . '.' . $mediaFile->guessExtension(); + $response = new BinaryFileResponse($mediaPath); - $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT); + $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $mediaName); $response->headers->set('Content-Type', $media->getMimeType()); return $response; diff --git a/src/Entity/Media.php b/src/Entity/Media.php index adcd42c57..146b0c6ba 100644 --- a/src/Entity/Media.php +++ b/src/Entity/Media.php @@ -89,22 +89,8 @@ public function setPath(?string $path): void $this->path = $path; } - public function getOriginalPath(): ?string - { - return $this->originalPath; - } - - public function setOriginalPath(?string $originalPath): void - { - $this->originalPath = $originalPath; - } - public function getFile(): ?File { - if (null === $this->type && null !== $this->path) { - $this->file = new File($this->path); - } - return $this->file; } diff --git a/src/Entity/MediaInterface.php b/src/Entity/MediaInterface.php index f8b7d4269..f93df3760 100644 --- a/src/Entity/MediaInterface.php +++ b/src/Entity/MediaInterface.php @@ -36,10 +36,6 @@ public function getPath(): ?string; public function setPath(?string $path): void; - public function getOriginalPath(): ?string; - - public function setOriginalPath(?string $originalPath): void; - public function getFile(): ?File; public function setFile(?File $file): void; diff --git a/src/Fixture/Factory/MediaFixtureFactory.php b/src/Fixture/Factory/MediaFixtureFactory.php index ef0c9a7b8..813d8c947 100644 --- a/src/Fixture/Factory/MediaFixtureFactory.php +++ b/src/Fixture/Factory/MediaFixtureFactory.php @@ -18,6 +18,7 @@ use BitBag\SyliusCmsPlugin\Entity\MediaTranslationInterface; use BitBag\SyliusCmsPlugin\MediaProvider\ProviderInterface; use BitBag\SyliusCmsPlugin\Repository\MediaRepositoryInterface; +use BitBag\SyliusCmsPlugin\Resolver\MediaProviderResolverInterface; use Sylius\Component\Resource\Factory\FactoryInterface; use Symfony\Component\HttpFoundation\File\File; @@ -29,8 +30,8 @@ final class MediaFixtureFactory implements FixtureFactoryInterface /** @var FactoryInterface */ private $mediaTranslationFactory; - /** @var ProviderInterface */ - private $imageProvider; + /** @var MediaProviderResolverInterface */ + private $mediaProviderResolver; /** @var MediaRepositoryInterface */ private $mediaRepository; @@ -44,14 +45,14 @@ final class MediaFixtureFactory implements FixtureFactoryInterface public function __construct( FactoryInterface $mediaFactory, FactoryInterface $mediaTranslationFactory, - ProviderInterface $imageProvider, + MediaProviderResolverInterface $mediaProviderResolver, MediaRepositoryInterface $mediaRepository, ProductsAssignerInterface $productsAssigner, SectionsAssignerInterface $sectionsAssigner ) { $this->mediaFactory = $mediaFactory; $this->mediaTranslationFactory = $mediaTranslationFactory; - $this->imageProvider = $imageProvider; + $this->mediaProviderResolver = $mediaProviderResolver; $this->mediaRepository = $mediaRepository; $this->productsAssigner = $productsAssigner; $this->sectionsAssigner = $sectionsAssigner; @@ -86,7 +87,7 @@ private function createMedia(string $code, array $mediaData): void $media->setEnabled($mediaData['enabled']); $media->setFile(new File($mediaData['path'])); - $this->imageProvider->upload($media); + $this->mediaProviderResolver->resolveProvider($media)->upload($media); foreach ($mediaData['translations'] as $localeCode => $translation) { /** @var MediaTranslationInterface $mediaTranslation */ diff --git a/src/MediaProvider/AbstractProvider.php b/src/MediaProvider/AbstractProvider.php index ff8aa2871..adea8a9f7 100755 --- a/src/MediaProvider/AbstractProvider.php +++ b/src/MediaProvider/AbstractProvider.php @@ -49,6 +49,6 @@ public function render(MediaInterface $media, array $options = []): string public function upload(MediaInterface $media): void { - $this->uploader->upload($media, $this->pathPrefix); + $this->uploader->upload($media, $this->pathPrefix); } } diff --git a/src/Resources/config/doctrine/Media.orm.yml b/src/Resources/config/doctrine/Media.orm.yml index 6c01a36d4..ce1f95c6a 100644 --- a/src/Resources/config/doctrine/Media.orm.yml +++ b/src/Resources/config/doctrine/Media.orm.yml @@ -22,11 +22,6 @@ BitBag\SyliusCmsPlugin\Entity\Media: type: string length: 250 unique: true - originalPath: - column: original_path - type: string - length: 250 - unique: true mimeType: column: mime_typ type: string diff --git a/src/Resources/config/services.yml b/src/Resources/config/services.yml index 3b7582ba8..f11846672 100755 --- a/src/Resources/config/services.yml +++ b/src/Resources/config/services.yml @@ -46,7 +46,6 @@ services: class: BitBag\SyliusCmsPlugin\Uploader\MediaUploader arguments: - "@bitbag_sylius_cms_plugin.media.filesystem" - - "%kernel.project_dir%" bitbag_sylius_cms_plugin.media.filesystem: class: Gaufrette\Filesystem diff --git a/src/Resources/config/services/fixture.yml b/src/Resources/config/services/fixture.yml index 944debbee..506257725 100755 --- a/src/Resources/config/services/fixture.yml +++ b/src/Resources/config/services/fixture.yml @@ -78,7 +78,7 @@ services: arguments: - "@bitbag_sylius_cms_plugin.factory.media" - "@bitbag_sylius_cms_plugin.factory.media_translation" - - "@bitbag_sylius_cms_plugin.media_provider.image" + - "@bitbag_sylius_cms_plugin.resolver.media_provider" - "@bitbag_sylius_cms_plugin.repository.media" - "@bitbag_sylius_cms_plugin.assigner.products" - "@bitbag_sylius_cms_plugin.assigner.sections" diff --git a/src/Resources/views/Shop/Media/Show/file.html.twig b/src/Resources/views/Shop/Media/Show/file.html.twig index f72cbbdef..61c47e656 100755 --- a/src/Resources/views/Shop/Media/Show/file.html.twig +++ b/src/Resources/views/Shop/Media/Show/file.html.twig @@ -1,8 +1,10 @@ {% if null != media.name %} -

{{ media.name }}

+

{{ media.name|raw }}

{% endif %} - - +

{{ media.description|raw }}

+ +
+ {{ 'bitbag_sylius_cms_plugin.ui.download'|trans }} diff --git a/src/Resources/views/Shop/Media/Show/image.html.twig b/src/Resources/views/Shop/Media/Show/image.html.twig index 67177e09f..746531e00 100755 --- a/src/Resources/views/Shop/Media/Show/image.html.twig +++ b/src/Resources/views/Shop/Media/Show/image.html.twig @@ -1,7 +1,5 @@ -{% set path = '/'~media.path %} -

{{ media.name|raw }}

-{{ media.name }} +{{ media.name }}

{{ media.description|raw }}

diff --git a/src/Resources/views/Shop/Media/Show/video.html.twig b/src/Resources/views/Shop/Media/Show/video.html.twig index 5186f9a08..66d871411 100755 --- a/src/Resources/views/Shop/Media/Show/video.html.twig +++ b/src/Resources/views/Shop/Media/Show/video.html.twig @@ -1,9 +1,9 @@ -{% set path = '/'~media.path %} -
{% if null != media.name %} -

{{ media.name }}

+

{{ media.name|raw }}

{% endif %} - + + +

{{ media.description|raw }}

diff --git a/src/Uploader/MediaUploader.php b/src/Uploader/MediaUploader.php index 7de15385e..8e5e36d8f 100644 --- a/src/Uploader/MediaUploader.php +++ b/src/Uploader/MediaUploader.php @@ -22,13 +22,9 @@ final class MediaUploader implements MediaUploaderInterface /** @var Filesystem */ private $filesystem; - /** @var string */ - private $projectDir; - - public function __construct(Filesystem $filesystem, string $projectDir) + public function __construct(Filesystem $filesystem) { $this->filesystem = $filesystem; - $this->projectDir = $projectDir; } public function upload(MediaInterface $media, string $pathPrefix): void @@ -51,8 +47,7 @@ public function upload(MediaInterface $media, string $pathPrefix): void $path = $this->expandPath($hash . '.' . $file->guessExtension(), $pathPrefix); } while ($this->filesystem->has($path)); - $media->setPath($path); - $media->setOriginalPath(sprintf('%s/%s', $this->projectDir, $path)); + $media->setPath('/' . $path); $media->setMimeType($file->getMimeType()); $this->filesystem->write( diff --git a/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig b/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig index d86a7647f..8132d3c8a 100755 --- a/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig +++ b/tests/Application/app/Resources/SyliusShopBundle/views/Homepage/index.html.twig @@ -25,12 +25,12 @@
- {{ bitbag_cms_render_media('homepage_banner_image_1') }} + {{ bitbag_cms_render_media('homepage_video') }}
- {{ bitbag_cms_render_media('homepage_banner_image_2') }} + {{ bitbag_cms_render_media('homepage_pdf') }}
diff --git a/tests/Application/app/Resources/fixtures/BitBagOffer.pdf b/tests/Application/app/Resources/fixtures/BitBagOffer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b16ddf0b5521cb1552f34d5ae0fe1a93ecff9cc1 GIT binary patch literal 2241847 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