PluginProbe ʕ •ᴥ•ʔ
Element Pack – Widgets, Templates & Addons for Elementor / 5.10.21
Element Pack – Widgets, Templates & Addons for Elementor v5.10.21
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
702 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 /**
163 * Editor template library
164 */
165 if ( ! defined( 'BDTEP_CH' ) and $template_library == 'on' ) {
166 require_once BDTEP_INC_PATH . 'template-library/editor/init.php';
167 require_once BDTEP_INC_PATH . 'template-library/template-library-base.php';
168 require_once BDTEP_INC_PATH . 'template-library/editor/manager/api.php';
169 }
170 }
171
172 /**
173 * Autoloader function for all classes files
174 *
175 * @param [type] class [description]
176 *
177 * @return [type] [description]
178 */
179 public function autoload($class) {
180 if (0 !== strpos($class, __NAMESPACE__)) {
181 return;
182 }
183
184
185 $class_to_load = $class;
186
187 if (!class_exists($class_to_load)) {
188 $filename = strtolower(
189 preg_replace(
190 ['/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z0-9])/', '/_/', '/\\\/'],
191 ['', '$1-$2', '-', DIRECTORY_SEPARATOR],
192 $class_to_load
193 )
194 );
195
196 $filename = BDTEP_PATH . $filename . '.php';
197
198 if (is_readable($filename)) {
199 include($filename);
200 }
201 }
202 }
203
204 /**
205 * Register all script that need for any specific widget on call basis.
206 * @return [type] [description]
207 */
208 public function register_site_scripts() {
209
210 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
211 $api_settings = get_option('element_pack_api_settings');
212
213 if (element_pack_is_widget_enabled('progress-pie')) {
214 wp_register_script('aspieprogress', BDTEP_ASSETS_URL . 'vendor/js/jquery-asPieProgress.min.js', ['jquery'], '0.4.7', true);
215 }
216 if (element_pack_is_widget_enabled('cookie-consent')) {
217 wp_register_script('cookieconsent', BDTEP_ASSETS_URL . 'vendor/js/cookieconsent.min.js', ['jquery'], '3.1.0', true);
218 }
219 if (element_pack_is_widget_enabled('static-grid-tab')) {
220 wp_register_script('gridtab', BDTEP_ASSETS_URL . 'vendor/js/gridtab.min.js', ['jquery'], '2.1.1', true);
221 }
222 if (element_pack_is_widget_enabled('user-register') or element_pack_is_widget_enabled('contact-form')) {
223 wp_register_script('recaptcha', 'https://www.google.com/recaptcha/api.js', ['jquery'], null, true);
224 }
225 if (element_pack_is_widget_enabled('open-street-map')) {
226 wp_register_script('leaflet', BDTEP_ASSETS_URL . 'vendor/js/leaflet.min.js', ['jquery'], '', true);
227 }
228 if (element_pack_is_widget_enabled('panel-slider')) {
229 wp_register_script('bdt-parallax', BDTEP_ASSETS_URL . 'vendor/js/parallax.min.js', ['jquery'], null, true);
230 }
231 if (element_pack_is_widget_enabled('image-magnifier')) {
232 wp_register_script('imagezoom', BDTEP_ASSETS_URL . 'vendor/js/jquery.imagezoom.min.js', ['jquery'], null, true);
233 }
234 if (element_pack_is_widget_enabled('logo-grid')) {
235 wp_register_script('popper', BDTEP_ASSETS_URL . 'vendor/js/popper.min.js', ['jquery'], null, true);
236 wp_register_script('tippyjs', BDTEP_ASSETS_URL . 'vendor/js/tippy.all.min.js', ['jquery'], null, true);
237 }
238 //advanced-image-gallery
239 if (element_pack_is_widget_enabled('custom-gallery') or element_pack_is_widget_enabled('tutor-lms-course-grid')) {
240 wp_register_script('tilt', BDTEP_ASSETS_URL . 'vendor/js/vanilla-tilt.min.js', ['jquery'], null, true);
241 }
242 if (element_pack_is_widget_enabled('reading-progress')) {
243 wp_register_script('progressHorizontal', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressHorizontal.min.js', ['jquery'], '2.0.2', true);
244 // wp_register_script('progressScroll', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressScroll.min.js', ['jquery'], '2.0.2', true);
245 }
246 if (element_pack_is_widget_enabled('image-compare')) {
247 wp_register_script('image-compare-viewer', BDTEP_ASSETS_URL . 'vendor/js/image-compare-viewer.min.js', ['jquery'], '0.0.1', true);
248 }
249 if (element_pack_is_widget_enabled('calendly')) {
250 wp_register_script('calendly', BDTEP_ASSETS_URL . 'vendor/js/calendly.min.js', ['jquery'], '0.0.1', true);
251 }
252 if (element_pack_is_widget_enabled('dark-mode')) {
253 wp_register_script('darkmode', BDTEP_ASSETS_URL . 'vendor/js/darkmode.min.js', ['jquery'], '1.1.1', true);
254 }
255
256 if ( element_pack_is_widget_enabled( 'review-card' )
257 or element_pack_is_widget_enabled( 'review-card-carousel' )
258 or element_pack_is_widget_enabled( 'testimonial-grid' ) ) {
259 wp_register_script( 'ep-text-read-more-toggle', BDTEP_ASSETS_URL . 'vendor/js/ep-text-read-more-toggle.min.js', ['jquery', 'bdt-uikit'], BDTEP_VER, true );
260 }
261 }
262
263 public function register_site_styles() {
264 $direction_suffix = is_rtl() ? '.rtl' : '';
265
266 // third party widget css
267 if (element_pack_is_widget_enabled('image-magnifier')) {
268 wp_register_style('imagezoom', BDTEP_ASSETS_URL . 'css/imagezoom' . $direction_suffix . '.css', [], BDTEP_VER);
269 }
270
271 /**
272 * ?TODO: Need to separate wc widget css
273 */
274 wp_register_style('ep-tutor-lms', BDTEP_ASSETS_URL . 'css/ep-tutor-lms' . $direction_suffix . '.css', [], BDTEP_VER);
275 // Vendor style register
276 wp_register_style('tippy', BDTEP_ASSETS_URL . 'css/tippy' . $direction_suffix . '.css', [], BDTEP_VER);
277 }
278
279 /**
280 * Loading site related style from here.
281 * @return [type] [description]
282 */
283 public function enqueue_site_styles() {
284
285 $direction_suffix = is_rtl() ? '.rtl' : '';
286
287 wp_register_style('bdt-uikit', BDTEP_ASSETS_URL . 'css/bdt-uikit' . $direction_suffix . '.css', [], '3.21.7');
288 wp_register_style('ep-helper', BDTEP_ASSETS_URL . 'css/ep-helper' . $direction_suffix . '.css', [], BDTEP_VER);
289
290 wp_enqueue_style( 'bdt-uikit' );
291 wp_enqueue_style( 'ep-helper' );
292 }
293
294
295 /**
296 * Loading site related script that needs all time such as uikit.
297 * @return [type] [description]mn
298 */
299 public function enqueue_site_scripts() {
300
301 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
302
303 wp_register_script('bdt-uikit', BDTEP_ASSETS_URL . 'js/bdt-uikit' . $suffix . '.js', ['jquery'], '3.21.7', true);
304
305 wp_enqueue_script( 'bdt-uikit' );
306
307 if (!element_pack_is_asset_optimization_enabled()) {
308 wp_register_script('element-pack-helper', BDTEP_ASSETS_URL . 'js/common/helper' . $suffix . '.js', ['jquery', 'elementor-frontend'], BDTEP_VER, true);
309 wp_enqueue_script('element-pack-helper');
310 }
311
312
313 $script_config = [
314 'ajaxurl' => admin_url('admin-ajax.php'),
315 'nonce' => wp_create_nonce('element-pack-site'),
316 'data_table' => [
317 'language' => [
318 'lengthMenu' => sprintf(esc_html_x('Show %1s Entries', 'DataTable String', 'bdthemes-element-pack'), '_MENU_'),
319 'info' => sprintf(esc_html_x('Showing %1s to %2s of %3s entries', 'DataTable String', 'bdthemes-element-pack'), '_START_', '_END_', '_TOTAL_'),
320 'search' => esc_html_x('Search :', 'DataTable String', 'bdthemes-element-pack'),
321 'paginate' => [
322 'previous' => esc_html_x('Previous', 'DataTable String', 'bdthemes-element-pack'),
323 'next' => esc_html_x('Next', 'DataTable String', 'bdthemes-element-pack'),
324 ],
325 ],
326 ],
327 'contact_form' => [
328 'sending_msg' => esc_html_x('Sending message please wait...', 'Contact Form String', 'bdthemes-element-pack'),
329 'captcha_nd' => esc_html_x('Invisible captcha not defined!', 'Contact Form String', 'bdthemes-element-pack'),
330 'captcha_nr' => esc_html_x('Could not get invisible captcha response!', 'Contact Form String', 'bdthemes-element-pack'),
331
332 ],
333 'mailchimp' => [
334 'subscribing' => esc_html_x('Subscribing you please wait...', 'Mailchimp String', 'bdthemes-element-pack'),
335 ],
336 'search' => [
337 'more_result' => esc_html_x( 'More Results', 'Search Widget String', 'bdthemes-element-pack' ),
338 'search_result' => esc_html_x( 'SEARCH RESULT', 'Search Widget String', 'bdthemes-element-pack' ),
339 'not_found' => esc_html_x( 'not found', 'Search Widget String', 'bdthemes-element-pack' ),
340 ],
341 'words_limit' => [
342 'read_more' => esc_html_x( '[read more]', 'Read More String', 'bdthemes-element-pack' ),
343 'read_less' => esc_html_x( '[read less]', 'Read Less String', 'bdthemes-element-pack' ),
344 ],
345 'elements_data' => $this->elements_data,
346 ];
347
348
349 // localize for user login widget ajax login script
350
351 // if (!defined('ICL_LANGUAGE_CODE')) {
352 // define('ICL_LANGUAGE_CODE', null);
353 // }
354 // ICL_LANGUAGE_CODE = '';
355 // TODO Language dynamic for ajax call
356
357 wp_localize_script(
358 'bdt-uikit',
359 'element_pack_ajax_login_config',
360 array(
361 'ajaxurl' => admin_url('admin-ajax.php'),
362 'language' => substr(get_locale(), 0, 2),
363 'loadingmessage' => esc_html_x('Sending user info, please wait...', 'User Login and Register', 'bdthemes-element-pack'),
364 'unknownerror' => esc_html_x('Unknown error, make sure access is correct!', 'User Login and Register', 'bdthemes-element-pack'),
365 )
366 );
367
368 $script_config = apply_filters('element_pack/frontend/localize_settings', $script_config);
369
370 // TODO for editor script
371 wp_localize_script('bdt-uikit', 'ElementPackConfig', $script_config);
372 }
373
374 public function enqueue_editor_scripts() {
375
376 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
377
378 wp_register_script(
379 'element-pack',
380 BDTEP_ASSETS_URL . 'js/ep-editor' . $suffix . '.js',
381 [
382 'backbone-marionette',
383 'elementor-common-modules',
384 'elementor-editor-modules',
385 ],
386 BDTEP_VER,
387 true
388 );
389
390 wp_enqueue_script( 'element-pack' );
391
392 $localize_data = [
393 'pro_installed' => element_pack_pro_installed(),
394 'promotional_widgets' => [],
395 ];
396
397 if (!element_pack_pro_installed()) {
398 $pro_widget_map = new Pro_Widget_Map();
399 $localize_data['promotional_widgets'] = $pro_widget_map->get_pro_widget_map();
400 }
401
402 wp_localize_script(
403 'element-pack',
404 'ElementPackConfig',
405 $localize_data
406 );
407
408 // $locale_settings = [
409 // 'i18n' => [],
410 // 'urls' => [
411 // 'modules' => BDTEP_MODULES_URL,
412 // ],
413 // ];
414
415 // $locale_settings = apply_filters( 'element_pack/editor/localize_settings', $locale_settings );
416
417 // wp_localize_script(
418 // 'element-pack',
419 // 'ElementPackConfig',
420 // $locale_settings
421 // );f
422 }
423
424 /**
425 * Load editor editor related style from here
426 * @return [type] [description]
427 */
428 public function enqueue_preview_styles() {
429 $direction_suffix = is_rtl() ? '.rtl' : '';
430
431 wp_enqueue_style('ep-preview', BDTEP_ASSETS_URL . 'css/ep-preview' . $direction_suffix . '.css', '', BDTEP_VER);
432 }
433
434
435 public function enqueue_editor_styles() {
436 $direction_suffix = is_rtl() ? '.rtl' : '';
437
438 wp_register_style('ep-editor', BDTEP_ASSETS_URL . 'css/ep-editor' . $direction_suffix . '.css', '', BDTEP_VER);
439 wp_enqueue_style('ep-editor');
440 }
441
442
443 public function enqueue_minified_css() {
444 $direction_suffix = is_rtl() ? '.rtl' : '';
445
446 $upload_dir = $this->get_upload_dir() . 'css/ep-styles.css';
447 $version = get_option('element-pack-minified-asset-manager-version');
448
449 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
450 $upload_url = $this->get_upload_url() . 'css/ep-styles.css';
451 wp_register_style('ep-styles', $upload_url, [], $version);
452 } else {
453 wp_register_style('ep-styles', BDTEP_URL . 'assets/css/ep-styles' . $direction_suffix . '.css', [], BDTEP_VER);
454 wp_register_style('ep-font', BDTEP_ASSETS_URL . 'css/ep-font' . $direction_suffix . '.css', [], BDTEP_VER);
455 }
456
457 if (element_pack_is_asset_optimization_enabled()) {
458 wp_enqueue_style('ep-styles');
459 }
460
461 /**
462 * Must load into Editor for Extension Support
463 *
464 * by U-011
465 */
466 if ( Element_Pack_Loader::elementor()->preview->is_preview_mode() || Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
467 wp_enqueue_style( 'ep-styles' );
468 }
469 }
470
471 public function enqueue_minified_js() {
472 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
473
474 $upload_dir = $this->get_upload_dir() . 'js/ep-scripts.js';
475 $version = get_option('element-pack-minified-asset-manager-version');
476
477 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
478 $upload_url = $this->get_upload_url() . 'js/ep-scripts.js';
479
480 wp_register_script('ep-scripts', $upload_url, ['elementor-frontend'], $version, true);
481 } else {
482 wp_register_script('ep-scripts', BDTEP_URL . 'assets/js/ep-scripts' . $suffix . '.js', ['elementor-frontend'], BDTEP_VER, true);
483 }
484
485 if (element_pack_is_asset_optimization_enabled()) {
486 wp_enqueue_script('ep-scripts');
487 }
488 /**
489 * Must load into Editor for Extension Support
490 *
491 * by U-011
492 */
493 if ( Element_Pack_Loader::elementor()->preview->is_preview_mode() || Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
494 wp_enqueue_script( 'ep-scripts' );
495 }
496 }
497
498 /**
499 * To load notice JS file
500 */
501
502 public function enqueue_admin_scripts() {
503 wp_enqueue_style( 'ep-notice-css', BDTEP_ADMIN_URL . 'assets/css/ep-notice.css', [], BDTEP_VER, 'all' );
504 wp_enqueue_script( 'ep-notice-js', BDTEP_ADMIN_URL . 'assets/js/ep-notice.js', [ 'jquery' ], BDTEP_VER, true );
505
506 $script_config = [
507 'ajaxurl' => admin_url( 'admin-ajax.php' ),
508 'nonce' => wp_create_nonce( 'element-pack' ),
509 ];
510 wp_localize_script( 'ep-notice-js', 'ElementPackNoticeConfig', $script_config );
511 }
512
513 /**
514 * Callback to shortcodes template
515 * @param array $atts attributes for shortcode.
516 */
517 public function shortcode_template($atts) {
518
519 $atts = shortcode_atts(
520 array(
521 'id' => '',
522 ),
523 $atts,
524 'rooten_custom_template'
525 );
526
527 $id = !empty($atts['id']) ? intval($atts['id']) : '';
528
529 if (empty($id)) {
530 return '';
531 }
532
533 return self::elementor()->frontend->get_builder_content_for_display($id);
534 }
535
536
537 /**
538 * Add element_pack_ajax_login() function with wp_ajax_nopriv_ function
539 * @return [type] [description]
540 */
541 public function element_pack_ajax_login_init() {
542 // Enable the user with no privileges to run element_pack_ajax_login() in AJAX
543 add_action('wp_ajax_nopriv_element_pack_ajax_login', [$this, "element_pack_ajax_login"]);
544 }
545
546 /**
547 * For ajax login
548 * @return [type] [description]
549 */
550 public function element_pack_ajax_login() {
551 // First check the nonce, if it fails the function will break
552 check_ajax_referer('ajax-login-nonce', 'bdt-user-login-sc');
553
554 // Nonce is checked, get the POST data and sign user on
555 $access_info = [];
556 $access_info['user_login'] = !empty($_POST['user_login']) ? $_POST['user_login'] : "";
557 $access_info['user_password'] = !empty($_POST['user_password']) ? $_POST['user_password'] : "";
558 $access_info['remember'] = !empty($_POST['rememberme']) ? true : false;
559 $user_signon = wp_signon($access_info, false);
560
561 if (!is_wp_error($user_signon)) {
562 echo wp_json_encode(
563 [
564 'loggedin' => true,
565 'message' => esc_html_x('Login successful, Redirecting...', 'User Login and Register', 'bdthemes-element-pack')
566 ]
567 );
568 } else {
569 echo wp_json_encode(
570 [
571 'loggedin' => false,
572 'message' => esc_html_x('Oops! Wrong username or password!', 'User Login and Register', 'bdthemes-element-pack')
573 ]
574 );
575 }
576
577 die();
578 }
579
580
581
582 // Load WPML compatibility instance
583 public function wpml_compatiblity() {
584 return Element_Pack_WPML::get_instance();
585 }
586
587
588 /**
589 * initialize the category
590 * @return void
591 */
592 public function element_pack_init() {
593
594 $this->_modules_manager = new Manager();
595
596 do_action('bdthemes_element_pack/init');
597 }
598
599 function ElementPack_Json_File_Import_register_controls() {
600 $controls_manager = Plugin::$instance->controls_manager;
601 $controls_manager->register(new ElementPack_JSON_File_Upload_Control());
602 }
603
604
605
606 function ElementPack_FB_Token_Register_Controls() {
607
608 $controls_manager = Plugin::$instance->controls_manager;
609 $controls_manager->register(new ElementPack_FB_Access_Token_Generator_Control());
610 }
611
612 /**
613 * initialize the category
614 * @return [type] [description]
615 */
616 public function element_pack_category_register() {
617
618 $elementor = Plugin::$instance;
619
620 // Add element category in panel
621 $elementor->elements_manager->add_category(BDTEP_SLUG, ['title' => BDTEP_TITLE, 'icon' => 'font']);
622 }
623
624 public function element_pack_svg_support() {
625
626 return SVG_Support::get_instance();
627 }
628
629 private function setup_hooks() {
630
631 add_action('elementor/controls/register', [$this, 'ElementPack_Json_File_Import_register_controls']);
632 add_action('elementor/controls/register', [$this, 'ElementPack_FB_Token_Register_Controls']);
633 add_action('elementor/elements/categories_registered', [$this, 'element_pack_category_register']);
634 add_action('elementor/init', [$this, 'element_pack_init']);
635
636 add_action('elementor/editor/after_enqueue_styles', [$this, 'enqueue_editor_styles']);
637
638 add_action('wp_enqueue_scripts', [$this, 'register_site_styles'], 99999);
639 add_action('wp_enqueue_scripts', [$this, 'register_site_scripts'], 99999);
640 add_action('wp_enqueue_scripts', [$this, 'enqueue_site_styles'], 99999);
641 add_action('wp_enqueue_scripts', [$this, 'enqueue_site_scripts'], 99999);
642
643 add_action('elementor/preview/enqueue_styles', [$this, 'enqueue_preview_styles']);
644 add_action('elementor/editor/after_enqueue_scripts', [$this, 'enqueue_editor_scripts']);
645
646
647 // For frontend css load
648 add_action('elementor/frontend/after_enqueue_styles', [$this, 'enqueue_minified_css']);
649 add_action('elementor/frontend/after_enqueue_scripts', [$this, 'enqueue_minified_js']);
650
651
652 add_shortcode('rooten_custom_template', [$this, 'shortcode_template']);
653
654
655 // When user not login add this action
656 if (!is_user_logged_in()) {
657 add_action('elementor/init', [$this, 'element_pack_ajax_login_init']);
658 }
659
660 // load WordPress dashboard scripts
661 add_action('admin_init', [$this, 'enqueue_admin_scripts']);
662 }
663
664 /**
665 * Load files on init
666 */
667 public function init() {
668 if ( is_admin() ) {
669 require_once BDTEP_ADMIN_PATH . 'admin.php';
670 new Admin();
671 }
672 }
673
674 /**
675 * Element_Pack_Loader constructor.
676 */
677 private function __construct() {
678 // Register class automatically
679 spl_autoload_register([$this, 'autoload']);
680 // Include some backend files
681 $this->_includes();
682
683 // Finally hooked up all things here
684 $this->setup_hooks();
685
686 $this->element_pack_svg_support()->init();
687
688 $this->wpml_compatiblity()->init();
689
690 add_action( 'init', [ $this, 'init' ] );
691 }
692 }
693
694 if (!defined('BDTEP_TESTS')) {
695 // In tests we run the instance manually.
696 Element_Pack_Loader::instance();
697 }
698 // handy function for push data
699 function element_pack_config() {
700 return Element_Pack_Loader::instance();
701 }
702