Skip to content

Commit b9e58fc

Browse files
Andrey ErdikovAndrey Erdikov
authored andcommitted
[C0-3455] Добавил валидацию, добавил поле для оригинального название, поменял неймер для медиа файлов
1 parent 1094b6b commit b9e58fc

File tree

7 files changed

+54
-4
lines changed

7 files changed

+54
-4
lines changed

src/Domain/Entity/MediaFile.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,27 @@ class MediaFile
4646
*/
4747
private $file;
4848

49-
public function __construct(Id $id, MediaCatalog $catalog, string $title, MediaFileType $type, string $name, MediaFileStorage $storage)
50-
{
49+
/**
50+
* @var string|null
51+
*/
52+
private $originalName;
53+
54+
public function __construct(
55+
Id $id,
56+
MediaCatalog $catalog,
57+
string $title,
58+
MediaFileType $type,
59+
string $name,
60+
MediaFileStorage $storage,
61+
string $originalName
62+
) {
5163
$this->id = $id;
5264
$this->catalog = $catalog;
5365
$this->title = $title;
5466
$this->type = $type;
5567
$this->name = $name;
5668
$this->storage = $storage;
69+
$this->originalName = $originalName;
5770
}
5871

5972
public function getId(): Id
@@ -120,4 +133,14 @@ public function setFile(?File $file): void
120133
{
121134
$this->file = $file;
122135
}
136+
137+
public function getOriginalName(): ?string
138+
{
139+
return $this->originalName;
140+
}
141+
142+
public function setOriginalName(?string $originalName): void
143+
{
144+
$this->originalName = $originalName;
145+
}
123146
}

src/Infrastructure/Doctrine/Entity/mapping/MediaFile.orm.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<field name="name" unique="true"/>
1717
<field name="type" type="media_file_type"/>
1818
<field name="storage" type="media_file_storage"/>
19+
<field name="originalName"/>
1920
</entity>
2021

2122
</doctrine-mapping>

src/Resources/config/packages/vich_uploader.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ vich_uploader:
66
media_files:
77
uri_prefix: '%app.uploads_base_url%'
88
upload_destination: 'uploads.nfs'
9+
namer: Vich\UploaderBundle\Naming\OrignameNamer

src/Resources/config/validator/validation.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,14 @@ Skyeng\MarketingCmsBundle\Domain\Entity\Page:
4141
- Valid: ~
4242
customMetaTags:
4343
- Valid: ~
44+
45+
# Media
46+
47+
Skyeng\MarketingCmsBundle\Domain\Entity\MediaCatalog:
48+
constraints:
49+
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: name
50+
51+
Skyeng\MarketingCmsBundle\Domain\Entity\MediaFile:
52+
properties:
53+
file:
54+
- File: { maxSize: 20M, mimeTypes: [ image/jpeg, image/png, image/gif, application/pdf, video/mp4 ] }

src/Resources/config/vich_uploader/Domain.Entity.MediaFile.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ Skyeng\MarketingCmsBundle\Domain\Entity\MediaFile:
22
file:
33
mapping: media_files
44
filename_property: name
5+
original_name: originalName

src/UI/Controller/Admin/MediaCatalogCrudController.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace Skyeng\MarketingCmsBundle\UI\Controller\Admin;
66

7+
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
8+
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
79
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
810
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
911
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
@@ -36,6 +38,12 @@ public function configureCrud(Crud $crud): Crud
3638
->setPageTitle(Crud::PAGE_EDIT, 'Каталог');
3739
}
3840

41+
public function configureActions(Actions $actions): Actions
42+
{
43+
$actions->remove(Crud::PAGE_INDEX, Action::DELETE);
44+
return $actions;
45+
}
46+
3947
public function configureFields(string $pageName): iterable
4048
{
4149
$name = TextField::new('name', 'Название');

src/UI/Controller/Admin/MediaFileCrudController.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ public function configureActions(Actions $actions): Actions
9898
$actions->add(Crud::PAGE_INDEX, $getFileLink);
9999
$actions->add(Crud::PAGE_INDEX, $getFileHtml);
100100

101+
if (count($this->mediaCatalogRepository->getAll()) === 0) {
102+
$actions->remove(Crud::PAGE_INDEX, Action::NEW);
103+
}
104+
101105
return $actions;
102106
}
103107

@@ -111,12 +115,12 @@ public function getFileHtml(AdminContext $context)
111115
public function configureFields(string $pageName): iterable
112116
{
113117
$title = TextField::new('title', 'Заголовок файла');
114-
$name = TextField::new('name', 'Заголовок файла');
115118
$file = VichFileField::new('file', 'Файл');
116119
$catalog = AssociationField::new('catalog', 'Каталог');
120+
$originalName = TextField::new('originalName', 'Название файла');
117121

118122
if (in_array($pageName, [Crud::PAGE_INDEX, Crud::PAGE_DETAIL], true)) {
119-
return [$name, $title, $catalog];
123+
return [$originalName, $title, $catalog];
120124
}
121125

122126
return [$catalog, $title, $file];
@@ -131,6 +135,7 @@ public function createEntity(string $entityFqcn): MediaFile
131135
new MediaFileType(MediaFileType::IMAGE_TYPE),
132136
'',
133137
new MediaFileStorage(MediaFileStorage::NFS_STORAGE),
138+
'',
134139
);
135140
}
136141
}

0 commit comments

Comments
 (0)