AdminImportTrait::getDashboardActions()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 11
nc 2
nop 0
dl 0
loc 18
rs 9.4285
c 1
b 0
f 1
1
<?php
2
3
namespace Doctrs\SonataImportBundle\Admin;
4
5
6
use Sonata\AdminBundle\Admin\AbstractAdmin;
7
use Sonata\AdminBundle\Route\RouteCollection;
8
use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
9
10
trait AdminImportTrait {
11
12
13
    protected function configureRoutes(RouteCollection $collection)
14
    {
15
        $collection->add('import', 'import', [
16
            '_controller' => 'DoctrsSonataImportBundle:Default:index'
17
        ]);
18
        $collection->add('upload', '{id}/upload', [
19
            '_controller' => 'DoctrsSonataImportBundle:Default:upload'
20
        ]);
21
        $collection->add('importStatus', '{id}/upload/status', [
22
            '_controller' => 'DoctrsSonataImportBundle:Default:importStatus'
23
        ]);
24
    }
25
26
27
    public function getDashboardActions()
28
    {
29
        if (!$this instanceof AbstractAdmin) {
30
            throw new InvalidArgumentException(sprintf('Class "%s" must by instanceof "Sonata\AdminBundle\Admin\AbstractAdmin"',
31
                get_class($this)
32
            ));
33
        }
34
        $actions = parent::getDashboardActions();
35
36
        $actions['import'] = array(
37
            'label'              => 'Import',
38
            'url'                => $this->generateUrl('import'),
39
            'icon'               => 'upload',
40
            'translation_domain' => 'SonataAdminBundle', // optional
41
            'template'           => 'SonataAdminBundle:CRUD:dashboard__action.html.twig', // optional
42
        );
43
44
        return $actions;
45
    }
46
47
}
48