PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.14.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.14.0
2.14.0 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 All 81 releases
ablocks / includes / blocks / academy-courses / block.php

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

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