4
4
5
5
namespace Skyeng \MarketingCmsBundle \UI \Controller \Admin ;
6
6
7
+ use EasyCorp \Bundle \EasyAdminBundle \Config \Action ;
8
+ use EasyCorp \Bundle \EasyAdminBundle \Config \Actions ;
9
+ use EasyCorp \Bundle \EasyAdminBundle \Config \Assets ;
7
10
use EasyCorp \Bundle \EasyAdminBundle \Config \Crud ;
8
11
use EasyCorp \Bundle \EasyAdminBundle \Config \Filters ;
12
+ use EasyCorp \Bundle \EasyAdminBundle \Context \AdminContext ;
9
13
use EasyCorp \Bundle \EasyAdminBundle \Controller \AbstractCrudController ;
10
14
use EasyCorp \Bundle \EasyAdminBundle \Field \AssociationField ;
11
15
use EasyCorp \Bundle \EasyAdminBundle \Field \TextField ;
12
16
use EasyCorp \Bundle \EasyAdminBundle \Filter \ChoiceFilter ;
13
- use EasyCorp \ Bundle \ EasyAdminBundle \ Filter \ EntityFilter ;
17
+ use Skyeng \ MarketingCmsBundle \ Application \ Cms \ MediaFile \ Service \ MediaFilePathResolver ;
14
18
use Skyeng \MarketingCmsBundle \Domain \Entity \MediaFile ;
15
19
use Skyeng \MarketingCmsBundle \Domain \Entity \ValueObject \MediaFileStorage ;
16
20
use Skyeng \MarketingCmsBundle \Domain \Entity \ValueObject \MediaFileType ;
@@ -30,12 +34,19 @@ class MediaFileCrudController extends AbstractCrudController
30
34
*/
31
35
private $ mediaCatalogRepository ;
32
36
37
+ /**
38
+ * @var MediaFilePathResolver
39
+ */
40
+ private $ mediaFilePathResolver ;
41
+
33
42
public function __construct (
34
43
MediaFileRepositoryInterface $ mediaFileRepository ,
35
- MediaCatalogRepositoryInterface $ mediaCatalogRepository
44
+ MediaCatalogRepositoryInterface $ mediaCatalogRepository ,
45
+ MediaFilePathResolver $ mediaFilePathResolver
36
46
) {
37
47
$ this ->mediaFileRepository = $ mediaFileRepository ;
38
48
$ this ->mediaCatalogRepository = $ mediaCatalogRepository ;
49
+ $ this ->mediaFilePathResolver = $ mediaFilePathResolver ;
39
50
}
40
51
41
52
public static function getEntityFqcn (): string
@@ -61,6 +72,42 @@ public function configureCrud(Crud $crud): Crud
61
72
->setPageTitle (Crud::PAGE_EDIT , 'Медиа файл ' );
62
73
}
63
74
75
+ public function configureAssets (Assets $ assets ): Assets
76
+ {
77
+ return $ assets ->addJsFile ('bundles/marketingcms/ea-copy-actions.js ' );
78
+ }
79
+
80
+ public function configureActions (Actions $ actions ): Actions
81
+ {
82
+ $ actions ->update (Crud::PAGE_INDEX , Action::NEW , function (Action $ action ) {
83
+ return $ action ->setLabel ('Создать медиа файл ' );
84
+ });
85
+
86
+ $ getFileLink = Action::new ('getFileLink ' , 'Ссылка ' , 'fa fa-copy ' )
87
+ ->linkToUrl (function (MediaFile $ file ) {
88
+ return $ this ->mediaFilePathResolver ->getFileUrl ($ file );
89
+ })
90
+ ->addCssClass ('copy-action-ea ' );
91
+
92
+ $ getFileHtml = Action::new ('getFileHtml ' , 'Html ' , 'fa fa-copy ' )
93
+ ->linkToUrl (function (MediaFile $ file ) {
94
+ return $ this ->mediaFilePathResolver ->getFileHtml ($ file );
95
+ })
96
+ ->addCssClass ('copy-action-ea ' );
97
+
98
+ $ actions ->add (Crud::PAGE_INDEX , $ getFileLink );
99
+ $ actions ->add (Crud::PAGE_INDEX , $ getFileHtml );
100
+
101
+ return $ actions ;
102
+ }
103
+
104
+ public function getFileHtml (AdminContext $ context )
105
+ {
106
+ $ mediaFile = $ context ->getEntity ()->getInstance ();
107
+
108
+ return $ mediaFile ->getName ();
109
+ }
110
+
64
111
public function configureFields (string $ pageName ): iterable
65
112
{
66
113
$ title = TextField::new ('title ' , 'Заголовок файла ' );
0 commit comments