Test Failed
Push — develop ( 006c9f...4b441a )
by Paul
13:29
created

BricksSiteReview::designConfig()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 182
Code Lines 125

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 125
c 0
b 0
f 0
dl 0
loc 182
rs 8
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\Bricks;
4
5
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewShortcode;
6
7
class BricksSiteReview extends BricksElement
8
{
9
    public function designConfig(): array
10
    {
11
        $config = [
12
            'styleReviewAlign' => [
13
                'css' => [
14
                    [
15
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
16
                        'property' => 'text-align',
17
                    ],
18
                    [
19
                        'required' => 'left',
20
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
21
                        'property' => 'justify-content',
22
                        'value' => 'start',
23
                    ],
24
                    [
25
                        'required' => 'left',
26
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
27
                        'property' => 'flex',
28
                        'value' => '0',
29
                    ],
30
                    [
31
                        'required' => 'left',
32
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
33
                        'property' => 'flex',
34
                        'value' => '1',
35
                    ],
36
                    [
37
                        'required' => 'left',
38
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
39
                        'property' => 'justify-content',
40
                        'value' => 'start',
41
                    ],
42
                    [
43
                        'required' => 'center',
44
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
45
                        'property' => 'justify-content',
46
                    ],
47
                    [
48
                        'required' => 'center',
49
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating, .glsr:not([data-theme]) .glsr-review-date',
50
                        'property' => 'flex',
51
                        'value' => 'auto',
52
                    ],
53
                    [
54
                        'required' => 'center',
55
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
56
                        'property' => 'justify-content',
57
                        'value' => 'end',
58
                    ],
59
                    [
60
                        'required' => 'center',
61
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
62
                        'property' => 'justify-content',
63
                        'value' => 'start',
64
                    ],
65
                    [
66
                        'required' => 'right',
67
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
68
                        'property' => 'justify-content',
69
                        'value' => 'end',
70
                    ],
71
                    [
72
                        'required' => 'right',
73
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
74
                        'property' => 'justify-content',
75
                        'value' => 'end',
76
                    ],
77
                    [
78
                        'required' => 'right',
79
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
80
                        'property' => 'flex',
81
                        'value' => '1',
82
                    ],
83
                    [
84
                        'required' => 'right',
85
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
86
                        'property' => 'flex',
87
                        'value' => '0',
88
                    ],
89
                ],
90
                'exclude' => ['auto', 'justify'],
91
                'group' => 'design',
92
                'inline' => true,
93
                'label' => esc_html_x('Alignment', 'admin-text', 'site-reviews'),
94
                'rerender' => true,
95
                'tab' => 'content',
96
                'themeStyle' => true,
97
                'type' => 'text-align',
98
            ],
99
            'styleReviewRowGap' => [
100
                'css' => [
101
                    [
102
                        'selector' => '.glsr:not([data-theme])',
103
                        'property' => '--glsr-review-row-gap',
104
                    ],
105
                ],
106
                'group' => 'design',
107
                'hasDynamicData' => false,
108
                'hasVariables' => true,
109
                'inline' => true,
110
                'label' => esc_html_x('Row Gap', 'admin-text', 'site-reviews'),
111
                'placeholder' => '',
112
                'tab' => 'content',
113
                'themeStyle' => true,
114
                'type' => 'number',
115
                'units' => true,
116
            ],
117
            'styleReviewHeading' => [
118
                'css' => [
119
                    [
120
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
121
                        'property' => 'font',
122
                    ],
123
                ],
124
                'group' => 'design',
125
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
126
                'tab' => 'content',
127
                'themeStyle' => true,
128
                'type' => 'typography',
129
            ],
130
            'styleReviewText' => [
131
                'css' => [
132
                    [
133
                        'selector' => '.glsr:not([data-theme])',
134
                        'property' => 'font',
135
                    ],
136
                ],
137
                'group' => 'design',
138
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
139
                'tab' => 'content',
140
                'themeStyle' => true,
141
                'type' => 'typography',
142
            ],
143
            'styleReviewStarSize' => [
144
                'css' => [
145
                    [
146
                        'selector' => '.glsr:not([data-theme])',
147
                        'property' => '--glsr-review-star',
148
                    ],
149
                ],
150
                'group' => 'design',
151
                'hasDynamicData' => false,
152
                'hasVariables' => true,
153
                'inline' => true,
154
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
155
                'placeholder' => '',
156
                'tab' => 'content',
157
                'themeStyle' => true,
158
                'type' => 'number',
159
                'units' => true,
160
            ],
161
            'styleReviewStarColor' => [
162
                'css' => [
163
                    [
164
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
165
                        'property' => 'mask-size',
166
                        'value' => '100%',
167
                    ],
168
                    [
169
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
170
                        'property' => 'background',
171
                    ],
172
                    [
173
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
174
                        'property' => 'mask-image',
175
                        'value' => 'var(--glsr-star-full)',
176
                    ],
177
                    [
178
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
179
                        'property' => 'mask-image',
180
                        'value' => 'var(--glsr-star-empty)',
181
                    ],
182
                ],
183
                'group' => 'design',
184
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
185
                'tab' => 'content',
186
                'themeStyle' => true,
187
                'type' => 'color',
188
            ],
189
        ];
190
        return $config;
191
    }
192
193
    public function render()
194
    {
195
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
196
            $this->render_element_placeholder([
197
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
198
            ]);
199
            return;
200
        }
201
        parent::render();
202
    }
203
204
    public static function shortcodeClass(): string
205
    {
206
        return SiteReviewShortcode::class;
207
    }
208
}
209