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

BricksSiteReviews::designConfig()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 254
Code Lines 180

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 180
c 0
b 0
f 0
dl 0
loc 254
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\SiteReviewsShortcode;
6
7
class BricksSiteReviews extends BricksElement
8
{
9
    public function designConfig(): array
10
    {
11
        $config = [
12
            'styleReviewAlign' => [
13
                'css' => [
14
                    [
15
                        'selector' => '.glsr:not([data-theme]) .glsr-review, .glsr:not([data-theme]) .nav-links',
16
                        'property' => 'text-align',
17
                    ],
18
                    [
19
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
20
                        'property' => 'display',
21
                        'value' => 'flex',
22
                    ],
23
                    [
24
                        'required' => 'left',
25
                        'selector' => '.glsr:not([data-theme]) .glsr-review, .glsr:not([data-theme]) .glsr-ajax-loadmore',
26
                        'property' => 'justify-content',
27
                        'value' => 'start',
28
                    ],
29
                    [
30
                        'required' => 'left',
31
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
32
                        'property' => 'flex',
33
                        'value' => '0',
34
                    ],
35
                    [
36
                        'required' => 'left',
37
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
38
                        'property' => 'flex',
39
                        'value' => '1',
40
                    ],
41
                    [
42
                        'required' => 'left',
43
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
44
                        'property' => 'justify-content',
45
                        'value' => 'start',
46
                    ],
47
                    [
48
                        'required' => 'center',
49
                        'selector' => '.glsr:not([data-theme]) .glsr-review, .glsr:not([data-theme]) .glsr-ajax-loadmore',
50
                        'property' => 'justify-content',
51
                    ],
52
                    [
53
                        'required' => 'center',
54
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating, .glsr:not([data-theme]) .glsr-review-date',
55
                        'property' => 'flex',
56
                        'value' => 'auto',
57
                    ],
58
                    [
59
                        'required' => 'center',
60
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
61
                        'property' => 'justify-content',
62
                        'value' => 'end',
63
                    ],
64
                    [
65
                        'required' => 'center',
66
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
67
                        'property' => 'justify-content',
68
                        'value' => 'start',
69
                    ],
70
                    [
71
                        'required' => 'right',
72
                        'selector' => '.glsr:not([data-theme]) .glsr-review, .glsr:not([data-theme]) .glsr-ajax-loadmore',
73
                        'property' => 'justify-content',
74
                        'value' => 'end',
75
                    ],
76
                    [
77
                        'required' => 'right',
78
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
79
                        'property' => 'justify-content',
80
                        'value' => 'end',
81
                    ],
82
                    [
83
                        'required' => 'right',
84
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
85
                        'property' => 'flex',
86
                        'value' => '1',
87
                    ],
88
                    [
89
                        'required' => 'right',
90
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
91
                        'property' => 'flex',
92
                        'value' => '0',
93
                    ],
94
                ],
95
                'exclude' => ['auto', 'justify'],
96
                'group' => 'design',
97
                'inline' => true,
98
                'label' => esc_html_x('Alignment', 'admin-text', 'site-reviews'),
99
                'rerender' => true,
100
                'tab' => 'content',
101
                'themeStyle' => true,
102
                'type' => 'text-align',
103
            ],
104
            'styleReviewRowGap' => [
105
                'css' => [
106
                    [
107
                        'selector' => '.glsr:not([data-theme])',
108
                        'property' => '--glsr-review-row-gap',
109
                    ],
110
                ],
111
                'group' => 'design',
112
                'hasDynamicData' => false,
113
                'hasVariables' => true,
114
                'inline' => true,
115
                'label' => esc_html_x('Row Gap', 'admin-text', 'site-reviews'),
116
                'placeholder' => '',
117
                'tab' => 'content',
118
                'themeStyle' => true,
119
                'type' => 'number',
120
                'units' => true,
121
            ],
122
            'styleReviewHeading' => [
123
                'css' => [
124
                    [
125
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
126
                        'property' => 'font',
127
                    ],
128
                ],
129
                'group' => 'design',
130
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
131
                'tab' => 'content',
132
                'themeStyle' => true,
133
                'type' => 'typography',
134
            ],
135
            'styleReviewText' => [
136
                'css' => [
137
                    [
138
                        'selector' => '.glsr:not([data-theme])',
139
                        'property' => 'font',
140
                    ],
141
                ],
142
                'group' => 'design',
143
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
144
                'tab' => 'content',
145
                'themeStyle' => true,
146
                'type' => 'typography',
147
            ],
148
            'styleReviewStarSize' => [
149
                'css' => [
150
                    [
151
                        'selector' => '.glsr:not([data-theme])',
152
                        'property' => '--glsr-review-star',
153
                    ],
154
                ],
155
                'group' => 'design',
156
                'hasDynamicData' => false,
157
                'hasVariables' => true,
158
                'inline' => true,
159
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
160
                'placeholder' => '',
161
                'tab' => 'content',
162
                'themeStyle' => true,
163
                'type' => 'number',
164
                'units' => true,
165
            ],
166
            'styleReviewStarColor' => [
167
                'css' => [
168
                    [
169
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
170
                        'property' => 'mask-size',
171
                        'value' => '100%',
172
                    ],
173
                    [
174
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
175
                        'property' => 'background',
176
                    ],
177
                    [
178
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
179
                        'property' => 'mask-image',
180
                        'value' => 'var(--glsr-star-full)',
181
                    ],
182
                    [
183
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
184
                        'property' => 'mask-image',
185
                        'value' => 'var(--glsr-star-empty)',
186
                    ],
187
                ],
188
                'group' => 'design',
189
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
190
                'tab' => 'content',
191
                'themeStyle' => true,
192
                'type' => 'color',
193
            ],
194
            'separatorButton' => [
195
                'group' => 'design',
196
                'label' => esc_html_x('Load More Button', 'admin-text', 'site-reviews'),
197
                'tab' => 'content',
198
                'themeStyle' => true,
199
                'type' => 'separator',
200
            ],
201
            'styleButtonSize' => [
202
                'group' => 'design',
203
                'inline' => true,
204
                'label' => esc_html_x('Size', 'admin-text', 'site-reviews'),
205
                'options' => $this->control_options['buttonSizes'] ?? [],
206
                'placeholder' => esc_html_x('Default', 'admin-text', 'site-reviews'),
207
                'tab' => 'content',
208
                'themeStyle' => true,
209
                'type' => 'select',
210
            ],
211
            'styleButtonStyle' => [
212
                'default' => 'primary',
213
                'group' => 'design',
214
                'inline' => true,
215
                'label' => esc_html_x('Style', 'admin-text', 'site-reviews'),
216
                'options' => $this->control_options['styles'] ?? [],
217
                'placeholder' => esc_html_x('None', 'admin-text', 'site-reviews'),
218
                'tab' => 'content',
219
                'themeStyle' => true,
220
                'type' => 'select',
221
            ],
222
            'styleButtonBackgroundColor' => [
223
                'css' => [
224
                    [
225
                        'selector' => '.bricks-button',
226
                        'property' => 'background-color',
227
                    ],
228
                ],
229
                'group' => 'design',
230
                'label' => esc_html_x('Background', 'admin-text', 'site-reviews'),
231
                'tab' => 'content',
232
                'themeStyle' => true,
233
                'type' => 'color',
234
            ],
235
            'styleButtonBorder' => [
236
                'css' => [
237
                    [
238
                        'selector' => '.bricks-button',
239
                        'property' => 'border',
240
                    ],
241
                ],
242
                'group' => 'design',
243
                'label' => esc_html_x('Border', 'admin-text', 'site-reviews'),
244
                'tab' => 'content',
245
                'themeStyle' => true,
246
                'type' => 'border',
247
            ],
248
            'styleButtonTypography' => [
249
                'css' => [
250
                    [
251
                        'selector' => '.bricks-button',
252
                        'property' => 'font',
253
                    ],
254
                ],
255
                'group' => 'design',
256
                'label' => esc_html_x('Typography', 'admin-text', 'site-reviews'),
257
                'tab' => 'content',
258
                'themeStyle' => true,
259
                'type' => 'typography',
260
            ],
261
        ];
262
        return $config;
263
    }
264
265
    public function render()
266
    {
267
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
268
            $this->render_element_placeholder([
269
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
270
            ]);
271
            return;
272
        }
273
        parent::render();
274
    }
275
276
    public static function shortcodeClass(): string
277
    {
278
        return SiteReviewsShortcode::class;
279
    }
280
}
281