PluginProbe
Getwid – Gutenberg Blocks / 2.0.7
Getwid – Gutenberg Blocks v2.0.7
3.0.2 3.0.1 3.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.2.0 trunk 1.8.7 1.9.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9
getwid / includes / blocks / media-text-slider.php

media-text-slider.php in Getwid – Gutenberg Blocks 2.0.7, at includes/blocks/media-text-slider.php

166 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Getwid\Blocks;
4
5 class MediaTextSlider extends \Getwid\Blocks\AbstractBlock {
6
7 protected static $blockName = 'getwid/media-text-slider';
8 private $assetsAlreadyEnqueued = false;
9
10 public function __construct() {
11
12 parent::__construct( self::$blockName );
13
14 register_block_type(
15 'getwid/media-text-slider',
16 array(
17 'render_callback' => [ $this, 'render_callback' ]
18 )
19 );
20
21 if ( $this->isEnabled() ) {
22
23 add_filter( 'getwid/editor_blocks_js/dependencies', [ $this, 'block_editor_scripts'] );
24 add_filter( 'getwid/blocks_style_css/dependencies', [ $this, 'block_frontend_styles' ] );
25
26 //Register JS/CSS assets
27 wp_register_script(
28 'slick',
29 getwid_get_plugin_url( 'vendors/slick/slick/slick.min.js' ),
30 [ 'jquery' ],
31 '1.9.0',
32 true
33 );
34
35 wp_register_style(
36 'animate',
37 getwid_get_plugin_url( 'vendors/animate.css/animate.min.css' ),
38 [],
39 '3.7.0'
40 );
41
42 wp_register_style(
43 'slick',
44 getwid_get_plugin_url( 'vendors/slick/slick/slick.min.css' ),
45 [],
46 '1.9.0'
47 );
48
49 wp_register_style(
50 'slick-theme',
51 getwid_get_plugin_url( 'vendors/slick/slick/slick-theme.min.css' ),
52 [],
53 '1.9.0'
54 );
55 }
56 }
57
58 public function getLabel() {
59 return __('Media & Text Slider', 'getwid');
60 }
61
62 public function block_frontend_styles($styles) {
63
64 //slick.min.css
65 if ( ! in_array( 'slick', $styles ) ) {
66 array_push( $styles, 'slick' );
67 }
68
69 //slick-theme.min.css
70 if ( ! in_array( 'slick-theme', $styles ) ) {
71 array_push( $styles, 'slick-theme' );
72 }
73
74 return $styles;
75 }
76
77 public function block_editor_scripts($scripts) {
78
79 //slick.min.js
80 if ( ! in_array( 'slick', $scripts ) ) {
81 array_push( $scripts, 'slick' );
82 }
83
84 return $scripts;
85 }
86
87 public function block_frontend_assets() {
88
89 if ( is_admin() ) {
90 return;
91 }
92
93 //slick.min.js
94 if ( ! wp_script_is( 'slick', 'enqueued' ) ) {
95 wp_enqueue_script('slick');
96 }
97
98 //animate.min.css
99 if ( ! wp_style_is( 'animate', 'enqueued' ) ) {
100 wp_enqueue_style( 'animate' );
101 }
102
103 if ( FALSE == getwid()->assetsOptimization()->load_assets_on_demand() ) {
104 return;
105 }
106
107 $deps = [
108 'slick', 'slick-theme', 'animate'
109 ];
110
111 add_filter( 'getwid/optimize/assets',
112 function ( $assets ) {
113 $assets[] = 'slick';
114 $assets[] = 'slick-theme';
115 $assets[] = getwid()->settings()->getPrefix() . '-blocks-common';
116
117 return $assets;
118 }
119 );
120
121 add_filter( 'getwid/optimize/should_load_common_css', '__return_true' );
122
123 $rtl = is_rtl() ? '.rtl' : '';
124
125 wp_enqueue_style(
126 self::$blockName,
127 getwid_get_plugin_url( 'assets/blocks/media-text-slider/style' . $rtl . '.css' ),
128 $deps,
129 getwid()->settings()->getVersion()
130 );
131
132 wp_enqueue_script(
133 self::$blockName,
134 getwid_get_plugin_url( 'assets/blocks/media-text-slider/frontend.js' ),
135 [ 'jquery', 'slick' ],
136 getwid()->settings()->getVersion(),
137 true
138 );
139
140 if ( !$this->assetsAlreadyEnqueued ) {
141 $inline_script =
142 'var Getwid = Getwid || {};' .
143 'Getwid["isRTL"] = ' . json_encode( is_rtl() ) . ';';
144
145 wp_add_inline_script(
146 self::$blockName,
147 $inline_script,
148 'before'
149 );
150 }
151
152 $this->assetsAlreadyEnqueued = true;
153 }
154
155 public function render_callback( $attributes, $content ) {
156
157 $this->block_frontend_assets();
158
159 return $content;
160 }
161 }
162
163 getwid()->blocksManager()->addBlock(
164 new \Getwid\Blocks\MediaTextSlider()
165 );
166