PluginProbe ʕ •ᴥ•ʔ
Element Pack – Widgets, Templates & Addons for Elementor / 5.7.0
Element Pack – Widgets, Templates & Addons for Elementor v5.7.0
8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.3 8.6.2 8.6.1 trunk 1.0 1.0.1 1.0.3 1.1.0 1.2.0 1.8.0 2.1.0 2.7.0 2.9.2 3.7.3 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.11.1 4.11.2 4.3.0 4.5.0 4.8.2 5.0.0 5.0.1 5.1.0 5.1.1 5.1.2 5.1.3 5.10.0 5.10.1 5.10.10 5.10.11 5.10.12 5.10.13 5.10.14 5.10.15 5.10.16 5.10.17 5.10.18 5.10.19 5.10.2 5.10.20 5.10.21 5.10.22 5.10.23 5.10.24 5.10.25 5.10.26 5.10.27 5.10.28 5.10.29 5.10.3 5.10.30 5.10.4 5.10.5 5.10.6 5.10.7 5.10.8 5.10.9 5.11.0 5.11.1 5.11.2 5.11.3 5.2.2 5.2.3 5.3.0 5.3.1 5.4.0 5.4.1 5.4.10 5.4.11 5.4.13 5.4.14 5.4.2 5.4.3 5.4.4 5.4.5 5.4.6 5.4.7 5.4.8 5.4.9 5.5.0 5.5.2 5.5.6 5.6.0 5.6.10 5.6.11 5.6.12 5.6.13 5.6.14 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 5.6.7 5.6.8 5.6.9 5.7.0 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.8.0 5.8.1 5.8.2 5.8.3 5.8.4 5.8.5 5.9.0 8.0.0 8.1.0 8.1.1 8.1.10 8.1.2 8.1.3 8.1.4 8.1.5 8.1.6 8.1.7 8.1.8 8.1.9 8.2.0 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3.0 8.3.1 8.3.10 8.3.11 8.3.12 8.3.13 8.3.14 8.3.15 8.3.16 8.3.17 8.3.18 8.3.19 8.3.2 8.3.3 8.3.4 8.3.5 8.3.6 8.3.7 8.3.8 8.3.9 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0
bdthemes-element-pack-lite / loader.php
bdthemes-element-pack-lite Last commit date
admin 1 year ago assets 1 year ago base 1 year ago dci 1 year ago includes 1 year ago languages 1 year ago modules 1 year ago traits 1 year ago bdthemes-element-pack-lite.php 1 year ago loader.php 1 year ago readme.txt 1 year ago
loader.php
661 lines
1 <?php
2
3 namespace ElementPack;
4
5 use Elementor\Plugin;
6 use ElementPack\Includes\Element_Pack_WPML;
7 use Elementor\Core\Kits\Documents\Kit;
8 use ElementPack\Includes\ElementPack_FB_Access_Token_Generator_Control;
9 use ElementPack\Includes\ElementPack_JSON_File_Upload_Control;
10 use ElementPack\Includes\SVG_Support;
11 use ElementPack\Includes\Pro_Widget_Map;
12
13 if (!defined('ABSPATH')) {
14 exit;
15 } // Exit if accessed directly
16
17 /**
18 * Main class for element pack
19 */
20 class Element_Pack_Loader {
21
22 /**
23 * @var Element_Pack_Loader
24 */
25 private static $_instance;
26 public $_modules_manager;
27
28 public $elements_data = [
29 'sections' => [],
30 'columns' => [],
31 'widgets' => [],
32 ];
33
34 private function get_upload_dir() {
35 return trailingslashit(wp_upload_dir()['basedir']) . 'element-pack/minified/';
36 }
37
38 private function get_upload_url() {
39 return trailingslashit(wp_upload_dir()['baseurl']) . 'element-pack/minified/';
40 }
41
42 /**
43 * @return string
44 * @deprecated
45 *
46 */
47 public function get_version() {
48 return BDTEP_VER;
49 }
50
51 /**
52 * return active theme
53 */
54 public function get_theme() {
55 return wp_get_theme();
56 }
57
58 /**
59 * Throw error on object clone
60 *
61 * The whole idea of the singleton design pattern is that there is a single
62 * object therefore, we don't want the object to be cloned.
63 *
64 * @return void
65 * @since 1.0.0
66 */
67 public function __clone() {
68 // Cloning instances of the class is forbidden
69 _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin&#8217; huh?', 'bdthemes-element-pack'), '1.6.0');
70 }
71
72 /**
73 * Disable unserializing of the class
74 *
75 * @return void
76 * @since 1.0.0
77 */
78 public function __wakeup() {
79 // Unserializing instances of the class is forbidden
80 _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin&#8217; huh?', 'bdthemes-element-pack'), '1.6.0');
81 }
82
83 /**
84 * @return Plugin
85 */
86
87 public static function elementor() {
88 return Plugin::$instance;
89 }
90
91 /**
92 * @return Element_Pack_Loader
93 */
94 public static function instance() {
95 if (is_null(self::$_instance)) {
96 self::$_instance = new self();
97 }
98
99 return self::$_instance;
100 }
101
102
103 /**
104 * we loaded module manager + admin php from here
105 * @return [type] [description]
106 */
107 private function _includes() {
108
109 $live_copy = element_pack_option('live-copy', 'element_pack_other_settings', 'off');
110 $template_library = element_pack_option('template-library', 'element_pack_other_settings', 'off');
111 $duplicator = element_pack_option('duplicator', 'element_pack_other_settings', 'off');
112
113 // Admin settings controller
114 require_once BDTEP_ADMIN_PATH . 'module-settings.php';
115 //Assets Manager
116 require_once 'admin/optimizer/asset-minifier-manager.php';
117
118 // Dynamic Select control
119 require_once BDTEP_INC_PATH . 'controls/select-input/dynamic-select-input-module.php';
120 require_once BDTEP_INC_PATH . 'controls/select-input/dynamic-select.php';
121
122 // Global Controls
123 require_once BDTEP_PATH . 'traits/global-widget-controls.php';
124 require_once BDTEP_PATH . 'traits/global-swiper-controls.php';
125 require_once BDTEP_PATH . 'traits/global-mask-controls.php';
126
127 // json upload support for wordpress
128 require_once BDTEP_INC_PATH . 'class-json-file-upload-control.php';
129 // svg support for full wordpress site
130 require_once BDTEP_INC_PATH . 'class-svg-support.php';
131 // All modules loading from here
132 require_once BDTEP_INC_PATH . 'modules-manager.php';
133 // wpml compatibility class for wpml support
134 require_once BDTEP_INC_PATH . 'class-elements-wpml-compatibility.php';
135 // For changelog file parse
136 require_once BDTEP_INC_PATH . 'class-parsedown.php';
137
138 // Live copy paste from demo website
139 if ($live_copy == 'on') {
140 require_once BDTEP_INC_PATH . 'live-copy/class-live-copy.php';
141 }
142
143 // register the elementor template loading widget in widgets
144 require_once BDTEP_INC_PATH . 'widgets/elementor-template.php';
145
146 // Facebook access token generator control for editor
147 require_once BDTEP_INC_PATH . 'class-fb-access-token-generator-control.php';
148
149 require_once BDTEP_INC_PATH . 'class-google-recaptcha.php';
150
151 if ($duplicator == 'on') {
152 require_once BDTEP_INC_PATH . 'class-duplicator.php';
153 }
154
155 // Rooten theme header footer compatibility
156 if ('Rooten' === $this->get_theme()->name or 'Rooten' === $this->get_theme()->parent_theme) {
157 if (!class_exists('RootenCustomTemplate')) {
158 require_once BDTEP_INC_PATH . 'class-rooten-theme-compatibility.php';
159 }
160 }
161
162 // editor template library
163 if (!defined('BDTEP_CH') and $template_library == 'on') {
164 require_once(BDTEP_INC_PATH . 'template-library/editor/init.php');
165 }
166
167 if (is_admin()) {
168 if (!defined('BDTEP_CH')) {
169 require_once BDTEP_ADMIN_PATH . 'admin.php';
170
171 if (!defined('BDTEP_CH') and $template_library == 'on') {
172 require_once(BDTEP_INC_PATH . 'template-library/template-library-base.php');
173 require_once(BDTEP_INC_PATH . 'template-library/editor/manager/api.php');
174 }
175
176 // Load admin class for admin related content process
177 new Admin();
178 }
179 }
180 }
181
182 /**
183 * Autoloader function for all classes files
184 *
185 * @param [type] class [description]
186 *
187 * @return [type] [description]
188 */
189 public function autoload($class) {
190 if (0 !== strpos($class, __NAMESPACE__)) {
191 return;
192 }
193
194
195 $class_to_load = $class;
196
197 if (!class_exists($class_to_load)) {
198 $filename = strtolower(
199 preg_replace(
200 ['/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z0-9])/', '/_/', '/\\\/'],
201 ['', '$1-$2', '-', DIRECTORY_SEPARATOR],
202 $class_to_load
203 )
204 );
205
206 $filename = BDTEP_PATH . $filename . '.php';
207
208 if (is_readable($filename)) {
209 include($filename);
210 }
211 }
212 }
213
214 /**
215 * Register all script that need for any specific widget on call basis.
216 * @return [type] [description]
217 */
218 public function register_site_scripts() {
219
220 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
221 $api_settings = get_option('element_pack_api_settings');
222
223 if (element_pack_is_widget_enabled('progress-pie')) {
224 wp_register_script('aspieprogress', BDTEP_ASSETS_URL . 'vendor/js/jquery-asPieProgress.min.js', ['jquery'], '0.4.7', true);
225 }
226 if (element_pack_is_widget_enabled('cookie-consent')) {
227 wp_register_script('cookieconsent', BDTEP_ASSETS_URL . 'vendor/js/cookieconsent.min.js', ['jquery'], '3.1.0', true);
228 }
229 if (element_pack_is_widget_enabled('static-grid-tab')) {
230 wp_register_script('gridtab', BDTEP_ASSETS_URL . 'vendor/js/gridtab.min.js', ['jquery'], '2.1.1', true);
231 }
232 if (element_pack_is_widget_enabled('user-register') or element_pack_is_widget_enabled('contact-form')) {
233 wp_register_script('recaptcha', 'https://www.google.com/recaptcha/api.js', ['jquery'], null, true);
234 }
235 if (element_pack_is_widget_enabled('open-street-map')) {
236 wp_register_script('leaflet', BDTEP_ASSETS_URL . 'vendor/js/leaflet.min.js', ['jquery'], '', true);
237 }
238 if (element_pack_is_widget_enabled('panel-slider')) {
239 wp_register_script('bdt-parallax', BDTEP_ASSETS_URL . 'vendor/js/parallax.min.js', ['jquery'], null, true);
240 }
241 if (element_pack_is_widget_enabled('image-magnifier')) {
242 wp_register_script('imagezoom', BDTEP_ASSETS_URL . 'vendor/js/jquery.imagezoom.min.js', ['jquery'], null, true);
243 }
244 if (element_pack_is_widget_enabled('logo-grid')) {
245 wp_register_script('popper', BDTEP_ASSETS_URL . 'vendor/js/popper.min.js', ['jquery'], null, true);
246 wp_register_script('tippyjs', BDTEP_ASSETS_URL . 'vendor/js/tippy.all.min.js', ['jquery'], null, true);
247 }
248 //advanced-image-gallery
249 if (element_pack_is_widget_enabled('custom-gallery') or element_pack_is_widget_enabled('tutor-lms-course-grid')) {
250 wp_register_script('tilt', BDTEP_ASSETS_URL . 'vendor/js/vanilla-tilt.min.js', ['jquery'], null, true);
251 }
252 if (element_pack_is_widget_enabled('reading-progress')) {
253 wp_register_script('progressHorizontal', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressHorizontal.min.js', ['jquery'], '2.0.2', true);
254 // wp_register_script('progressScroll', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressScroll.min.js', ['jquery'], '2.0.2', true);
255 }
256 if (element_pack_is_widget_enabled('image-compare')) {
257 wp_register_script('image-compare-viewer', BDTEP_ASSETS_URL . 'vendor/js/image-compare-viewer.min.js', ['jquery'], '0.0.1', true);
258 }
259 if (element_pack_is_widget_enabled('calendly')) {
260 wp_register_script('calendly', BDTEP_ASSETS_URL . 'vendor/js/calendly.min.js', ['jquery'], '0.0.1', true);
261 }
262 if (element_pack_is_widget_enabled('dark-mode')) {
263 wp_register_script('darkmode', BDTEP_ASSETS_URL . 'vendor/js/darkmode.min.js', ['jquery'], '1.1.1', true);
264 }
265 }
266
267 public function register_site_styles() {
268 $direction_suffix = is_rtl() ? '.rtl' : '';
269
270 // third party widget css
271 if (element_pack_is_widget_enabled('image-magnifier')) {
272 wp_register_style('imagezoom', BDTEP_ASSETS_URL . 'css/imagezoom' . $direction_suffix . '.css', [], BDTEP_VER);
273 }
274
275 /**
276 * ?TODO: Need to separate wc widget css
277 */
278 wp_register_style('ep-tutor-lms', BDTEP_ASSETS_URL . 'css/ep-tutor-lms' . $direction_suffix . '.css', [], BDTEP_VER);
279 // Vendor style register
280 wp_register_style('tippy', BDTEP_ASSETS_URL . 'css/tippy' . $direction_suffix . '.css', [], BDTEP_VER);
281 }
282
283 /**
284 * Loading site related style from here.
285 * @return [type] [description]
286 */
287 public function enqueue_site_styles() {
288
289 $direction_suffix = is_rtl() ? '.rtl' : '';
290
291 wp_enqueue_style('bdt-uikit', BDTEP_ASSETS_URL . 'css/bdt-uikit' . $direction_suffix . '.css', [], '3.17.0');
292 wp_enqueue_style('ep-helper', BDTEP_ASSETS_URL . 'css/ep-helper' . $direction_suffix . '.css', [], BDTEP_VER);
293 }
294
295
296 /**
297 * Loading site related script that needs all time such as uikit.
298 * @return [type] [description]mn
299 */
300 public function enqueue_site_scripts() {
301
302 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
303
304 wp_enqueue_script('bdt-uikit', BDTEP_ASSETS_URL . 'js/bdt-uikit' . $suffix . '.js', ['jquery'], '3.17.0', true);
305
306 if (!element_pack_is_asset_optimization_enabled()) {
307 wp_enqueue_script('element-pack-helper', BDTEP_ASSETS_URL . 'js/common/helper' . $suffix . '.js', ['jquery', 'elementor-frontend'], BDTEP_VER, true);
308 }
309
310
311 $script_config = [
312 'ajaxurl' => admin_url('admin-ajax.php'),
313 'nonce' => wp_create_nonce('element-pack-site'),
314 'data_table' => [
315 'language' => [
316 'lengthMenu' => sprintf(esc_html_x('Show %1s Entries', 'DataTable String', 'bdthemes-element-pack'), '_MENU_'),
317 'info' => sprintf(esc_html_x('Showing %1s to %2s of %3s entries', 'DataTable String', 'bdthemes-element-pack'), '_START_', '_END_', '_TOTAL_'),
318 'search' => esc_html_x('Search :', 'DataTable String', 'bdthemes-element-pack'),
319 'paginate' => [
320 'previous' => esc_html_x('Previous', 'DataTable String', 'bdthemes-element-pack'),
321 'next' => esc_html_x('Next', 'DataTable String', 'bdthemes-element-pack'),
322 ],
323 ],
324 ],
325 'contact_form' => [
326 'sending_msg' => esc_html_x('Sending message please wait...', 'Contact Form String', 'bdthemes-element-pack'),
327 'captcha_nd' => esc_html_x('Invisible captcha not defined!', 'Contact Form String', 'bdthemes-element-pack'),
328 'captcha_nr' => esc_html_x('Could not get invisible captcha response!', 'Contact Form String', 'bdthemes-element-pack'),
329
330 ],
331 'mailchimp' => [
332 'subscribing' => esc_html_x('Subscribing you please wait...', 'Mailchimp String', 'bdthemes-element-pack'),
333 ],
334 'search' => [
335 'more_result' => esc_html_x( 'More Results', 'Search Widget String', 'bdthemes-element-pack' ),
336 'search_result' => esc_html_x( 'SEARCH RESULT', 'Search Widget String', 'bdthemes-element-pack' ),
337 'not_found' => esc_html_x( 'not found', 'Search Widget String', 'bdthemes-element-pack' ),
338 ],
339 'elements_data' => $this->elements_data,
340 ];
341
342
343 // localize for user login widget ajax login script
344
345 // if (!defined('ICL_LANGUAGE_CODE')) {
346 // define('ICL_LANGUAGE_CODE', null);
347 // }
348 // ICL_LANGUAGE_CODE = '';
349 // TODO Language dynamic for ajax call
350
351 wp_localize_script(
352 'bdt-uikit',
353 'element_pack_ajax_login_config',
354 array(
355 'ajaxurl' => admin_url('admin-ajax.php'),
356 'language' => substr(get_locale(), 0, 2),
357 'loadingmessage' => esc_html_x('Sending user info, please wait...', 'User Login and Register', 'bdthemes-element-pack'),
358 'unknownerror' => esc_html_x('Unknown error, make sure access is correct!', 'User Login and Register', 'bdthemes-element-pack'),
359 )
360 );
361
362 $script_config = apply_filters('element_pack/frontend/localize_settings', $script_config);
363
364 // TODO for editor script
365 wp_localize_script('bdt-uikit', 'ElementPackConfig', $script_config);
366 }
367
368 public function enqueue_editor_scripts() {
369
370 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
371
372 wp_enqueue_script(
373 'element-pack',
374 BDTEP_ASSETS_URL . 'js/ep-editor' . $suffix . '.js',
375 [
376 'backbone-marionette',
377 'elementor-common-modules',
378 'elementor-editor-modules',
379 ],
380 BDTEP_VER,
381 true
382 );
383
384 $localize_data = [
385 'pro_installed' => element_pack_pro_installed(),
386 'promotional_widgets' => [],
387 ];
388
389 if (!element_pack_pro_installed()) {
390 $pro_widget_map = new Pro_Widget_Map();
391 $localize_data['promotional_widgets'] = $pro_widget_map->get_pro_widget_map();
392 }
393
394 wp_localize_script(
395 'element-pack',
396 'ElementPackConfig',
397 $localize_data
398 );
399
400 // $locale_settings = [
401 // 'i18n' => [],
402 // 'urls' => [
403 // 'modules' => BDTEP_MODULES_URL,
404 // ],
405 // ];
406
407 // $locale_settings = apply_filters( 'element_pack/editor/localize_settings', $locale_settings );
408
409 // wp_localize_script(
410 // 'element-pack',
411 // 'ElementPackConfig',
412 // $locale_settings
413 // );f
414 }
415
416 /**
417 * Load editor editor related style from here
418 * @return [type] [description]
419 */
420 public function enqueue_preview_styles() {
421 $direction_suffix = is_rtl() ? '.rtl' : '';
422
423 wp_enqueue_style('ep-preview', BDTEP_ASSETS_URL . 'css/ep-preview' . $direction_suffix . '.css', '', BDTEP_VER);
424 }
425
426
427 public function enqueue_editor_styles() {
428 $direction_suffix = is_rtl() ? '.rtl' : '';
429
430 wp_register_style('ep-editor', BDTEP_ASSETS_URL . 'css/ep-editor' . $direction_suffix . '.css', '', BDTEP_VER);
431 wp_enqueue_style('ep-editor');
432 }
433
434
435 public function enqueue_minified_css() {
436 $direction_suffix = is_rtl() ? '.rtl' : '';
437
438 $upload_dir = $this->get_upload_dir() . 'css/ep-styles.css';
439 $version = get_option('element-pack-minified-asset-manager-version');
440
441 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
442 $upload_url = $this->get_upload_url() . 'css/ep-styles.css';
443 wp_register_style('ep-styles', $upload_url, [], $version);
444 } else {
445 wp_register_style('ep-styles', BDTEP_URL . 'assets/css/ep-styles' . $direction_suffix . '.css', [], BDTEP_VER);
446 wp_register_style('ep-font', BDTEP_ASSETS_URL . 'css/ep-font' . $direction_suffix . '.css', [], BDTEP_VER);
447 }
448
449 if (element_pack_is_asset_optimization_enabled()) {
450 wp_enqueue_style('ep-styles');
451 }
452 }
453
454 public function enqueue_minified_js() {
455 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
456
457 $upload_dir = $this->get_upload_dir() . 'js/ep-scripts.js';
458 $version = get_option('element-pack-minified-asset-manager-version');
459
460 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
461 $upload_url = $this->get_upload_url() . 'js/ep-scripts.js';
462
463 wp_register_script('ep-scripts', $upload_url, ['elementor-frontend'], $version, true);
464 } else {
465 wp_register_script('ep-scripts', BDTEP_URL . 'assets/js/ep-scripts' . $suffix . '.js', ['elementor-frontend'], BDTEP_VER, true);
466 }
467
468 if (element_pack_is_asset_optimization_enabled()) {
469 wp_enqueue_script('ep-scripts');
470 }
471 }
472
473 /**
474 * To load notice JS file
475 */
476
477 public function enqueue_admin_scripts() {
478 wp_enqueue_script('ep-notice-js', BDTEP_ADMIN_URL . 'assets/js/ep-notice.js', ['jquery'], BDTEP_VER, true);
479 }
480
481 /**
482 * Callback to shortcodes template
483 * @param array $atts attributes for shortcode.
484 */
485 public function shortcode_template($atts) {
486
487 $atts = shortcode_atts(
488 array(
489 'id' => '',
490 ),
491 $atts,
492 'rooten_custom_template'
493 );
494
495 $id = !empty($atts['id']) ? intval($atts['id']) : '';
496
497 if (empty($id)) {
498 return '';
499 }
500
501 return self::elementor()->frontend->get_builder_content_for_display($id);
502 }
503
504
505 /**
506 * Add element_pack_ajax_login() function with wp_ajax_nopriv_ function
507 * @return [type] [description]
508 */
509 public function element_pack_ajax_login_init() {
510 // Enable the user with no privileges to run element_pack_ajax_login() in AJAX
511 add_action('wp_ajax_nopriv_element_pack_ajax_login', [$this, "element_pack_ajax_login"]);
512 }
513
514 /**
515 * For ajax login
516 * @return [type] [description]
517 */
518 public function element_pack_ajax_login() {
519 // First check the nonce, if it fails the function will break
520 check_ajax_referer('ajax-login-nonce', 'bdt-user-login-sc');
521
522 // Nonce is checked, get the POST data and sign user on
523 $access_info = [];
524 $access_info['user_login'] = !empty($_POST['user_login']) ? $_POST['user_login'] : "";
525 $access_info['user_password'] = !empty($_POST['user_password']) ? $_POST['user_password'] : "";
526 $access_info['remember'] = !empty($_POST['rememberme']) ? true : false;
527 $user_signon = wp_signon($access_info, false);
528
529 if (!is_wp_error($user_signon)) {
530 echo wp_json_encode(
531 [
532 'loggedin' => true,
533 'message' => esc_html_x('Login successful, Redirecting...', 'User Login and Register', 'bdthemes-element-pack')
534 ]
535 );
536 } else {
537 echo wp_json_encode(
538 [
539 'loggedin' => false,
540 'message' => esc_html_x('Oops! Wrong username or password!', 'User Login and Register', 'bdthemes-element-pack')
541 ]
542 );
543 }
544
545 die();
546 }
547
548
549
550 // Load WPML compatibility instance
551 public function wpml_compatiblity() {
552 return Element_Pack_WPML::get_instance();
553 }
554
555
556 /**
557 * initialize the category
558 * @return void
559 */
560 public function element_pack_init() {
561
562 $this->_modules_manager = new Manager();
563
564 do_action('bdthemes_element_pack/init');
565 }
566
567 function ElementPack_Json_File_Import_register_controls() {
568 $controls_manager = Plugin::$instance->controls_manager;
569 $controls_manager->register(new ElementPack_JSON_File_Upload_Control());
570 }
571
572
573
574 function ElementPack_FB_Token_Register_Controls() {
575
576 $controls_manager = Plugin::$instance->controls_manager;
577 $controls_manager->register(new ElementPack_FB_Access_Token_Generator_Control());
578 }
579
580 /**
581 * initialize the category
582 * @return [type] [description]
583 */
584 public function element_pack_category_register() {
585
586 $elementor = Plugin::$instance;
587
588 // Add element category in panel
589 $elementor->elements_manager->add_category(BDTEP_SLUG, ['title' => BDTEP_TITLE, 'icon' => 'font']);
590 }
591
592 public function element_pack_svg_support() {
593
594 return SVG_Support::get_instance();
595 }
596
597 private function setup_hooks() {
598
599 add_action('elementor/controls/register', [$this, 'ElementPack_Json_File_Import_register_controls']);
600
601 add_action('elementor/controls/register', [$this, 'ElementPack_FB_Token_Register_Controls']);
602
603 add_action('elementor/elements/categories_registered', [$this, 'element_pack_category_register']);
604 add_action('elementor/init', [$this, 'element_pack_init']);
605
606
607 add_action('elementor/editor/after_enqueue_styles', [$this, 'enqueue_editor_styles']);
608
609 add_action('elementor/frontend/before_register_styles', [$this, 'register_site_styles']);
610 add_action('elementor/frontend/before_register_scripts', [$this, 'register_site_scripts']);
611
612 add_action('elementor/preview/enqueue_styles', [$this, 'enqueue_preview_styles']);
613 add_action('elementor/editor/after_enqueue_scripts', [$this, 'enqueue_editor_scripts']);
614
615 add_action('elementor/frontend/after_register_styles', [$this, 'enqueue_site_styles']);
616 add_action('elementor/frontend/before_enqueue_scripts', [$this, 'enqueue_site_scripts']);
617
618 // For frontend css load
619 add_action('elementor/frontend/after_enqueue_styles', [$this, 'enqueue_minified_css']);
620 add_action('elementor/frontend/after_enqueue_scripts', [$this, 'enqueue_minified_js']);
621
622
623 add_shortcode('rooten_custom_template', [$this, 'shortcode_template']);
624
625
626 // When user not login add this action
627 if (!is_user_logged_in()) {
628 add_action('elementor/init', [$this, 'element_pack_ajax_login_init']);
629 }
630
631 // load WordPress dashboard scripts
632 add_action('admin_init', [$this, 'enqueue_admin_scripts']);
633 }
634
635 /**
636 * Element_Pack_Loader constructor.
637 */
638 private function __construct() {
639 // Register class automatically
640 spl_autoload_register([$this, 'autoload']);
641 // Include some backend files
642 $this->_includes();
643
644 // Finally hooked up all things here
645 $this->setup_hooks();
646
647 $this->element_pack_svg_support()->init();
648
649 $this->wpml_compatiblity()->init();
650 }
651 }
652
653 if (!defined('BDTEP_TESTS')) {
654 // In tests we run the instance manually.
655 Element_Pack_Loader::instance();
656 }
657 // handy function for push data
658 function element_pack_config() {
659 return Element_Pack_Loader::instance();
660 }
661