Completed
Pull Request — master (#90)
by Arnaud
02:00
created

AdminConfiguration::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace LAG\AdminBundle\Admin\Configuration;
4
5
use JK\Configuration\Configuration;
6
use LAG\AdminBundle\Application\Configuration\ApplicationConfiguration;
7
use Symfony\Component\OptionsResolver\Options;
8
use Symfony\Component\OptionsResolver\OptionsResolver;
9
10
/**
11
 * Ease Admin configuration manipulation.
12
 */
13
class AdminConfiguration extends Configuration
14
{
15
    /**
16
     * @var ApplicationConfiguration
17
     */
18
    protected $applicationConfiguration;
19
20
    /**
21
     * AdminConfiguration constructor.
22
     *
23
     * @param ApplicationConfiguration $applicationConfiguration
24
     */
25 2
    public function __construct(ApplicationConfiguration $applicationConfiguration)
26
    {
27 2
        parent::__construct();
28
29 2
        $this->applicationConfiguration = $applicationConfiguration;
30 2
    }
31
32
    /**
33
     * @param OptionsResolver $resolver
34
     */
35 2
    public function configureOptions(OptionsResolver $resolver)
36
    {
37 2
        $this->configureDefaultOptions($resolver);
38
        
39
        // required options
40 2
        $resolver->setRequired([
41 2
            'entity',
42
        ]);
43 2
        $resolver->setNormalizer('actions', function(Options $options, $actions) {
44 2
            $normalizedActions = [];
45 2
            $addBatchAction = false;
46
47 2
            foreach ($actions as $name => $action) {
48
49
                // action configuration is an array by default
50 2
                if ($action === null) {
51 1
                    $action = [];
52
                }
53 2
                $normalizedActions[$name] = $action;
54
55
                // in list action, if no batch was configured or disabled, we add a batch action
56 2
                if ($name == 'list' && (!array_key_exists('batch', $action) || $action['batch'] === null)) {
57 2
                    $addBatchAction = true;
58
                }
59
            }
60
61
            // add empty default batch action
62 2
            if ($addBatchAction) {
63 2
                $normalizedActions['batch'] = [];
64
            }
65
66 2
            return $normalizedActions;
67 2
        });
68 2
    }
69
    
70
    /**
71
     * @param OptionsResolver $resolver
72
     */
73 2
    protected function configureDefaultOptions(OptionsResolver $resolver)
74
    {
75
        // inherited routing configuration from global application configuration
76
        $routing = $this
77 2
            ->applicationConfiguration
78 2
            ->getParameter('routing');
79
    
80
        // inherited max per page configuration
81
        $maxPerPage = $this
82 2
            ->applicationConfiguration
83 2
            ->getParameter('max_per_page');
84
    
85
        // optional options
86 2
        $resolver->setDefaults([
87 2
            'actions' => [
88
                'list' => [],
89
                'create' => [],
90
                'edit' => [],
91
                'delete' => [],
92
            ],
93
            'batch' => true,
94 2
            'routing_url_pattern' => $routing['url_pattern'],
95 2
            'routing_name_pattern' => $routing['name_pattern'],
96 2
            'controller' => 'LAGAdminBundle:CRUD',
97 2
            'max_per_page' => $maxPerPage,
98
            'data_provider' => null,
99
            'translation_pattern' => $this
100 2
                ->applicationConfiguration
101 2
                ->getParameter('translation')['pattern'],
102
            'form' => null,
103
            'form_options' => [],
104 2
            'pager' => 'pagerfanta',
105 2
            'menu', [
106
                'main' => [
107
                    'action' => 'list'
108
                ]
109
            ],
110
        ]);
111 2
    }
112
}
113