PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.9.1
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.9.1
2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 All 80 releases
ablocks / includes / blocks / academy-courses / block.php

block.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.9.1, at includes/blocks/academy-courses/block.php

265 lines 12.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Blocks\AcademyCourses;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Classes\BlockBaseAbstract;
9 use ABlocks\Classes\CssGenerator;
10 use ABlocks\Helper;
11 use ABlocks\Controls\Typography;
12 use ABlocks\Controls\Background;
13 use ABlocks\Controls\Border;
14 use ABlocks\Controls\Dimensions;
15
16 class Block extends BlockBaseAbstract {
17 protected $block_name = 'academy-courses';
18
19 public function build_css( $attributes ) {
20 $css_generator = new CssGenerator( $attributes, $this->block_name );
21
22 $course_category_desktop_css = $this->get_course_card_category_css( $attributes );
23 if ( ! empty( $attributes['category_color'] ) ) {
24 $course_category_desktop_css['color'] = $attributes['category_color'];
25 }
26 $css_generator->add_class_styles(
27 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__meta--categroy a',
28 $course_category_desktop_css,
29 $this->get_course_card_category_css( $attributes, 'Tablet' ),
30 $this->get_course_card_category_css( $attributes, 'Mobile' )
31 );
32
33 $course_category_desktop_hover_css = [];
34 if ( ! empty( $attributes['category_hover_color'] ) ) {
35 $course_category_desktop_hover_css['color'] = $attributes['category_hover_color'];
36 }
37 $css_generator->add_class_styles(
38 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__meta--categroy:hover a',
39 $course_category_desktop_hover_css,
40 );
41
42 $course_title_desktop_css = $this->get_course_card_title_css( $attributes );
43 if ( ! empty( $attributes['title_color'] ) ) {
44 $course_title_desktop_css['color'] = $attributes['title_color'];
45 }
46 $css_generator->add_class_styles(
47 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__title,
48 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__title a',
49 $course_title_desktop_css,
50 $this->get_course_card_title_css( $attributes, 'Tablet' ),
51 $this->get_course_card_title_css( $attributes, 'Mobile' )
52 );
53
54 $course_title_desktop_hover_css = [];
55 if ( ! empty( $attributes['title_hover_color'] ) ) {
56 $course_title_desktop_hover_css['color'] = $attributes['title_hover_color'];
57 }
58 $css_generator->add_class_styles(
59 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__title:hover,
60 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__title:hover a',
61 $course_title_desktop_hover_css,
62 );
63
64 $course_author_desktop_css = $this->get_course_card_title_css( $attributes );
65 if ( ! empty( $attributes['author_color'] ) ) {
66 $course_author_desktop_css['color'] = $attributes['author_color'];
67 }
68 $css_generator->add_class_styles(
69 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author,
70 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author .author,
71 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author .author a',
72 $course_author_desktop_css,
73 $this->get_course_card_author_css( $attributes, 'Tablet' ),
74 $this->get_course_card_author_css( $attributes, 'Mobile' )
75 );
76
77 $course_author_desktop_hover_css = [];
78 if ( ! empty( $attributes['author_hover_color'] ) ) {
79 $course_author_desktop_hover_css['color'] = $attributes['author_hover_color'];
80 }
81 $css_generator->add_class_styles(
82 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author:hover,
83 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author:hover .author,
84 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__author:hover .author a',
85 $course_author_desktop_hover_css,
86 );
87
88 $course_rating_desktop_css = $this->get_course_card_rating_css( $attributes );
89 if ( ! empty( $attributes['rating_color'] ) ) {
90 $course_rating_desktop_css['color'] = $attributes['rating_color'];
91 }
92 $css_generator->add_class_styles(
93 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating,
94 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating .academy-group-star,
95 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating .academy-group-star .academy-icon::before,
96 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating .academy-course__rating-count',
97 $course_rating_desktop_css,
98 $this->get_course_card_rating_css( $attributes, 'Tablet' ),
99 $this->get_course_card_rating_css( $attributes, 'Mobile' )
100 );
101
102 $course_rating_desktop_hover_css = [];
103 if ( ! empty( $attributes['rating_hover_color'] ) ) {
104 $course_rating_desktop_hover_css['color'] = $attributes['rating_hover_color'];
105 }
106 $css_generator->add_class_styles(
107 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating:hover,
108 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating:hover .academy-group-star,
109 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating:hover .academy-group-star .academy-icon::before,
110 {{WRAPPER}} .academy-courses--grid .academy-course .academy-course__rating:hover .academy-course__rating-count',
111 $course_rating_desktop_hover_css,
112 );
113
114 $course_price_css = $this->get_course_card_price_css( $attributes );
115 if ( ! empty( $attributes['price_color'] ) ) {
116 $course_price_css['color'] = $attributes['price_color'];
117 }
118 $css_generator->add_class_styles(
119 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__price',
120 $course_price_css,
121 $this->get_course_card_price_css( $attributes, 'Tablet' ),
122 $this->get_course_card_price_css( $attributes, 'Mobile' )
123 );
124
125 $course_price_hover_css = [];
126 if ( ! empty( $attributes['price_hover_color'] ) ) {
127 $course_price_hover_css['color'] = $attributes['price_hover_color'];
128 }
129 $css_generator->add_class_styles(
130 '{{WRAPPER}} .academy-courses--grid .academy-course .academy-course__price:hover',
131 $course_price_hover_css,
132 );
133
134 $css_generator->add_class_styles(
135 '{{WRAPPER}} .academy-courses--grid .academy-row .academy-course,
136 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course,
137 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course,
138 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course',
139 $this->get_course_card_css( $attributes ),
140 $this->get_course_card_css( $attributes, 'Tablet' ),
141 $this->get_course_card_css( $attributes, 'Mobile' )
142 );
143
144 $css_generator->add_class_styles(
145 '{{WRAPPER}} .academy-courses--grid .academy-row .academy-course:hover,
146 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course:hover,
147 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course:hover,
148 {{WRAPPER}} .academy-courses--grid .academy-row .academy-course:hover',
149 $this->get_course_card_hover_css( $attributes ),
150 $this->get_course_card_hover_css( $attributes, 'Tablet' ),
151 $this->get_course_card_hover_css( $attributes, 'Mobile' )
152 );
153
154 $css_generator->add_class_styles(
155 '{{WRAPPER}} .academy-courses--grid .academy-row .academy-course .academy-add-to-wishlist-btn',
156 $this->get_wish_icon_css( $attributes ),
157 $this->get_wish_icon_css( $attributes, 'Tablet' ),
158 $this->get_wish_icon_css( $attributes, 'Mobile' )
159 );
160
161 $css_generator->add_class_styles(
162 '{{WRAPPER}} .academy-courses--grid .academy-row .academy-course .academy-add-to-wishlist-btn:hover',
163 $this->get_wish_icon_hover_css( $attributes ),
164 $this->get_wish_icon_hover_css( $attributes, 'Tablet' ),
165 $this->get_wish_icon_hover_css( $attributes, 'Mobile' )
166 );
167
168 return $css_generator->generate_css();
169 }
170
171 public function get_course_card_category_css( $attributes, $device = '' ) {
172 $course_category_typography_css = ! empty( $attributes['cat_typography'] ) ? Typography::get_css( $attributes['cat_typography'], '', $device ) : array();
173 return $course_category_typography_css;
174 }
175
176 public function get_course_card_title_css( $attributes, $device = '' ) {
177 $course_title_typography_css = ! empty( $attributes['title_typography'] ) ? Typography::get_css( $attributes['title_typography'], '', $device ) : array();
178 return $course_title_typography_css;
179 }
180
181 public function get_course_card_author_css( $attributes, $device = '' ) {
182 $course_author_typography_css = ! empty( $attributes['author_typography'] ) ? Typography::get_css( $attributes['author_typography'], '', $device ) : array();
183 return $course_author_typography_css;
184 }
185
186 public function get_course_card_rating_css( $attributes, $device = '' ) {
187 $course_rating_typography_css = ! empty( $attributes['rating_typography'] ) ? Typography::get_css( $attributes['rating_typography'], '', $device ) : array();
188 return $course_rating_typography_css;
189 }
190
191 public function get_course_card_price_css( $attributes, $device = '' ) {
192 $course_price_typography_css = ! empty( $attributes['price_typography'] ) ? Typography::get_css( $attributes['price_typography'], '', $device ) : array();
193 return $course_price_typography_css;
194 }
195
196 public function get_wish_icon_css( $attributes, $device = '' ) {
197 $wish_icon_background_css = ! empty( $attributes['wish_icon_background'] ) ? Background::get_css( $attributes['wish_icon_background'], 'background', $device ) : array();
198 if ( ! empty( $attributes['wish_icon_color'] ) ) {
199 $wish_icon_background_css['color'] = $attributes['wish_icon_color'];
200 }
201 return $wish_icon_background_css;
202 }
203
204 public function get_wish_icon_hover_css( $attributes, $device = '' ) {
205 $wish_icon_background_css = ! empty( $attributes['wish_icon_background'] ) ? Background::get_hover_css( $attributes['wish_icon_background'], 'background', $device ) : array();
206 if ( ! empty( $attributes['wish_icon_hover_color'] ) ) {
207 $wish_icon_background_css['color'] = $attributes['wish_icon_hover_color'];
208 }
209 return $wish_icon_background_css;
210 }
211
212 public function get_course_card_css( $attributes, $device = '' ) {
213 $course_background_css = ! empty( $attributes['card_background'] ) ? Background::get_css( $attributes['card_background'], 'background', $device ) : array();
214 $course_border_css = ! empty( $attributes['card_border'] ) ? Border::get_css( $attributes['card_border'], '', $device ) : array();
215 $course_margin_css = ! empty( $attributes['card_margin'] ) ? Dimensions::get_css( $attributes['card_margin'], 'margin', $device ) : array();
216 $course_padding_css = ! empty( $attributes['card_padding'] ) ? Dimensions::get_css( $attributes['card_padding'], 'padding', $device ) : array();
217
218 return array_merge(
219 $course_background_css,
220 $course_border_css,
221 $course_margin_css,
222 $course_padding_css
223 );
224 }
225
226 public function get_course_card_hover_css( $attributes, $device = '' ) {
227 $course_background_hover_css = ! empty( $attributes['card_background'] ) ? Background::get_hover_css( $attributes['card_background'], 'background', $device ) : array();
228 $course_border_hover_css = ! empty( $attributes['card_border'] ) ? Border::get_hover_css( $attributes['card_border'], '', $device ) : array();
229 $course_margin_hover_css = ! empty( $attributes['card_hover_margin'] ) ? Dimensions::get_css( $attributes['card_hover_margin'], 'margin', $device ) : array();
230 $course_padding_hover_css = ! empty( $attributes['card_hover_padding'] ) ? Dimensions::get_css( $attributes['card_hover_padding'], 'padding', $device ) : array();
231
232 return array_merge(
233 $course_background_hover_css,
234 $course_border_hover_css,
235 $course_margin_hover_css,
236 $course_padding_hover_css
237 );
238 }
239
240
241
242
243
244 public function render_block_content( $attributes, $content, $block_instance ) {
245 $attr_array = [
246 'count' => Helper::get_attribute_value( $attributes, 'course_count' ),
247 'column_per_row' => Helper::get_attribute_value( $attributes, 'course_columns' ),
248 'has_pagination' => Helper::get_attribute_value( $attributes, 'show_pagination' ),
249 'course_level' => Helper::get_attribute_value( $attributes, 'difficulty_levels' ),
250 'price_type' => Helper::get_attribute_value( $attributes, 'price_types' ),
251 'orderby' => Helper::get_attribute_value( $attributes, 'order_by' ),
252 'order' => Helper::get_attribute_value( $attributes, 'course_order' ),
253 'ids' => Helper::get_attribute_value( $attributes, 'course_ids' ),
254 'exclude_ids' => Helper::get_attribute_value( $attributes, 'course_exclude_ids' ),
255 'category' => Helper::get_attribute_value( $attributes, 'course_categories' ),
256 'cat_not_in' => Helper::get_attribute_value( $attributes, 'course_exclude_categories' ),
257 'tag' => Helper::get_attribute_value( $attributes, 'course_tags' ),
258 'tag_not_in' => Helper::get_attribute_value( $attributes, 'course_exclude_tags' ),
259 ];
260 $shortcode = '[academy_courses ' . Helper::attr_shortcode( $attr_array ) . ']';
261 echo do_shortcode( $shortcode );
262 }
263
264 }
265