PluginProbe ʕ •ᴥ•ʔ
Element Pack – Widgets, Templates & Addons for Elementor / 8.7.3
Element Pack – Widgets, Templates & Addons for Elementor v8.7.3
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 2 weeks ago assets 2 weeks ago base 2 weeks ago includes 2 weeks ago languages 2 weeks ago modules 2 weeks ago traits 2 weeks ago bdthemes-element-pack-lite.php 2 weeks ago loader.php 2 weeks ago readme.txt 2 weeks ago
loader.php
708 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 if (!defined('BDTEP_PC')) {
19 define('BDTEP_PC', '<span class="bdt-ep-pro-control"></span>');
20 } // pro control badge
21 define('BDTEP_IS_PC', 'bdt-ep-disabled-control');
22 define('BDTEP_LOCK_CLASS', 'bdt-ep-lock-control');
23
24 if (!defined('BDTEP_LOCK')) {
25 define('BDTEP_LOCK', ' - Pro ✨');
26 } // lock control badge
27 /**
28 * Main class for element pack
29 */
30 class Element_Pack_Loader {
31
32 /**
33 * @var Element_Pack_Loader
34 */
35 private static $_instance;
36 public $_modules_manager;
37
38 public $elements_data = [
39 'sections' => [],
40 'columns' => [],
41 'widgets' => [],
42 ];
43
44 private function get_upload_dir() {
45 return trailingslashit(wp_upload_dir()['basedir']) . 'element-pack/minified/';
46 }
47
48 private function get_upload_url() {
49 return trailingslashit(wp_upload_dir()['baseurl']) . 'element-pack/minified/';
50 }
51
52 /**
53 * @return string
54 * @deprecated
55 *
56 */
57 public function get_version() {
58 return BDTEP_VER;
59 }
60
61 /**
62 * return active theme
63 */
64 public function get_theme() {
65 return wp_get_theme();
66 }
67
68 /**
69 * Throw error on object clone
70 *
71 * The whole idea of the singleton design pattern is that there is a single
72 * object therefore, we don't want the object to be cloned.
73 *
74 * @return void
75 * @since 1.0.0
76 */
77 public function __clone() {
78 // Cloning instances of the class is forbidden
79 _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin&#8217; huh?', 'bdthemes-element-pack'), '1.6.0');
80 }
81
82 /**
83 * Disable unserializing of the class
84 *
85 * @return void
86 * @since 1.0.0
87 */
88 public function __wakeup() {
89 // Unserializing instances of the class is forbidden
90 _doing_it_wrong(__FUNCTION__, esc_html__('Cheatin&#8217; huh?', 'bdthemes-element-pack'), '1.6.0');
91 }
92
93 /**
94 * @return Plugin
95 */
96
97 public static function elementor() {
98 return Plugin::$instance;
99 }
100
101 /**
102 * @return Element_Pack_Loader
103 */
104 public static function instance() {
105 if (is_null(self::$_instance)) {
106 self::$_instance = new self();
107 }
108
109 return self::$_instance;
110 }
111
112
113 /**
114 * we loaded module manager + admin php from here
115 * @return [type] [description]
116 */
117 private function _includes() {
118
119 $live_copy = element_pack_option('live-copy', 'element_pack_other_settings', 'off');
120 $template_library = element_pack_option('template-library', 'element_pack_other_settings', 'off');
121 $duplicator = element_pack_option('duplicator', 'element_pack_other_settings', 'off');
122
123 // Admin settings controller
124 require_once BDTEP_ADMIN_PATH . 'module-settings.php';
125 //Assets Manager
126 require_once 'admin/optimizer/asset-minifier-manager.php';
127
128 // Dynamic Select control
129 require_once BDTEP_INC_PATH . 'controls/select-input/dynamic-select-input-module.php';
130 require_once BDTEP_INC_PATH . 'controls/select-input/dynamic-select.php';
131
132 // Global Controls
133 require_once BDTEP_PATH . 'traits/global-widget-controls.php';
134 require_once BDTEP_PATH . 'traits/global-swiper-controls.php';
135 require_once BDTEP_PATH . 'traits/global-mask-controls.php';
136
137 // json upload support for wordpress
138 require_once BDTEP_INC_PATH . 'class-json-file-upload-control.php';
139 // svg support for full wordpress site
140 require_once BDTEP_INC_PATH . 'class-svg-support.php';
141 // All modules loading from here
142 require_once BDTEP_INC_PATH . 'modules-manager.php';
143 // wpml compatibility class for wpml support
144 require_once BDTEP_INC_PATH . 'class-elements-wpml-compatibility.php';
145 // For changelog file parse
146 require_once BDTEP_INC_PATH . 'class-parsedown.php';
147
148 // Live copy paste from demo website
149 if ($live_copy == 'on') {
150 require_once BDTEP_INC_PATH . 'live-copy/class-live-copy.php';
151 }
152
153 // register the elementor template loading widget in widgets
154 require_once BDTEP_INC_PATH . 'widgets/elementor-template.php';
155
156 // Facebook access token generator control for editor
157 require_once BDTEP_INC_PATH . 'class-fb-access-token-generator-control.php';
158
159 require_once BDTEP_INC_PATH . 'class-google-recaptcha.php';
160
161 if ($duplicator == 'on') {
162 require_once BDTEP_INC_PATH . 'class-duplicator.php';
163 }
164
165 // Rooten theme header footer compatibility
166 if ('Rooten' === $this->get_theme()->name or 'Rooten' === $this->get_theme()->parent_theme) {
167 if (!class_exists('RootenCustomTemplate')) {
168 require_once BDTEP_INC_PATH . 'class-rooten-theme-compatibility.php';
169 }
170 }
171
172 /**
173 * Editor template library
174 */
175 if ( ! defined( 'BDTEP_CH' ) and $template_library == 'on' ) {
176 require_once BDTEP_INC_PATH . 'template-library/editor/init.php';
177 require_once BDTEP_INC_PATH . 'template-library/template-library-base.php';
178 require_once BDTEP_INC_PATH . 'template-library/editor/manager/api.php';
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( 'social-share' ) ) {
224 wp_register_script( 'goodshare', BDTEP_ASSETS_URL . 'vendor/js/goodshare.min.js', [ 'jquery' ], '4.1.2', true );
225 }
226 if (element_pack_is_widget_enabled('progress-pie')) {
227 wp_register_script('aspieprogress', BDTEP_ASSETS_URL . 'vendor/js/jquery-asPieProgress.min.js', ['jquery'], '0.4.7', true);
228 }
229 if (element_pack_is_widget_enabled('cookie-consent')) {
230 wp_register_script('cookieconsent', BDTEP_ASSETS_URL . 'vendor/js/cookieconsent.min.js', ['jquery'], '3.1.0', true);
231 }
232 if (element_pack_is_widget_enabled('static-grid-tab')) {
233 wp_register_script('gridtab', BDTEP_ASSETS_URL . 'vendor/js/gridtab.min.js', ['jquery'], '2.1.1', true);
234 }
235 if (element_pack_is_widget_enabled('user-register') or element_pack_is_widget_enabled('contact-form')) {
236 wp_register_script('recaptcha', 'https://www.google.com/recaptcha/api.js', ['jquery'], null, true);
237 }
238 if (element_pack_is_widget_enabled('open-street-map')) {
239 wp_register_script('leaflet', BDTEP_ASSETS_URL . 'vendor/js/leaflet.min.js', ['jquery'], '', true);
240 }
241 if (element_pack_is_widget_enabled('panel-slider')) {
242 wp_register_script('bdt-parallax', BDTEP_ASSETS_URL . 'vendor/js/parallax.min.js', ['jquery'], null, true);
243 }
244 if (element_pack_is_widget_enabled('image-magnifier')) {
245 wp_register_script('imagezoom', BDTEP_ASSETS_URL . 'vendor/js/jquery.imagezoom.min.js', ['jquery'], null, true);
246 }
247 if (element_pack_is_widget_enabled('logo-grid')) {
248 wp_register_script('popper', BDTEP_ASSETS_URL . 'vendor/js/popper.min.js', ['jquery'], null, true);
249 wp_register_script('tippyjs', BDTEP_ASSETS_URL . 'vendor/js/tippy.all.min.js', ['jquery'], null, true);
250 }
251 //advanced-image-gallery
252 if (element_pack_is_widget_enabled('custom-gallery') or element_pack_is_widget_enabled('tutor-lms-course-grid')) {
253 wp_register_script('tilt', BDTEP_ASSETS_URL . 'vendor/js/vanilla-tilt.min.js', ['jquery'], null, true);
254 }
255 if (element_pack_is_widget_enabled('reading-progress')) {
256 wp_register_script('progressHorizontal', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressHorizontal.min.js', ['jquery'], '2.0.2', true);
257 // wp_register_script('progressScroll', BDTEP_ASSETS_URL . 'vendor/js/jquery.progressScroll.min.js', ['jquery'], '2.0.2', true);
258 }
259 if (element_pack_is_widget_enabled('image-compare')) {
260 wp_register_script('image-compare-viewer', BDTEP_ASSETS_URL . 'vendor/js/image-compare-viewer.min.js', ['jquery'], '0.0.1', true);
261 }
262 if (element_pack_is_widget_enabled('calendly')) {
263 wp_register_script('calendly', BDTEP_ASSETS_URL . 'vendor/js/calendly.min.js', ['jquery'], '0.0.1', true);
264 }
265 if (element_pack_is_widget_enabled('dark-mode')) {
266 wp_register_script('darkmode', BDTEP_ASSETS_URL . 'vendor/js/darkmode.min.js', ['jquery'], '1.1.1', true);
267 }
268
269 if ( element_pack_is_widget_enabled( 'review-card' )
270 or element_pack_is_widget_enabled( 'review-card-carousel' )
271 or element_pack_is_widget_enabled( 'testimonial-grid' ) ) {
272 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 );
273 }
274 }
275
276 public function register_site_styles() {
277 $direction_suffix = is_rtl() ? '.rtl' : '';
278
279 // third party widget css
280 if (element_pack_is_widget_enabled('image-magnifier')) {
281 wp_register_style('imagezoom', BDTEP_ASSETS_URL . 'css/imagezoom' . $direction_suffix . '.css', [], BDTEP_VER);
282 }
283
284 /**
285 * ?TODO: Need to separate wc widget css
286 */
287 wp_register_style('ep-tutor-lms', BDTEP_ASSETS_URL . 'css/ep-tutor-lms.css', [], BDTEP_VER);
288 // Vendor style register
289 wp_register_style('tippy', BDTEP_ASSETS_URL . 'css/tippy.css', [], BDTEP_VER);
290 }
291
292 /**
293 * Loading site related style from here.
294 * @return [type] [description]
295 */
296 public function enqueue_site_styles() {
297
298 $direction_suffix = is_rtl() ? '.rtl' : '';
299
300 wp_register_style('bdt-uikit', BDTEP_ASSETS_URL . 'css/bdt-uikit' . $direction_suffix . '.css', [], '3.21.7');
301 wp_register_style('ep-helper', BDTEP_ASSETS_URL . 'css/ep-helper.css', [], BDTEP_VER);
302
303 wp_enqueue_style( 'bdt-uikit' );
304 wp_enqueue_style( 'ep-helper' );
305 }
306
307
308 /**
309 * Loading site related script that needs all time such as uikit.
310 * @return [type] [description]mn
311 */
312 public function enqueue_site_scripts() {
313
314 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
315
316 wp_register_script('bdt-uikit', BDTEP_ASSETS_URL . 'js/bdt-uikit.min.js', ['jquery'], '3.21.7', true);
317
318 wp_enqueue_script( 'bdt-uikit' );
319
320 if (!element_pack_is_asset_optimization_enabled()) {
321 wp_register_script('element-pack-helper', BDTEP_ASSETS_URL . 'js/common/helper.min.js', ['jquery'], BDTEP_VER, true);
322 wp_enqueue_script('element-pack-helper');
323 }
324
325
326 $script_config = [
327 'ajaxurl' => admin_url('admin-ajax.php'),
328 'nonce' => wp_create_nonce('element-pack-site'),
329 'data_table' => [
330 'language' => [
331 'lengthMenu' => sprintf(esc_html_x('Show %1s Entries', 'DataTable String', 'bdthemes-element-pack'), '_MENU_'),
332 'info' => sprintf(esc_html_x('Showing %1s to %2s of %3s entries', 'DataTable String', 'bdthemes-element-pack'), '_START_', '_END_', '_TOTAL_'),
333 'search' => esc_html_x('Search :', 'DataTable String', 'bdthemes-element-pack'),
334 'paginate' => [
335 'previous' => esc_html_x('Previous', 'DataTable String', 'bdthemes-element-pack'),
336 'next' => esc_html_x('Next', 'DataTable String', 'bdthemes-element-pack'),
337 ],
338 ],
339 ],
340 'contact_form' => [
341 'sending_msg' => esc_html_x('Sending message please wait...', 'Contact Form String', 'bdthemes-element-pack'),
342 'captcha_nd' => esc_html_x('Invisible captcha not defined!', 'Contact Form String', 'bdthemes-element-pack'),
343 'captcha_nr' => esc_html_x('Could not get invisible captcha response!', 'Contact Form String', 'bdthemes-element-pack'),
344
345 ],
346 'mailchimp' => [
347 'subscribing' => esc_html_x('Subscribing you please wait...', 'Mailchimp String', 'bdthemes-element-pack'),
348 ],
349 'search' => [
350 'more_result' => esc_html_x( 'More Results', 'Search Widget String', 'bdthemes-element-pack' ),
351 'search_result' => esc_html_x( 'SEARCH RESULT', 'Search Widget String', 'bdthemes-element-pack' ),
352 'not_found' => esc_html_x( 'not found', 'Search Widget String', 'bdthemes-element-pack' ),
353 ],
354 'words_limit' => [
355 'read_more' => esc_html_x( '[read more]', 'Read More String', 'bdthemes-element-pack' ),
356 'read_less' => esc_html_x( '[read less]', 'Read Less String', 'bdthemes-element-pack' ),
357 ],
358 'elements_data' => $this->elements_data,
359 ];
360
361
362 // localize for user login widget ajax login script
363
364 // if (!defined('ICL_LANGUAGE_CODE')) {
365 // define('ICL_LANGUAGE_CODE', null);
366 // }
367 // ICL_LANGUAGE_CODE = '';
368 // TODO Language dynamic for ajax call
369
370 wp_localize_script(
371 'bdt-uikit',
372 'element_pack_ajax_login_config',
373 array(
374 'ajaxurl' => admin_url('admin-ajax.php'),
375 'language' => substr(get_locale(), 0, 2),
376 'loadingmessage' => esc_html_x('Sending user info, please wait...', 'User Login and Register', 'bdthemes-element-pack'),
377 'unknownerror' => esc_html_x('Unknown error, make sure access is correct!', 'User Login and Register', 'bdthemes-element-pack'),
378 )
379 );
380
381 $script_config = apply_filters('element_pack/frontend/localize_settings', $script_config);
382
383 // TODO for editor script
384 wp_localize_script('bdt-uikit', 'ElementPackConfig', $script_config);
385 }
386
387 public function enqueue_editor_scripts() {
388
389 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
390
391 wp_register_script(
392 'element-pack',
393 BDTEP_ASSETS_URL . 'js/ep-editor' . $suffix . '.js',
394 [
395 'backbone-marionette',
396 'elementor-common-modules',
397 'elementor-editor-modules',
398 ],
399 BDTEP_VER,
400 true
401 );
402
403 wp_enqueue_script( 'element-pack' );
404
405 $localize_data = [
406 'pro_installed' => element_pack_pro_installed(),
407 'promotional_widgets' => [],
408 'elementPackDynamicTags' => [
409 'enabled' => true,
410 'isProActive' => element_pack_pro_installed(),
411 'upgradeUrl' => 'https://elementpack.pro/pricing/',
412 'proFeatures' => [
413 'title' => esc_html__('Element Pack Pro', 'bdthemes-element-pack'),
414 'content' => esc_html__('Unlock advanced dynamic content features with Element Pack Pro. Access dozens of dynamic tags to create more personalized and dynamic sites.', 'bdthemes-element-pack'),
415 'upgradeText' => esc_html__('Upgrade to Pro', 'bdthemes-element-pack')
416 ]
417 ]
418 ];
419
420 if (!element_pack_pro_installed()) {
421 $pro_widget_map = new Pro_Widget_Map();
422 $localize_data['promotional_widgets'] = $pro_widget_map->get_pro_widget_map();
423 }
424
425 wp_localize_script(
426 'element-pack',
427 'ElementPackConfig',
428 $localize_data
429 );
430
431 // $locale_settings = [
432 // 'i18n' => [],
433 // 'urls' => [
434 // 'modules' => BDTEP_MODULES_URL,
435 // ],
436 // ];
437
438 // $locale_settings = apply_filters( 'element_pack/editor/localize_settings', $locale_settings );
439
440 // wp_localize_script(
441 // 'element-pack',
442 // 'ElementPackConfig',
443 // $locale_settings
444 // );f
445 }
446
447 /**
448 * Load editor editor related style from here
449 * @return [type] [description]
450 */
451 public function enqueue_preview_styles() {
452
453 wp_enqueue_style('ep-preview', BDTEP_ASSETS_URL . 'css/ep-preview.css', '', BDTEP_VER);
454 }
455
456
457 public function enqueue_editor_styles() {
458
459 wp_register_style('ep-editor', BDTEP_ASSETS_URL . 'css/ep-editor.css', '', BDTEP_VER);
460 wp_enqueue_style('ep-editor');
461 }
462
463
464 public function enqueue_minified_css() {
465
466 $upload_dir = $this->get_upload_dir() . 'css/ep-styles.css';
467 $version = get_option('element-pack-minified-asset-manager-version');
468
469 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
470 $upload_url = $this->get_upload_url() . 'css/ep-styles.css';
471 wp_register_style('ep-styles', $upload_url, [], $version);
472 } else {
473 wp_register_style('ep-styles', BDTEP_URL . 'assets/css/ep-styles.css', [], BDTEP_VER);
474 wp_register_style('ep-font', BDTEP_ASSETS_URL . 'css/ep-font.css', [], BDTEP_VER);
475 }
476
477 if (element_pack_is_asset_optimization_enabled()) {
478 wp_enqueue_style('ep-styles');
479 }
480
481 /**
482 * Must load into Editor for Extension Support
483 *
484 * by U-011
485 */
486 if ( Element_Pack_Loader::elementor()->preview->is_preview_mode() || Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
487 wp_enqueue_style( 'ep-styles' );
488 }
489 }
490
491 public function enqueue_minified_js() {
492 $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
493
494 $upload_dir = $this->get_upload_dir() . 'js/ep-scripts.js';
495 $version = get_option('element-pack-minified-asset-manager-version');
496
497 if (element_pack_is_asset_optimization_enabled() && file_exists($upload_dir)) {
498 $upload_url = $this->get_upload_url() . 'js/ep-scripts.js';
499
500 wp_register_script('ep-scripts', $upload_url, ['jquery'], $version, true);
501 } else {
502 wp_register_script('ep-scripts', BDTEP_URL . 'assets/js/ep-scripts' . $suffix . '.js', ['jquery'], BDTEP_VER, true);
503 }
504
505 if (element_pack_is_asset_optimization_enabled()) {
506 wp_enqueue_script('ep-scripts');
507 }
508 /**
509 * Must load into Editor for Extension Support
510 *
511 * by U-011
512 */
513 if ( Element_Pack_Loader::elementor()->preview->is_preview_mode() || Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
514 wp_enqueue_script( 'ep-scripts' );
515 }
516 }
517
518 /**
519 * Callback to shortcodes template
520 * @param array $atts attributes for shortcode.
521 */
522 public function shortcode_template($atts) {
523
524 $atts = shortcode_atts(
525 array(
526 'id' => '',
527 ),
528 $atts,
529 'rooten_custom_template'
530 );
531
532 $id = !empty($atts['id']) ? intval($atts['id']) : '';
533
534 if (empty($id)) {
535 return '';
536 }
537
538 return self::elementor()->frontend->get_builder_content_for_display($id);
539 }
540
541
542 /**
543 * Add element_pack_ajax_login() function with wp_ajax_nopriv_ function
544 * @return [type] [description]
545 */
546 public function element_pack_ajax_login_init() {
547 // Enable the user with no privileges to run element_pack_ajax_login() in AJAX
548 add_action('wp_ajax_nopriv_element_pack_ajax_login', [$this, "element_pack_ajax_login"]);
549 }
550
551 /**
552 * For ajax login
553 * @return [type] [description]
554 */
555 public function element_pack_ajax_login() {
556 // First check the nonce, if it fails the function will break
557 check_ajax_referer('ajax-login-nonce', 'bdt-user-login-sc');
558
559 // Nonce is checked, get the POST data and sign user on
560 $access_info = [];
561 $access_info['user_login'] = !empty($_POST['user_login']) ? $_POST['user_login'] : "";
562 $access_info['user_password'] = !empty($_POST['user_password']) ? $_POST['user_password'] : "";
563 $access_info['remember'] = !empty($_POST['rememberme']) ? true : false;
564 $user_signon = wp_signon($access_info, false);
565
566 if (!is_wp_error($user_signon)) {
567 echo wp_json_encode(
568 [
569 'loggedin' => true,
570 'message' => esc_html_x('Login successful, Redirecting...', 'User Login and Register', 'bdthemes-element-pack')
571 ]
572 );
573 } else {
574 echo wp_json_encode(
575 [
576 'loggedin' => false,
577 'message' => esc_html_x('Oops! Wrong username or password!', 'User Login and Register', 'bdthemes-element-pack')
578 ]
579 );
580 }
581
582 die();
583 }
584
585
586
587 // Load WPML compatibility instance
588 public function wpml_compatiblity() {
589 return Element_Pack_WPML::get_instance();
590 }
591
592
593 /**
594 * initialize the category
595 * @return void
596 */
597 public function element_pack_init() {
598
599 $this->_modules_manager = new Manager();
600
601 do_action('bdthemes_element_pack/init');
602 }
603
604 function ElementPack_Json_File_Import_register_controls() {
605 $controls_manager = Plugin::$instance->controls_manager;
606 $controls_manager->register(new ElementPack_JSON_File_Upload_Control());
607 }
608
609
610
611 function ElementPack_FB_Token_Register_Controls() {
612
613 $controls_manager = Plugin::$instance->controls_manager;
614 $controls_manager->register(new ElementPack_FB_Access_Token_Generator_Control());
615 }
616
617 /**
618 * initialize the category
619 * @return [type] [description]
620 */
621 public function element_pack_category_register() {
622
623 $elementor = Plugin::$instance;
624
625 // Add element category in panel
626 $elementor->elements_manager->add_category(BDTEP_SLUG, ['title' => BDTEP_TITLE, 'icon' => 'font']);
627 }
628
629 public function element_pack_svg_support() {
630
631 return SVG_Support::get_instance();
632 }
633
634 private function setup_hooks() {
635
636 add_action('elementor/controls/register', [$this, 'ElementPack_Json_File_Import_register_controls']);
637 add_action('elementor/controls/register', [$this, 'ElementPack_FB_Token_Register_Controls']);
638 add_action('elementor/elements/categories_registered', [$this, 'element_pack_category_register']);
639 add_action('elementor/init', [$this, 'element_pack_init']);
640
641 add_action('elementor/editor/after_enqueue_styles', [$this, 'enqueue_editor_styles']);
642
643 add_action('wp_enqueue_scripts', [$this, 'register_site_styles'], 99999);
644 add_action('wp_enqueue_scripts', [$this, 'register_site_scripts'], 99999);
645 add_action('wp_enqueue_scripts', [$this, 'enqueue_site_styles'], 99999);
646 add_action('wp_enqueue_scripts', [$this, 'enqueue_site_scripts'], 99999);
647
648 add_action('elementor/preview/enqueue_styles', [$this, 'enqueue_preview_styles']);
649 add_action('elementor/editor/after_enqueue_scripts', [$this, 'enqueue_editor_scripts']);
650
651
652 // For frontend css load
653 add_action('elementor/frontend/after_enqueue_styles', [$this, 'enqueue_minified_css']);
654 add_action('elementor/frontend/after_enqueue_scripts', [$this, 'enqueue_minified_js']);
655
656
657 add_shortcode('rooten_custom_template', [$this, 'shortcode_template']);
658
659
660 // When user not login add this action
661 if (!is_user_logged_in()) {
662 add_action('elementor/init', [$this, 'element_pack_ajax_login_init']);
663 }
664 }
665
666 /**
667 * Load files on init
668 */
669 public function init() {
670 if ( is_admin() ) {
671 // Notice class
672 require_once BDTEP_ADMIN_PATH . 'admin.php';
673 new Admin();
674
675 require_once( BDTEP_ADMIN_PATH . 'admin-biggopti.php' );
676 require_once( BDTEP_ADMIN_PATH . 'admin-api-biggopti.php' );
677 }
678 }
679
680 /**
681 * Element_Pack_Loader constructor.
682 */
683 private function __construct() {
684 // Register class automatically
685 spl_autoload_register([$this, 'autoload']);
686 // Include some backend files
687 $this->_includes();
688
689 // Finally hooked up all things here
690 $this->setup_hooks();
691
692 $this->element_pack_svg_support()->init();
693
694 $this->wpml_compatiblity()->init();
695
696 add_action( 'init', [ $this, 'init' ] );
697 }
698 }
699
700 if (!defined('BDTEP_TESTS')) {
701 // In tests we run the instance manually.
702 Element_Pack_Loader::instance();
703 }
704 // handy function for push data
705 function element_pack_config() {
706 return Element_Pack_Loader::instance();
707 }
708