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
← All changes | includes/blocks/academy-courses/block.php +264 -0 1.0-beta3 → 2.14.0 View file →
@@ -1,0 +1,264 @@
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 +}