Passed
Pull Request — master (#45)
by Paweł
10:26
created

LessonAdmin::setUploaderHelper()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace App\Admin;
4
5
use App\Model\LessonInterface;
6
use Sonata\AdminBundle\Admin\AbstractAdmin;
7
use Sonata\AdminBundle\Datagrid\ListMapper;
8
use Sonata\AdminBundle\Datagrid\DatagridMapper;
9
use Sonata\AdminBundle\Form\FormMapper;
10
use Sonata\FormatterBundle\Form\Type\SimpleFormatterType;
11
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
12
use Symfony\Component\Form\Extension\Core\Type\FileType;
13
use Symfony\Component\Form\Extension\Core\Type\TextType;
14
use Sonata\AdminBundle\Route\RouteCollection;
15
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
16
17
final class LessonAdmin extends AbstractAdmin
18
{
19
    protected $datagridValues = [
20
        '_page' => 1,
21
        '_sort_order' => 'ASC',
22
        '_sort_by' => 'position',
23
    ];
24
25
    private UploaderHelper $uploaderHelper;
26
27
    public function setUploaderHelper(UploaderHelper $uploaderHelper)
28
    {
29
        $this->uploaderHelper = $uploaderHelper;
30
    }
31
32
    protected function configureFormFields(FormMapper $formMapper)
33
    {
34
        $formMapper->add('title', TextType::class);
35
        $formMapper->add('description', SimpleFormatterType::class, [
36
            'format' => 'richhtml',
37
            'attr' => ['class' => 'ckeditor'],
38
        ]);
39
        $formMapper->add('durationInMinutes');
40
        $formMapper->add('embedType', ChoiceType::class, [
41
                'choices' => [
42
                    'code' => LessonInterface::EMBED_TYPE_CODE,
43
                    'Vimeo' => LessonInterface::EMBED_TYPE_VIMEO,
44
                ],
45
                'required' => true,
46
            ]
47
        );
48
        $formMapper->add('embedCode');
49
        $formMapper->add('module');
50
51
        $fileFieldOptions = ['required' => false];
52
        $container = $this->getConfigurationPool()->getContainer();
53
        if (
54
            null !== $container &&
55
            null !== $this->getSubject() &&
56
            null !== $this->getSubject()->getCoverImageName()
57
        ) {
58
            $imagePath = $this->uploaderHelper->asset($this->getSubject(), 'coverImageFile');
59
60
            $fileFieldOptions['help'] = '<img src="'.$imagePath.'" class="admin-preview" />';
61
        }
62
        $formMapper->add('coverImageFile', FileType::class, $fileFieldOptions);
63
    }
64
65
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
66
    {
67
        $datagridMapper->add('title');
68
        $datagridMapper->add('module');
69
        $datagridMapper->add('module.course');
70
    }
71
72
    protected function configureListFields(ListMapper $listMapper)
73
    {
74
        $listMapper->addIdentifier('title');
75
        $listMapper->add('description');
76
        $listMapper->add('durationInMinutes');
77
        $listMapper->add('module.course');
78
        $listMapper->add('position');
79
        $listMapper->add('coverImageName');
80
        $listMapper->add('_action', null, [
81
            'actions' => [
82
                'move' => [
83
                    'template' => '@PixSortableBehavior/Default/_sort_drag_drop.html.twig',
84
                    'enable_top_bottom_buttons' => true,
85
                ],
86
            ],
87
        ]);
88
    }
89
90
    protected function configureRoutes(RouteCollection $collection)
91
    {
92
        $collection->add('move', $this->getRouterIdParameter().'/move/{position}');
93
    }
94
}
95