CourseAdmin::setUploaderHelper()   A
last analyzed

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\CourseInterface;
6
use App\Model\LessonInterface;
7
use Sonata\AdminBundle\Admin\AbstractAdmin;
8
use Sonata\AdminBundle\Datagrid\ListMapper;
9
use Sonata\AdminBundle\Datagrid\DatagridMapper;
10
use Sonata\AdminBundle\Form\FormMapper;
11
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
12
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
13
use Symfony\Component\Form\Extension\Core\Type\FileType;
14
use Symfony\Component\Form\Extension\Core\Type\TextType;
15
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
16
17
final class CourseAdmin extends AbstractAdmin
18
{
19
    private UploaderHelper $uploaderHelper;
20
21
    public function setUploaderHelper(UploaderHelper $uploaderHelper)
22
    {
23
        $this->uploaderHelper = $uploaderHelper;
24
    }
25
26
    protected function configureFormFields(FormMapper $formMapper)
27
    {
28
        $formMapper->add('title', TextType::class);
29
        $formMapper->add('description', TextType::class, ['required' => false]);
30
        $formMapper->add('sku', TextType::class, ['required' => false]);
31
        $formMapper->add('type', ChoiceType::class, [
32
                'choices' => [
33
                    'Standard' => CourseInterface::COURSE_TYPE_STANDARD,
34
                    'Demo' => CourseInterface::COURSE_TYPE_DEMO,
35
                ],
36
                'required' => true,
37
            ]
38
        );
39
        $formMapper->add('visible', null, ['required' => false]);
40
        $formMapper->add('startDate', DateTimeType::class, [
41
            'widget' => 'single_text',
42
            'format' => DateTimeType::HTML5_FORMAT,
43
            'required' => false,
44
            'html5' => true,
45
            'input' => 'datetime',
46
            'attr' => [
47
                'style' => 'width: 200px',
48
            ],
49
        ]);
50
        $formMapper->add('endDate', DateTimeType::class, [
51
            'widget' => 'single_text',
52
            'format' => DateTimeType::HTML5_FORMAT,
53
            'required' => false,
54
            'html5' => true,
55
            'input' => 'datetime',
56
            'attr' => [
57
                'style' => 'width: 200px',
58
            ],
59
        ]);
60
61
        $fileFieldOptions = ['required' => false];
62
        if (null !== $this->getSubject()->getCoverImageName()) {
63
            $imagePath = $this->uploaderHelper->asset($this->getSubject(), 'coverImageFile');
64
65
            $fileFieldOptions['help'] = '<img src="'.$imagePath.'" class="admin-preview" />';
66
        }
67
        $formMapper->add('coverImageFile', FileType::class, $fileFieldOptions);
68
69
        $formMapper->add('purchaseUrl');
70
        $formMapper->add('parent');
71
    }
72
73
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
74
    {
75
        $datagridMapper->add('title');
76
        $datagridMapper->add('sku');
77
        $datagridMapper->add('authors');
78
    }
79
80
    protected function configureListFields(ListMapper $listMapper)
81
    {
82
        $listMapper->addIdentifier('title');
83
        $listMapper->add('description');
84
        $listMapper->add('sku');
85
        $listMapper->add('authors');
86
        $listMapper->add('coverImageName');
87
        $listMapper->add('visible');
88
        $listMapper->add('startDate');
89
        $listMapper->add('endDate');
90
    }
91
}
92