PluginProbe ʕ •ᴥ•ʔ
Responsive Tabs For Elementor / trunk
Responsive Tabs For Elementor vtrunk
11.0.1 trunk 1.0.0 10.0.0 10.0.1 10.0.2 10.1.0 11.0.0 2.0.0 3.0.0 3.9.2 4.0.0 5.0.1 6.0.0 7.0.0 7.1.0 8.0.0 9.0.0 9.1.0 9.1.1 9.2.0 9.3.0 9.3.1 9.3.2
responsive-tabs-for-elementor / includes / class-responsive-tabs-assets.php
responsive-tabs-for-elementor / includes Last commit date
class-responsive-tabs-assets.php 4 weeks ago
class-responsive-tabs-assets.php
159 lines
1 <?php
2 /**
3 * Central asset registration for Responsive Tabs Elementor widgets.
4 *
5 * @package ResponsiveTabsForElementor
6 */
7
8 namespace ResponsiveTabsForElementor;
9
10 defined('ABSPATH') || exit;
11
12 /**
13 * Registers shared scripts/styles once and picks the correct frontend handler per Elementor version.
14 */
15 class Responsive_Tabs_Assets
16 {
17
18 const LEGACY_ELEMENTOR_VERSION = '3.5.0';
19
20 /**
21 * @var bool
22 */
23 private static $tabs_script_registered = false;
24
25 /**
26 * @var bool
27 */
28 private static $portfolio_script_registered = false;
29
30 /**
31 * Elementor 3.5+ exposes element settings to frontend handlers via elementorModules.
32 *
33 * @return bool
34 */
35 public static function uses_modern_handler()
36 {
37 return defined('ELEMENTOR_VERSION')
38 && version_compare(ELEMENTOR_VERSION, self::LEGACY_ELEMENTOR_VERSION, '>=');
39 }
40
41 /**
42 * @return bool
43 */
44 public static function is_legacy_elementor()
45 {
46 return !self::uses_modern_handler();
47 }
48
49 /**
50 * Swiper bundle for Parallax Tabs (and any widget that needs it).
51 */
52 public static function register_swiper()
53 {
54 $plugin_file = RESPONSIVE_TABS_FOR_ELEMENTOR;
55 $version = defined('RESPONSIVE_TABS_VERSION') ? RESPONSIVE_TABS_VERSION : '11.0.1';
56
57 if (!wp_style_is('swiper', 'registered')) {
58 wp_register_style(
59 'swiper',
60 plugins_url('/assets/libs/swiper-bundle.min.css', $plugin_file),
61 array(),
62 $version
63 );
64 }
65
66 if (!wp_script_is('swiper', 'registered')) {
67 wp_register_script(
68 'swiper',
69 plugins_url('/assets/libs/swiper-bundle.min.js', $plugin_file),
70 array(),
71 $version,
72 true
73 );
74 }
75 }
76
77 /**
78 * Register the shared responsive-tabs frontend handler (idempotent).
79 *
80 * @param string $direction_suffix Empty string or '-rtl'.
81 */
82 public static function register_tabs_handler($direction_suffix = '')
83 {
84 if (self::$tabs_script_registered) {
85 return;
86 }
87
88 self::$tabs_script_registered = true;
89
90 $plugin_file = RESPONSIVE_TABS_FOR_ELEMENTOR;
91 $version = defined('RESPONSIVE_TABS_VERSION') ? RESPONSIVE_TABS_VERSION : '11.0.1';
92 $deps = array('jquery');
93
94 if (self::uses_modern_handler()) {
95 self::register_swiper();
96 $deps[] = 'swiper';
97 $deps[] = 'elementor-frontend-modules';
98 $deps[] = 'elementor-frontend';
99 $handler_url = plugins_url(
100 '/assets/js/responsive-tabs-widget-handler' . $direction_suffix . '.min.js',
101 $plugin_file
102 );
103 } else {
104 $deps[] = 'elementor-frontend';
105 $handler_url = plugins_url(
106 '/assets/js/responsive-tabs-widget-old-elementor-handler' . $direction_suffix . '.min.js',
107 $plugin_file
108 );
109 }
110
111 wp_register_script(
112 'responsive-tabs',
113 $handler_url,
114 $deps,
115 $version,
116 true
117 );
118 }
119
120 /**
121 * Register portfolio tabs frontend handler (idempotent).
122 */
123 public static function register_portfolio_handler()
124 {
125 if (self::$portfolio_script_registered) {
126 return;
127 }
128
129 self::$portfolio_script_registered = true;
130
131 $plugin_file = RESPONSIVE_TABS_FOR_ELEMENTOR;
132 $version = defined('RESPONSIVE_TABS_VERSION') ? RESPONSIVE_TABS_VERSION : '11.0.1';
133 $deps = array('jquery');
134
135 if (self::uses_modern_handler()) {
136 $deps[] = 'elementor-frontend-modules';
137 $deps[] = 'elementor-frontend';
138 $handler_url = plugins_url(
139 '/assets/js/responsive-portfolio-tabs-widget-handler.min.js',
140 $plugin_file
141 );
142 } else {
143 $deps[] = 'elementor-frontend';
144 $handler_url = plugins_url(
145 '/assets/js/responsive-portfolio-tabs-widget-old-elementor-handler.min.js',
146 $plugin_file
147 );
148 }
149
150 wp_register_script(
151 'responsive-portfolio-tabs',
152 $handler_url,
153 $deps,
154 $version,
155 true
156 );
157 }
158 }
159