PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 3.1.4
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v3.1.4
3.1.4 3.0.8 3.0.9 3.1.0 3.1.2 3.1.3 3.0.7 3.0.5 3.0.4 3.0.3 3.0.2 trunk 1.5.0 1.5.1 1.5.2 1.6.1 1.6.2 1.6.3 1.6.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 All 93 releases
← All changes | loader.php +332 -258 2.0.33.1.4 View file →
@@ -4,338 +4,412 @@
4 4
5 5 use Elementor\Plugin;
6 6 use Elementor\Core\Kits\Documents\Kit;
7 7 use UltimateStoreKit\Manager;
8 +use UltimateStoreKit\Admin\Dashboard;
8 9
9 -if (!defined('ABSPATH')) exit; // Exit if accessed directly
10 +if (!defined('ABSPATH'))
11 + exit; // Exit if accessed directly
10 12
11 13 /**
12 14 * Main class for element pack
13 15 */
14 16 class Ultimate_Store_Kit_Loader {
15 - /**
16 - * @var Ultimate_Store_Kit_Loader
17 - */
18 - private static $_instance;
17 + /**
18 + * @var Ultimate_Store_Kit_Loader
19 + */
20 + private static $_instance;
19 21
20 - /**
21 - * @var Manager
22 - */
23 - private $_modules_manager;
22 + /**
23 + * @var Manager
24 + */
25 + private $_modules_manager;
24 26
25 - private $classes_aliases = [
26 - 'UltimateStoreKit\Modules\PanelPostsControl\Module' => 'UltimateStoreKit\Modules\QueryControl\Module',
27 - 'UltimateStoreKit\Modules\PanelPostsControl\Controls\Group_Control_Posts' => 'UltimateStoreKit\Modules\QueryControl\Controls\Group_Control_Posts',
28 - 'UltimateStoreKit\Modules\PanelPostsControl\Controls\Query' => 'UltimateStoreKit\Modules\QueryControl\Controls\Query',
29 - ];
27 + private $classes_aliases = [
28 + 'UltimateStoreKit\Modules\PanelPostsControl\Module' => 'UltimateStoreKit\Modules\QueryControl\Module',
29 + 'UltimateStoreKit\Modules\PanelPostsControl\Controls\Group_Control_Posts' => 'UltimateStoreKit\Modules\QueryControl\Controls\Group_Control_Posts',
30 + 'UltimateStoreKit\Modules\PanelPostsControl\Controls\Query' => 'UltimateStoreKit\Modules\QueryControl\Controls\Query',
31 + ];
30 32
31 - public $elements_data = [
32 - 'sections' => [],
33 - 'columns' => [],
34 - 'widgets' => [],
35 - ];
33 + public $elements_data = [
34 + 'sections' => [],
35 + 'columns' => [],
36 + 'widgets' => [],
37 + ];
36 38
37 - /**
38 - * @return string
39 - * @deprecated
40 - *
41 - */
42 - public function get_version() {
43 - return BDTUSK_VER;
44 - }
39 + /**
40 + * @return string
41 + * @deprecated
42 + *
43 + */
44 + public function get_version() {
45 + return BDTUSK_VER;
46 + }
45 47
46 - /**
47 - * return active theme
48 - */
49 - public function get_theme() {
50 - return wp_get_theme();
51 - }
48 + /**
49 + * return active theme
50 + */
51 + public function get_theme() {
52 + return wp_get_theme();
53 + }
52 54
53 - /**
54 - * Throw error on object clone
55 - *
56 - * The whole idea of the singleton design pattern is that there is a single
57 - * object therefore, we don't want the object to be cloned.
58 - *
59 - * @return void
60 - * @since 1.0.0
61 - */
62 - public function __clone() {
63 - // Cloning instances of the class is forbidden
64 - _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin’ huh?', 'ultimate-store-kit'), '1.6.0');
65 - }
55 + /**
56 + * Throw error on object clone
57 + *
58 + * The whole idea of the singleton design pattern is that there is a single
59 + * object therefore, we don't want the object to be cloned.
60 + *
61 + * @return void
62 + * @since 1.0.0
63 + */
64 + public function __clone() {
65 + // Cloning instances of the class is forbidden
66 + _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin’ huh?', 'ultimate-store-kit'), '1.6.0');
67 + }
66 68
67 - /**
68 - * Disable unserializing of the class
69 - *
70 - * @return void
71 - * @since 1.0.0
72 - */
73 - public function __wakeup() {
74 - // Unserializing instances of the class is forbidden
75 - _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin’ huh?', 'ultimate-store-kit'), '1.6.0');
76 - }
69 + /**
70 + * Disable unserializing of the class
71 + *
72 + * @return void
73 + * @since 1.0.0
74 + */
75 + public function __wakeup() {
76 + // Unserializing instances of the class is forbidden
77 + _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin’ huh?', 'ultimate-store-kit'), '1.6.0');
78 + }
77 79
78 - /**
79 - * @return Plugin
80 - */
80 + /**
81 + * @return Plugin
82 + */
81 83
82 - public static function elementor() {
83 - return Plugin::$instance;
84 - }
84 + public static function elementor() {
85 + return Plugin::$instance;
86 + }
85 87
86 - /**
87 - * @return Ultimate_Store_Kit_Loader
88 - */
89 - public static function instance() {
90 - if (is_null(self::$_instance)) {
91 - self::$_instance = new self();
92 - }
88 + /**
89 + * @return Ultimate_Store_Kit_Loader
90 + */
91 + public static function instance() {
92 + if (is_null(self::$_instance)) {
93 + self::$_instance = new self();
94 + }
93 95
94 - do_action('bdthemes_ultimate_store_kit/init');
95 - return self::$_instance;
96 - }
96 + do_action('bdthemes_ultimate_store_kit/init');
97 + return self::$_instance;
98 + }
97 99
98 100
99 - /**
100 - * we loaded module manager + admin php from here
101 - * @return [type] [description]
102 - */
103 - private function _includes() {
101 + /**
102 + * we loaded module manager + admin php from here
103 + * @return [type] [description]
104 + */
105 + private function _includes() {
104 106
105 - require_once BDTUSK_ADMIN_PATH . 'module-settings.php';
106 - // ========================
107 - // Helper for global usec
108 - //==========================
109 - require(BDTUSK_PATH . 'base/support/helpers.php');
110 - //===========================
111 - // WISHLIST
112 - //===========================
113 - require(BDTUSK_INC_PATH . 'wishlist-compare.php');
114 - //===========================
115 - // WISHLIST
116 - //===========================
107 + // require_once BDTUSK_ADMIN_PATH . 'module-settings.php';
108 + // ========================
109 + // Helper for global usec
110 + //==========================
111 + require(BDTUSK_PATH . 'base/support/helpers.php');
112 + //===========================
113 + // WISHLIST
114 + //===========================
115 + require(BDTUSK_INC_PATH . 'wishlist-compare.php');
116 + //===========================
117 + // WISHLIST
118 + //===========================
117 119
118 120
119 - // all widgets control from here
120 - // require BDTUSK_INC_PATH . 'global-controls.php';
121 - require BDTUSK_INC_PATH . 'modules-manager.php';
122 - // Dynamic Select control
123 - // require BDTUSK_INC_PATH . 'controls/group-query/group-control-query.php';
124 - require BDTUSK_INC_PATH . 'controls/select-input/dynamic-select-input-module.php';
125 - require BDTUSK_INC_PATH . 'controls/select-input/dynamic-select.php';
121 + // all widgets control from here
122 + // require BDTUSK_INC_PATH . 'global-controls.php';
123 + require BDTUSK_INC_PATH . 'modules-manager.php';
124 + // Dynamic Select control
125 + // require BDTUSK_INC_PATH . 'controls/group-query/group-control-query.php';
126 + require BDTUSK_INC_PATH . 'controls/select-input/dynamic-select-input-module.php';
127 + require BDTUSK_INC_PATH . 'controls/select-input/dynamic-select.php';
126 128
127 129
128 - require_once 'includes/modal/modal-settings.php';
130 + require_once 'includes/modal/modal-settings.php';
129 131
130 132
131 - //GLOBAL CONTROLS
132 - require_once BDTUSK_PATH . 'traits/global-widget-controls.php';
133 - require_once BDTUSK_PATH . 'traits/global-widget-template.php';
133 + //GLOBAL CONTROLS
134 + require_once BDTUSK_PATH . 'traits/global-widget-controls.php';
135 + require_once BDTUSK_PATH . 'traits/global-widget-template.php';
134 136
137 + // GRID TEMPLATES
138 + require_once BDTUSK_PATH . 'templates/shiny-grid.php';
139 + require_once BDTUSK_PATH . 'templates/florence-grid.php';
140 + require_once BDTUSK_PATH . 'templates/glossy-grid.php';
141 + if (class_exists('woocommerce')) {
142 + require_once BDTUSK_PATH . 'includes/builder/loading-builder.php';
143 + }
144 + }
135 145
136 - if (class_exists('woocommerce')) {
137 - require_once BDTUSK_PATH . 'includes/builder/loading-builder.php';
138 - }
146 + /**
147 + * Autoloader function for all classes files
148 + * @param [type] string
149 + * @return [type] [description]
150 + */
151 + public function autoload($class) {
152 + if (0 !== strpos($class, __NAMESPACE__)) {
153 + return;
154 + }
139 155
140 - if (is_admin()) {
141 - if (!defined('BDTUSK_CH')) {
156 + $has_class_alias = isset($this->classes_aliases[$class]);
142 157
143 - // Admin settings controller
144 - require(BDTUSK_ADM_PATH . 'class-settings-api.php');
158 + // Backward Compatibility: Save old class name for set an alias after the new class is loaded
159 + if ($has_class_alias) {
160 + $class_alias_name = $this->classes_aliases[$class];
161 + $class_to_load = $class_alias_name;
162 + } else {
163 + $class_to_load = $class;
164 + }
145 165
146 - require(BDTUSK_ADM_PATH . 'admin.php');
147 - // element pack admin settings here
148 - require(BDTUSK_ADM_PATH . 'admin-settings.php');
166 + if (!class_exists($class_to_load)) {
167 + $filename = strtolower(
168 + preg_replace(
169 + ['/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/'],
170 + ['', '$1-$2', '-', DIRECTORY_SEPARATOR],
171 + $class_to_load
172 + )
173 + );
174 + $filename = BDTUSK_PATH . $filename . '.php';
149 175
150 - // Load admin class for admin related content process
151 - new Admin();
152 - }
153 - }
154 - }
176 + if (is_readable($filename)) {
177 + include($filename);
178 + }
179 + }
155 180
156 - /**
157 - * Autoloader function for all classes files
158 - * @param [type] string
159 - * @return [type] [description]
160 - */
161 - public function autoload($class) {
162 - if (0 !== strpos($class, __NAMESPACE__)) {
163 - return;
164 - }
181 + if ($has_class_alias) {
182 + class_alias($class_alias_name, $class);
183 + }
184 + }
165 185
166 - $has_class_alias = isset($this->classes_aliases[$class]);
186 + /**
187 + * Register all script that need for any specific widget on call basis.
188 + * @return [type] [description]
189 + */
190 + public function register_site_scripts() {
191 + wp_register_script('ultimate-store-kit-datatables', BDTUSK_ASSETS_URL . 'vendor/js/datatables.js', [], '1.0.0', true);
192 + wp_register_script('ultimate-store-kit-micromodal', BDTUSK_ASSETS_URL . 'vendor/js/micromodal.js', [], '1.0.0', true);
193 + wp_register_script('usk-accordion', BDTUSK_ASSETS_URL . 'vendor/js/accordion.js', [], '1.0.0', true);
167 194
168 - // Backward Compatibility: Save old class name for set an alias after the new class is loaded
169 - if ($has_class_alias) {
170 - $class_alias_name = $this->classes_aliases[$class];
171 - $class_to_load = $class_alias_name;
172 - } else {
173 - $class_to_load = $class;
174 - }
195 + if (ultimate_store_kit_is_widget_enabled('image-hotspot')) {
196 + wp_register_script('ultimate-store-kit-popper', BDTUSK_ASSETS_URL . 'vendor/js/popper.min.js', ['jquery'], BDTUSK_VER, true);
197 + wp_register_script('ultimate-store-kit-tippyjs', BDTUSK_ASSETS_URL . 'vendor/js/tippy.all.min.js', ['jquery'], BDTUSK_VER, true);
198 + }
199 + }
175 200
176 - if (!class_exists($class_to_load)) {
177 - $filename = strtolower(
178 - preg_replace(
179 - ['/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/'],
180 - ['', '$1-$2', '-', DIRECTORY_SEPARATOR],
181 - $class_to_load
182 - )
183 - );
184 - $filename = BDTUSK_PATH . $filename . '.php';
201 + public function register_site_styles() {
202 + $direction_suffix = is_rtl() ? '.rtl' : '';
203 + wp_register_style('usk-all-styles', BDTUSK_URL . 'assets/css/all-styles' . $direction_suffix . '.css', [], BDTUSK_VER);
204 + wp_register_style('usk-font', BDTUSK_URL . 'assets/css/font' . $direction_suffix . '.css', [], BDTUSK_VER);
185 205
186 - if (is_readable($filename)) {
187 - include($filename);
188 - }
189 - }
206 + if (ultimate_store_kit_is_widget_enabled('image-hotspot')) {
207 + wp_register_style('ultimate-store-kit-tippy', BDTUSK_URL . 'assets/css/tippy' . $direction_suffix . '.css', [], BDTUSK_VER);
208 + }
209 + }
190 210
191 - if ($has_class_alias) {
192 - class_alias($class_alias_name, $class);
193 - }
194 - }
211 + /**
212 + * Loading site related style from here.
213 + * @return [type] [description]
214 + */
215 + public function enqueue_site_styles() {
195 216
196 - /**
197 - * Register all script that need for any specific widget on call basis.
198 - * @return [type] [description]
199 - */
200 - public function register_site_scripts() {
201 - wp_register_script('datatables', BDTUSK_ASSETS_URL . 'vendor/js/datatables.min.js', [], '1.0.0', true);
202 - wp_register_script('micromodal', BDTUSK_ASSETS_URL . 'vendor/js/micromodal.min.js', [], '1.0.0', true);
203 - wp_register_script('usk-accordion', BDTUSK_ASSETS_URL . 'vendor/js/usk-accordion.min.js', [], '1.0.0', true);
204 - }
217 + $direction_suffix = is_rtl() ? '.rtl' : '';
205 218
206 - public function register_site_styles() {
207 - $direction_suffix = is_rtl() ? '.rtl' : '';
208 - wp_register_style('usk-all-styles', BDTUSK_URL . 'assets/css/usk-all-styles' . $direction_suffix . '.css', [], BDTUSK_VER);
209 - wp_register_style('usk-font', BDTUSK_URL . 'assets/css/usk-font' . $direction_suffix . '.css', [], BDTUSK_VER);
210 - }
219 + wp_register_style('usk-site', BDTUSK_ASSETS_URL . 'css/site' . $direction_suffix . '.css', [], BDTUSK_VER);
220 + // The Product Table widget lists this as a style dependency and the file has
221 + // always shipped, but it was never registered: the widget was silently
222 + // relying on another plugin registering a "datatables" stylesheet.
223 + wp_register_style('ultimate-store-kit-datatables', BDTUSK_ASSETS_URL . 'vendor/css/datatables.css', [], BDTUSK_VER);
224 + wp_register_style('ultimate-store-kit-slick-modal', BDTUSK_ASSETS_URL . 'vendor/css/slickmodal.css', [], BDTUSK_VER);
225 + wp_register_style('ultimate-store-kit-toolslide', BDTUSK_ASSETS_URL . 'vendor/css/toolslide.css', [], BDTUSK_VER);
211 226
212 - /**
213 - * Loading site related style from here.
214 - * @return [type] [description]
215 - */
216 - public function enqueue_site_styles() {
227 + wp_enqueue_style('usk-site');
228 + wp_enqueue_style('ultimate-store-kit-slick-modal');
229 + wp_enqueue_style('ultimate-store-kit-toolslide');
230 + }
217 231
218 - $direction_suffix = is_rtl() ? '.rtl' : '';
219 232
220 - wp_enqueue_style('usk-site', BDTUSK_ASSETS_URL . 'css/usk-site' . $direction_suffix . '.css', [], BDTUSK_VER);
221 - wp_enqueue_style('slick-modal', BDTUSK_ASSETS_URL . 'vendor/css/slickmodal.css', [], BDTUSK_VER);
222 - wp_enqueue_style('toolslide-css', BDTUSK_ASSETS_URL . 'vendor/css/toolslide.css', [], BDTUSK_VER);
223 - }
233 + /**
234 + * Loading site related script that needs all time such as uikit.
235 + * @return [type] [description]
236 + */
237 + public function enqueue_site_scripts() {
224 238
239 + wp_register_script('usk-core', BDTUSK_ASSETS_URL . 'js/core.js', ['jquery'], BDTUSK_VER, true); // tooltip file should be separate
240 + wp_register_script('usk-site', BDTUSK_ASSETS_URL . 'js/site.js', ['jquery'], BDTUSK_VER, true); // tooltip file should be separate
241 + wp_register_script('ultimate-store-kit-slick-modal', BDTUSK_ASSETS_URL . 'vendor/js/jquery.slickmodal.js', ['jquery'], BDTUSK_VER, true); // tooltip file should be separate
242 + wp_register_script('ultimate-store-kit-toolslide', BDTUSK_ASSETS_URL . 'vendor/js/toolslide.js', [], BDTUSK_VER, true); // tooltip file should be separate
225 243
226 - /**
227 - * Loading site related script that needs all time such as uikit.
228 - * @return [type] [description]
229 - */
230 - public function enqueue_site_scripts() {
244 + wp_enqueue_script('usk-core');
245 + // wp_enqueue_script('usk-site');
246 + wp_enqueue_script('ultimate-store-kit-slick-modal');
247 + wp_enqueue_script('ultimate-store-kit-toolslide');
231 248
232 - wp_enqueue_script('usk-core', BDTUSK_ASSETS_URL . 'js/usk-core.min.js', ['jquery', 'elementor-frontend'], BDTUSK_VER, true); // tooltip file should be separate
233 - wp_enqueue_script('usk-site', BDTUSK_ASSETS_URL . 'js/usk-site.min.js', ['jquery', 'elementor-frontend'], BDTUSK_VER, true); // tooltip file should be separate
234 - wp_enqueue_script('slick-modal', BDTUSK_ASSETS_URL . 'vendor/js/jquery.slickmodal.min.js', ['jquery', 'elementor-frontend'], BDTUSK_VER, true); // tooltip file should be separate
235 - wp_enqueue_script('toolslide-js', BDTUSK_ASSETS_URL . 'vendor/js/toolslide.min.js', ['elementor-frontend'], BDTUSK_VER, true); // tooltip file should be separate
249 + wp_localize_script('usk-core', 'ultimate_store_kit_ajax_config', array(
250 + 'ajaxurl' => admin_url('admin-ajax.php'),
251 + // Only consumed for logged-in requests — see WishlistCompare::verify_request().
252 + 'nonce' => wp_create_nonce('usk_wishlist_compare'),
253 + ));
254 + }
236 255
237 - wp_localize_script('usk-site', 'ultimate_store_kit_ajax_config', array(
238 - 'ajaxurl' => admin_url('admin-ajax.php'),
239 - ));
240 - }
256 + public function enqueue_editor_scripts() {
241 257
242 - public function enqueue_editor_scripts() {
258 + wp_register_script('usk-editor', BDTUSK_ASSETS_URL . 'js/editor.js', ['backbone-marionette', 'elementor-common-modules', 'elementor-editor-modules',], BDTUSK_VER, true);
243 259
244 - wp_enqueue_script('usk-editor', BDTUSK_ASSETS_URL . 'js/usk-editor.min.js', ['backbone-marionette', 'elementor-common-modules', 'elementor-editor-modules',], BDTUSK_VER, true);
260 + wp_enqueue_script('usk-editor');
245 261
246 - $_is_usk_pro_activated = false;
247 - if (function_exists('usk_license_validation') && true === usk_license_validation()) {
248 - $_is_usk_pro_activated = true;
249 - }
262 + $ultimate_store_kit_is_pro_activated = false;
263 + if (function_exists('ultimate_store_kit_license_validation') && true === ultimate_store_kit_license_validation()) {
264 + $ultimate_store_kit_is_pro_activated = true;
265 + }
250 266
251 - $localize_data = [
252 - 'pro_installed' => _is_usk_pro_activated(),
253 - 'pro_license_activated' => $_is_usk_pro_activated,
254 - 'promotional_widgets' => [],
255 - ];
267 + $localize_data = [
268 + 'pro_installed' => ultimate_store_kit_is_pro_activated(),
269 + 'pro_license_activated' => $ultimate_store_kit_is_pro_activated,
270 + 'promotional_widgets' => [],
271 + ];
256 272
257 - if (!$_is_usk_pro_activated) {
258 - $pro_widget_map = new \UltimateStoreKit\Includes\Pro_Widget_Map();
259 - $localize_data['promotional_widgets'] = $pro_widget_map->get_pro_widget_map();
260 - }
273 + if (!$ultimate_store_kit_is_pro_activated) {
274 + $pro_widget_map = new \UltimateStoreKit\Includes\Pro_Widget_Map();
275 + $localize_data['promotional_widgets'] = $pro_widget_map->get_pro_widget_map();
276 + }
261 277
262 - wp_localize_script('usk-editor', 'UltimateStoreKitConfigEditor', $localize_data);
263 - }
278 + wp_localize_script('usk-editor', 'UltimateStoreKitConfigEditor', $localize_data);
279 + }
264 280
265 - public function enqueue_admin_scripts() {
266 - wp_enqueue_script('usk-admin', BDTUSK_ASSETS_URL . 'js/usk-admin.min.js', ['jquery'], BDTUSK_VER, true);
267 - }
281 + public function enqueue_admin_scripts() {
282 + wp_register_script('usk-admin', BDTUSK_ASSETS_URL . 'js/admin.js', ['jquery'], BDTUSK_VER, true);
283 + wp_enqueue_script('usk-admin');
284 + }
268 285
269 - public function enqueue_editor_styles() {
270 - $direction_suffix = is_rtl() ? '.rtl' : '';
286 + public function enqueue_editor_styles() {
287 + $direction_suffix = is_rtl() ? '.rtl' : '';
271 288
272 - wp_enqueue_style('usk-editor', BDTUSK_ASSETS_URL . 'css/usk-editor' . $direction_suffix . '.css', '', BDTUSK_VER);
273 - wp_enqueue_style('usk-font', BDTUSK_ASSETS_URL . 'css/usk-font' . $direction_suffix . '.css', [], BDTUSK_VER);
274 - }
289 + wp_register_style('usk-editor', BDTUSK_ASSETS_URL . 'css/editor' . $direction_suffix . '.css', [], BDTUSK_VER);
290 + wp_register_style('usk-font', BDTUSK_ASSETS_URL . 'css/font' . $direction_suffix . '.css', [], BDTUSK_VER);
275 291
292 + wp_enqueue_style('usk-editor');
293 + wp_enqueue_style('usk-font');
294 + }
276 295
277 296
278 - public function ultimate_store_kit_init() {
279 - $this->_modules_manager = new Manager();
280 - $this->ultimate_store_kit_modal_settings_init();
281 - do_action('bdthemes_ultimate_store_kit/init');
282 - }
283 297
284 - /**
285 - * initialize the category
286 - * @return [type] [description]
287 - */
288 - public function ultimate_store_kit_category_register() {
298 + public function ultimate_store_kit_init() {
299 + $this->_modules_manager = new Manager();
300 + $this->ultimate_store_kit_modal_settings_init();
301 + do_action('bdthemes_ultimate_store_kit/init');
302 + }
289 303
290 - $elementor = Plugin::$instance;
304 + /**
305 + * initialize the category
306 + * @return [type] [description]
307 + */
308 + public function ultimate_store_kit_category_register() {
291 309
292 - // Add element category in panel
293 - $elementor->elements_manager->add_category('ultimate-store-kit-single', ['title' => 'Ultimate Store Kit (Single)', 'icon' => 'font']);
294 - $elementor->elements_manager->add_category(BDTUSK_SLUG, ['title' => BDTUSK_TITLE, 'icon' => 'font']);
295 - }
310 + $elementor = Plugin::$instance;
296 311
297 - private function setup_hooks() {
298 - add_action('elementor/elements/categories_registered', [$this, 'ultimate_store_kit_category_register']);
299 - add_action('elementor/init', [$this, 'ultimate_store_kit_init']);
300 - add_action('elementor/editor/after_enqueue_styles', [$this, 'enqueue_editor_styles']);
301 - add_action('elementor/frontend/before_register_styles', [$this, 'register_site_styles']);
302 - add_action('elementor/frontend/before_register_scripts', [$this, 'register_site_scripts']);
303 - // add_action('elementor/preview/enqueue_styles', [$this, 'enqueue_preview_styles']);
304 - add_action('elementor/editor/after_enqueue_scripts', [$this, 'enqueue_editor_scripts']);
305 - add_action('elementor/frontend/after_register_styles', [$this, 'enqueue_site_styles']);
306 - add_action('elementor/frontend/before_enqueue_scripts', [$this, 'enqueue_site_scripts']);
307 - add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_scripts']);
308 - }
312 + $new_category = [
313 + 'ultimate-store-kit-single' => [
314 + 'title' => 'Ultimate Store Kit (Single)',
315 + 'icon' => 'font',
316 + ],
317 + 'ultimate-store-kit-my-account' => [
318 + 'title' => 'Ultimate Store Kit (Account)',
319 + 'icon' => 'font',
320 + ],
321 + 'ultimate-store-kit-checkout' => [
322 + 'title' => 'Ultimate Store Kit (Checkout)',
323 + 'icon' => 'font',
324 + 'active' => false,
325 + ],
326 + 'ultimate-store-kit-order-thankyou' => [
327 + 'title' => 'Ultimate Store Kit (ThankYou)',
328 + 'icon' => 'font',
329 + 'active' => false,
330 + ],
331 + ];
309 332
310 - public function ultimate_store_kit_modal_settings_init() {
311 - require 'includes/modal/modal-controls.php';
312 - add_action('elementor/kit/register_tabs', function (Kit $kit) {
313 - $kit->register_tab('ultimate-store-kit-modal', Includes\Settings\Settings_Modal::class);
314 - }, 1, 40);
315 - }
333 + $existing_categories = $elementor->elements_manager->get_categories();
334 + $merged_categories = $new_category + $existing_categories;
316 335
336 + /**
337 + * Override categories using reflection (since it's private)
338 + */
339 + $reflection = new \ReflectionClass($elementor->elements_manager);
340 + $property = $reflection->getProperty('categories');
341 + // $property->setAccessible(true);
342 + $property->setValue($elementor->elements_manager, $merged_categories);
317 343
318 344
319 - /**
320 - * Ultimate_Store_Kit_Loader constructor.
321 - */
322 - private function __construct() {
323 - // Register class automatically
324 - spl_autoload_register([$this, 'autoload']);
325 - // Include some backend files
326 - $this->_includes();
345 + $elementor->elements_manager->add_category(BDTUSK_SLUG, ['title' => BDTUSK_TITLE, 'icon' => 'font']);
346 + }
327 347
328 - // Finally hooked up all things here
329 - $this->setup_hooks();
330 - }
348 + /**
349 + * Setup all hooks here
350 + * @return [type] [description]
351 + */
352 + private function setup_hooks() {
353 + add_filter('body_class', [$this, 'add_body_classes']);
354 + add_action('elementor/elements/categories_registered', [$this, 'ultimate_store_kit_category_register'], 1, 1);
355 + add_action('elementor/init', [$this, 'ultimate_store_kit_init']);
356 + add_action('elementor/editor/after_enqueue_styles', [$this, 'enqueue_editor_styles']);
357 +
358 + add_action('wp_enqueue_scripts', [$this, 'register_site_styles'], 99999);
359 + add_action('wp_enqueue_scripts', [$this, 'register_site_scripts'], 99999);
360 + add_action('wp_enqueue_scripts', [$this, 'enqueue_site_styles'], 99999);
361 + add_action('wp_enqueue_scripts', [$this, 'enqueue_site_scripts'], 99999);
362 +
363 + add_action('elementor/editor/after_enqueue_scripts', [$this, 'enqueue_editor_scripts']);
364 + add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_scripts']);
365 + }
366 +
367 +
368 + public function add_body_classes($classes) {
369 + $single_page_checkout_classes = ['ultimate-store-kit'];
370 + return is_array($classes)
371 + ? array_merge($classes, $single_page_checkout_classes)
372 + : $classes . ' ' . implode(' ', $single_page_checkout_classes);
373 + }
374 +
375 + public function ultimate_store_kit_modal_settings_init() {
376 + require 'includes/modal/modal-controls.php';
377 + add_action('elementor/kit/register_tabs', function (Kit $kit) {
378 + $kit->register_tab('ultimate-store-kit-modal', Includes\Settings\Settings_Modal::class);
379 + }, 1, 40);
380 + }
381 +
382 + public function init() {
383 + if (!defined('BDTUSK_CH') && is_admin()) {
384 + Dashboard::get_instance();
385 + }
386 + }
387 +
388 + /**
389 + * Ultimate_Store_Kit_Loader constructor.
390 + */
391 + private function __construct() {
392 + // Register class automatically
393 + spl_autoload_register([$this, 'autoload']);
394 + // Include some backend files
395 + $this->_includes();
396 +
397 + // Finally hooked up all things here
398 + $this->setup_hooks();
399 +
400 + // Register REST API routes unconditionally (outside is_admin)
401 + \UltimateStoreKit\API\Settings::get_instance();
402 +
403 + add_action('init', [$this, 'init']);
404 + }
331 405 }
332 406
333 407 if (!defined('BDTUSK_TESTS')) {
334 - // In tests we run the instance manually.
335 - Ultimate_Store_Kit_Loader::instance();
408 + // In tests we run the instance manually.
409 + Ultimate_Store_Kit_Loader::instance();
336 410 }
337 411
338 412 // handy fundtion for push data
339 413 function ultimate_store_kit_config() {
340 - return Ultimate_Store_Kit_Loader::instance();
414 + return Ultimate_Store_Kit_Loader::instance();
341 415 }