Passed
Push — master ( f6fb5e...281f71 )
by Peter
02:15
created

Assets::addClasses()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Website\Form\Factory\Page;
6
7
use AbterPhp\Framework\Form\Container\FormGroup;
8
use AbterPhp\Framework\Form\Element\Textarea;
9
use AbterPhp\Framework\Form\Extra\Help;
10
use AbterPhp\Framework\Form\Label\Label;
11
use AbterPhp\Framework\Html\INode;
12
use AbterPhp\Framework\I18n\ITranslator;
13
use AbterPhp\Website\Domain\Entities\Page as Entity;
14
15
class Assets
16
{
17
    /** @var ITranslator */
18
    protected $translator;
19
20
    /**
21
     * Hideable constructor.
22
     *
23
     * @param ITranslator $translator
24
     */
25
    public function __construct(ITranslator $translator)
26
    {
27
        $this->translator = $translator;
28
    }
29
30
    /**
31
     * @return INode[]
32
     */
33
    public function create(Entity $entity): array
34
    {
35
        $components = [];
36
37
        $components[] = $this->addClasses($entity);
38
        $components[] = $this->addHeader($entity);
39
        $components[] = $this->addFooter($entity);
40
        $components[] = $this->addCssFiles($entity);
41
        $components[] = $this->addJsFiles($entity);
42
43
        return $components;
44
    }
45
46
    /**
47
     * @param Entity $entity
48
     *
49
     * @return INode
50
     */
51
    protected function addClasses(Entity $entity): INode
52
    {
53
        $input = new Textarea('classes', 'classes', $entity->getClasses());
54
        $label = new Label('classes', 'website:pageClasses');
55
        $help  = new Help('website:pageClassesHelp');
56
57
        return new FormGroup($input, $label, $help);
58
    }
59
60
    /**
61
     * @param Entity $entity
62
     *
63
     * @return INode
64
     */
65
    protected function addHeader(Entity $entity): INode
66
    {
67
        $header = $entity->getAssets() ? $entity->getAssets()->getHeader() : '';
68
69
        $input = new Textarea('header', 'header', $header);
70
        $label = new Label('header', 'website:pageHeader');
71
        $help  = new Help('website:pageHeaderHelp');
72
73
        return new FormGroup($input, $label, $help);
74
    }
75
76
    /**
77
     * @param Entity $entity
78
     *
79
     * @return INode
80
     */
81
    protected function addFooter(Entity $entity): INode
82
    {
83
        $footer = $entity->getAssets() ? $entity->getAssets()->getFooter() : '';
84
85
        $input = new Textarea('footer', 'footer', $footer);
86
        $label = new Label('footer', 'website:pageFooter');
87
        $help  = new Help('website:pageHeaderHelp');
88
89
        return new FormGroup($input, $label, $help);
90
    }
91
92
    /**
93
     * @param Entity $entity
94
     *
95
     * @return INode
96
     */
97
    protected function addCssFiles(Entity $entity): INode
98
    {
99
        $cssFiles = $entity->getAssets() ? $entity->getAssets()->getCssFiles() : [];
100
101
        $input = new Textarea('css-files', 'css-files', implode("\r\n", $cssFiles));
102
        $label = new Label('css-files', 'website:pageCssFiles');
103
        $help  = new Help('website:pageCssFilesHelp');
104
105
        return new FormGroup($input, $label, $help);
106
    }
107
108
    /**
109
     * @param Entity $entity
110
     *
111
     * @return INode
112
     */
113
    protected function addJsFiles(Entity $entity): INode
114
    {
115
        $jsFiles = $entity->getAssets() ? $entity->getAssets()->getJsFiles() : [];
116
117
        $input = new Textarea('js-files', 'js-files', implode("\r\n", $jsFiles));
118
        $label = new Label('js-files', 'website:pageJsFiles');
119
        $help  = new Help('website:pageJsFilesHelp');
120
121
        return new FormGroup($input, $label, $help);
122
    }
123
}
124