PluginProbe
Getwid – Gutenberg Blocks / 2.1.3
Getwid – Gutenberg Blocks v2.1.3
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 / content-slider.php

content-slider.php in Getwid – Gutenberg Blocks 2.1.3, at includes/blocks/content-slider.php

144 lines 2.8 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 ContentSlider extends AbstractBlock {
6
7 protected static $blockName = 'getwid/content-slider';
8 private $assetsAlreadyEnqueued = false;
9
10 public function __construct() {
11
12 parent::__construct( self::$blockName );
13
14 register_block_type(
15 'getwid/content-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 'slick',
37 getwid_get_plugin_url( 'vendors/slick/slick/slick.min.css' ),
38 [],
39 '1.9.0'
40 );
41
42 wp_register_style(
43 'slick-theme',
44 getwid_get_plugin_url( 'vendors/slick/slick/slick-theme.min.css' ),
45 [],
46 '1.9.0'
47 );
48 }
49 }
50
51 public function getLabel() {
52 return __('Content Slider', 'getwid');
53 }
54
55 public function block_frontend_styles($styles) {
56
57 //slick.min.css
58 if ( ! in_array( 'slick', $styles ) ) {
59 array_push( $styles, 'slick' );
60 }
61
62 //slick-theme.min.css
63 if ( ! in_array( 'slick-theme', $styles ) ) {
64 array_push( $styles, 'slick-theme' );
65 }
66
67 return $styles;
68 }
69
70 public function block_editor_scripts($scripts) {
71
72 //slick.min.js
73 if ( ! in_array( 'slick', $scripts ) ) {
74 array_push( $scripts, 'slick' );
75 }
76
77 return $scripts;
78 }
79
80 public function block_frontend_assets() {
81
82 if ( is_admin() ) {
83 return;
84 }
85
86 //slick.min.js
87 if ( ! wp_script_is( 'slick', 'enqueued' ) ) {
88 wp_enqueue_script('slick');
89 }
90
91 if ( FALSE == getwid()->assetsOptimization()->load_assets_on_demand() ) {
92 return;
93 }
94
95 add_filter( 'getwid/optimize/assets',
96 function ( $assets ) {
97 $assets[] = 'slick';
98 $assets[] = 'slick-theme';
99 $assets[] = getwid()->settings()->getPrefix() . '-blocks-common';
100
101 return $assets;
102 }
103 );
104
105 wp_enqueue_style( 'slick' );
106 wp_enqueue_style( 'slick-theme' );
107
108 add_filter( 'getwid/optimize/should_load_common_css', '__return_true' );
109
110 wp_enqueue_script(
111 self::$blockName,
112 getwid_get_plugin_url( 'assets/blocks/content-slider/frontend.js' ),
113 [ 'jquery', 'slick' ],
114 getwid()->settings()->getVersion(),
115 true
116 );
117
118 if ( ! $this->assetsAlreadyEnqueued ) {
119 $inline_script =
120 'var Getwid = Getwid || {};' .
121 'Getwid["isRTL"] = ' . json_encode( is_rtl() ) . ';';
122
123 wp_add_inline_script(
124 self::$blockName,
125 $inline_script,
126 'before'
127 );
128 }
129
130 $this->assetsAlreadyEnqueued = true;
131 }
132
133 public function render_callback( $attributes, $content ) {
134
135 $this->block_frontend_assets();
136
137 return $content;
138 }
139 }
140
141 getwid()->blocksManager()->addBlock(
142 new ContentSlider()
143 );
144