PluginProbe
Elementor Website Builder – more than just a page builder / 3.13.2
Elementor Website Builder – more than just a page builder v3.13.2
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | core/admin/admin.php +63 -346 4.2.03.13.2 View file →
@@ -2,20 +2,17 @@
2 2 namespace Elementor\Core\Admin;
3 3
4 4 use Elementor\Api;
5 5 use Elementor\Beta_Testers;
6 +use Elementor\Core\Admin\Menu\Main as MainMenu;
6 7 use Elementor\App\Modules\Onboarding\Module as Onboarding_Module;
7 8 use Elementor\Core\Base\App;
8 9 use Elementor\Core\Upgrade\Manager as Upgrade_Manager;
9 -use Elementor\Core\Utils\Assets_Config_Provider;
10 10 use Elementor\Core\Utils\Collection;
11 -use Elementor\Modules\FloatingButtons\Module as Floating_Buttons_Module;
12 11 use Elementor\Plugin;
13 12 use Elementor\Settings;
14 13 use Elementor\User;
15 14 use Elementor\Utils;
16 -use Elementor\Core\Utils\Hints;
17 -use Elementor\Core\DocumentTypes\Page;
18 15
19 16 if ( ! defined( 'ABSPATH' ) ) {
20 17 exit; // Exit if accessed directly.
21 18 }
@@ -38,36 +35,8 @@
38 35 return 'admin';
39 36 }
40 37
41 38 /**
42 - * Check if current page is an Elementor admin page.
43 - *
44 - * @param \WP_Screen|null $current_screen Optional. Screen object to check. Defaults to current screen.
45 - *
46 - * @return bool Whether current page is an Elementor admin page.
47 - */
48 - public static function is_elementor_admin_page( $current_screen = null ) {
49 - if ( ! $current_screen ) {
50 - $current_screen = get_current_screen();
51 - }
52 -
53 - if ( ! $current_screen ) {
54 - return false;
55 - }
56 -
57 - $screen_id = $current_screen->id ?? '';
58 - $post_type = $current_screen->post_type ?? '';
59 -
60 - $is_elementor_screen = strpos( $screen_id, 'elementor' ) !== false
61 - || strpos( $screen_id, Floating_Buttons_Module::CPT_FLOATING_BUTTONS ) !== false;
62 -
63 - $is_elementor_post_type = strpos( $post_type, 'elementor' ) !== false
64 - || strpos( $post_type, Floating_Buttons_Module::CPT_FLOATING_BUTTONS ) !== false;
65 -
66 - return $is_elementor_screen || $is_elementor_post_type;
67 - }
68 -
69 - /**
70 39 * @since 2.2.0
71 40 * @access public
72 41 */
73 42 public function maybe_redirect_to_getting_started() {
@@ -105,27 +74,40 @@
105 74
106 75 exit;
107 76 }
108 77
78 + private function get_package_config( $package_name ) {
79 + $asset_file = ELEMENTOR_ASSETS_PATH . "js/packages/$package_name.asset.php";
80 +
81 + if ( ! file_exists( $asset_file ) ) {
82 + return [];
83 + }
84 +
85 + $data = require $asset_file;
86 +
87 + return [
88 + 'handle' => $data['handle'],
89 + 'src' => $data['src'],
90 + 'deps' => $data['deps'],
91 + ];
92 + }
93 +
109 94 private function register_packages() {
110 - $assets_config_provider = ( new Assets_Config_Provider() )
111 - ->set_path_resolver( function ( $name ) {
112 - return ELEMENTOR_ASSETS_PATH . "js/packages/{$name}/{$name}.asset.php";
113 - } );
114 -
115 - Collection::make( [ 'ui', 'icons', 'query' ] )
116 - ->each( function( $package ) use ( $assets_config_provider ) {
95 + Collection::make( [ 'ui', 'icons' ] )
96 + ->map( function( $package_name ) {
97 + return $this->get_package_config( $package_name );
98 + } )
99 + ->filter( function( $package_config ) {
100 + return ! empty( $package_config );
101 + } )
102 + ->each( function( $package_config ) {
117 103 $suffix = Utils::is_script_debug() ? '' : '.min';
118 - $config = $assets_config_provider->load( $package )->get( $package );
104 + $src = str_replace( '{{MIN_SUFFIX}}', $suffix, $package_config['src'] );
119 105
120 - if ( ! $config ) {
121 - return;
122 - }
123 -
124 106 wp_register_script(
125 - $config['handle'],
126 - ELEMENTOR_ASSETS_URL . "js/packages/{$package}/{$package}{$suffix}.js",
127 - $config['deps'],
107 + $package_config['handle'],
108 + $src,
109 + $package_config['deps'],
128 110 ELEMENTOR_VERSION,
129 111 true
130 112 );
131 113 } );
@@ -157,10 +139,10 @@
157 139 'elementor-ai-admin',
158 140 $this->get_js_assets_url( 'ai-admin' ),
159 141 [
160 142 'elementor-common',
161 - 'elementor-v2-ui',
162 - 'elementor-v2-icons',
143 + 'elementor-packages-ui',
144 + 'elementor-packages-icons',
163 145 ],
164 146 ELEMENTOR_VERSION,
165 147 true
166 148 );
@@ -177,12 +159,8 @@
177 159 );
178 160
179 161 wp_enqueue_script( 'elementor-admin' );
180 162
181 - wp_set_script_translations( 'elementor-admin', 'elementor' );
182 -
183 - $this->maybe_enqueue_hints();
184 -
185 163 $this->print_config();
186 164 }
187 165
188 166 /**
@@ -195,11 +173,13 @@
195 173 * @since 1.0.0
196 174 * @access public
197 175 */
198 176 public function enqueue_styles() {
177 + $direction_suffix = is_rtl() ? '-rtl' : '';
178 +
199 179 wp_register_style(
200 180 'elementor-admin',
201 - $this->get_css_assets_url( 'admin' ),
181 + $this->get_css_assets_url( 'admin' . $direction_suffix ),
202 182 [
203 183 'elementor-common',
204 184 ],
205 185 ELEMENTOR_VERSION
@@ -371,15 +351,10 @@
371 351 $settings_link = sprintf( '<a href="%1$s">%2$s</a>', admin_url( 'admin.php?page=' . Settings::PAGE_ID ), esc_html__( 'Settings', 'elementor' ) );
372 352
373 353 array_unshift( $links, $settings_link );
374 354
375 - $go_pro_text = esc_html__( 'Get Elementor Pro', 'elementor' );
376 - if ( Utils::is_sale_time() ) {
377 - $go_pro_text = esc_html__( 'Sale! Upgrade Now', 'elementor' );
378 - }
355 + $links['go_pro'] = sprintf( '<a href="%1$s" target="_blank" class="elementor-plugins-gopro">%2$s</a>', 'https://go.elementor.com/go-pro-wp-plugins/', esc_html__( 'Get Elementor Pro', 'elementor' ) );
379 356
380 - $links['go_pro'] = sprintf( '<a href="%1$s" target="_blank" class="elementor-plugins-gopro">%2$s</a>', 'https://go.elementor.com/go-pro-wp-plugins/', $go_pro_text );
381 -
382 357 return $links;
383 358 }
384 359
385 360 /**
@@ -401,10 +376,10 @@
401 376 */
402 377 public function plugin_row_meta( $plugin_meta, $plugin_file ) {
403 378 if ( ELEMENTOR_PLUGIN_BASE === $plugin_file ) {
404 379 $row_meta = [
405 - 'docs' => '<a href="https://go.elementor.com/docs-admin-plugins/" aria-label="' . esc_attr__( 'View Elementor Documentation', 'elementor' ) . '" target="_blank">' . esc_html__( 'Docs & FAQs', 'elementor' ) . '</a>',
406 - 'ideo' => '<a href="https://go.elementor.com/yt-admin-plugins/" aria-label="' . esc_attr__( 'View Elementor Video Tutorials', 'elementor' ) . '" target="_blank">' . esc_html__( 'Video Tutorials', 'elementor' ) . '</a>',
380 + 'docs' => '<a href="https://go.elementor.com/docs-admin-plugins/" aria-label="' . esc_attr( esc_html__( 'View Elementor Documentation', 'elementor' ) ) . '" target="_blank">' . esc_html__( 'Docs & FAQs', 'elementor' ) . '</a>',
381 + 'ideo' => '<a href="https://go.elementor.com/yt-admin-plugins/" aria-label="' . esc_attr( esc_html__( 'View Elementor Video Tutorials', 'elementor' ) ) . '" target="_blank">' . esc_html__( 'Video Tutorials', 'elementor' ) . '</a>',
407 382 ];
408 383
409 384 $plugin_meta = array_merge( $plugin_meta, $row_meta );
410 385 }
@@ -431,9 +406,9 @@
431 406 $is_elementor_screen = ( $current_screen && false !== strpos( $current_screen->id, 'elementor' ) );
432 407
433 408 if ( $is_elementor_screen ) {
434 409 $footer_text = sprintf(
435 - /* translators: 1: Elementor, 2: Link to plugin review */
410 + /* translators: 1: Elementor, 2: Link to plugin review */
436 411 __( 'Enjoyed %1$s? Please leave us a %2$s rating. We really appreciate your support!', 'elementor' ),
437 412 '<strong>' . esc_html__( 'Elementor', 'elementor' ) . '</strong>',
438 413 '<a href="https://go.elementor.com/admin-review/" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
439 414 );
@@ -508,9 +483,9 @@
508 483 ?>
509 484 <div class="e-overview__header">
510 485 <?php if ( $show_versions ) { ?>
511 486 <div class="e-overview__logo">
512 - <div class="e-logo-wrapper"><i class="eicon-elementor-circle"></i></div>
487 + <div class="e-logo-wrapper"><i class="eicon-elementor"></i></div>
513 488 </div>
514 489 <div class="e-overview__versions">
515 490 <span class="e-overview__version"><?php echo esc_html__( 'Elementor', 'elementor' ); ?> v<?php echo ELEMENTOR_VERSION; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
516 491 <?php
@@ -537,9 +512,9 @@
537 512 * Displays the Elementor dashboard widget - recently edited section.
538 513 * Fired by `elementor_dashboard_overview_widget` function.
539 514 *
540 515 * @param array $args
541 - * @param bool $show_heading
516 + * @param bool $show_heading
542 517 *
543 518 * @return void
544 519 * @since 3.12.0
545 520 */
@@ -559,9 +534,9 @@
559 534
560 535 $date = date_i18n( _x( 'M jS', 'Dashboard Overview Widget Recently Date', 'elementor' ), get_the_modified_time( 'U' ) );
561 536 ?>
562 537 <li class="e-overview__post">
563 - <a href="<?php echo esc_url( $document->get_edit_url() ); ?>" class="e-overview__post-link"><?php echo esc_html( get_the_title() ); ?>
538 + <a href="<?php echo esc_attr( $document->get_edit_url() ); ?>" class="e-overview__post-link"><?php echo esc_html( get_the_title() ); ?>
564 539 <span class="dashicons dashicons-edit"></span></a>
565 540 <span><?php echo $date; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>, <?php the_modified_time(); ?></span>
566 541 </li>
567 542 <?php } ?>
@@ -573,9 +548,9 @@
573 548 /**
574 549 * Displays the Elementor dashboard widget - news and updates section.
575 550 * Fired by `elementor_dashboard_overview_widget` function.
576 551 *
577 - * @param int $limit_feed
552 + * @param int $limit_feed
578 553 * @param bool $show_heading
579 554 *
580 555 * @return void
581 556 * @since 3.12.0
@@ -620,9 +595,9 @@
620 595 <div class="e-overview__footer e-divider_top">
621 596 <ul>
622 597 <?php foreach ( self::static_get_dashboard_overview_widget_footer_actions() as $action_id => $action ) { ?>
623 598 <li class="e-overview__<?php echo esc_attr( $action_id ); ?>">
624 - <a href="<?php echo esc_url( $action['link'] ); ?>" target="_blank"><?php echo esc_html( $action['title'] ); ?>
599 + <a href="<?php echo esc_attr( $action['link'] ); ?>" target="_blank"><?php echo esc_html( $action['title'] ); ?>
625 600 <span class="screen-reader-text"><?php echo esc_html__( '(opens in a new window)', 'elementor' ); ?></span>
626 601 <span aria-hidden="true" class="dashicons dashicons-external"></span></a>
627 602 </li>
628 603 <?php } ?>
@@ -650,16 +625,19 @@
650 625 'link' => 'https://go.elementor.com/overview-widget-docs/',
651 626 ],
652 627 ];
653 628
654 - $additions_actions = [];
655 - $additions_actions['ai'] = [
656 - 'title' => esc_html__( 'Build Smart with AI', 'elementor' ),
657 - 'link' => 'https://go.elementor.com/overview-widget-ai/',
629 + $additions_actions = [
630 + 'go-pro' => [
631 + 'title' => esc_html__( 'Upgrade', 'elementor' ),
632 + 'link' => 'https://go.elementor.com/go-pro-wp-overview-widget/',
633 + ],
658 634 ];
659 - $additions_actions['go-pro'] = [
660 - 'title' => esc_html__( 'Upgrade', 'elementor' ),
661 - 'link' => 'https://go.elementor.com/go-pro-wp-overview-widget/',
635 +
636 + // Visible to all core users when Elementor Pro is not installed.
637 + $additions_actions['find_an_expert'] = [
638 + 'title' => esc_html__( 'Find an Expert', 'elementor' ),
639 + 'link' => 'https://go.elementor.com/go-pro-find-an-expert/',
662 640 ];
663 641
664 642 /**
665 643 * Dashboard widget footer actions.
@@ -718,10 +696,8 @@
718 696 }
719 697
720 698 $post_data = Utils::get_super_global_value( $_GET, 'post_data' ) ?? [];
721 699
722 - $post_data = $this->filter_post_data( $post_data );
723 -
724 700 /**
725 701 * Create new post meta data.
726 702 *
727 703 * Filters the meta data of any new post created.
@@ -745,115 +721,14 @@
745 721 if ( is_wp_error( $document ) ) {
746 722 wp_die( $document ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
747 723 }
748 724
749 - wp_safe_redirect( $document->get_edit_url() );
725 + wp_redirect( $document->get_edit_url() );
750 726
751 727 die;
752 728 }
753 729
754 - public function admin_action_site_settings_redirect() {
755 - check_admin_referer( 'elementor_action_site_settings_redirect' );
756 -
757 - if ( ! current_user_can( 'edit_theme_options' ) ) {
758 - wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'elementor' ) );
759 - }
760 -
761 - $active_tab = filter_input( INPUT_GET, 'active-tab', FILTER_SANITIZE_ENCODED );
762 -
763 - $site_settings_url_config = Page::get_site_settings_url_config( $active_tab );
764 -
765 - if ( empty( $site_settings_url_config['url'] ) ) {
766 - wp_die( esc_html__( 'Unable to create or access Site Settings page.', 'elementor' ) );
767 - }
768 -
769 - wp_safe_redirect( $site_settings_url_config['url'] );
770 -
771 - die;
772 - }
773 -
774 730 /**
775 - * Admin action edit website.
776 - *
777 - * Redirects to the homepage edit URL if it exists and is built with Elementor,
778 - * otherwise redirects to create a new page.
779 - *
780 - * Fired by `admin_action_elementor_edit_website` action.
781 - *
782 - * @since 3.x.x
783 - * @access public
784 - */
785 - public function admin_action_edit_website_redirect() {
786 - check_admin_referer( 'elementor_action_edit_website' );
787 -
788 - if ( ! User::is_current_user_can_edit_post_type( 'page' ) ) {
789 - wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'elementor' ) );
790 - }
791 -
792 - $homepage_id = $this->get_homepage_id();
793 - $edit_url = $this->get_edit_website_url( $homepage_id );
794 -
795 - wp_safe_redirect( $edit_url );
796 -
797 - die;
798 - }
799 -
800 - private function get_homepage_id(): ?int {
801 - if ( get_option( 'show_on_front' ) !== 'page' ) {
802 - return null;
803 - }
804 -
805 - $homepage_id = get_option( 'page_on_front' );
806 -
807 - return $homepage_id ? (int) $homepage_id : null;
808 - }
809 -
810 - private function get_edit_website_url( ?int $homepage_id ): string {
811 - if ( ! $homepage_id ) {
812 - return Plugin::$instance->documents->get_create_new_post_url( 'page' );
813 - }
814 -
815 - $document = Plugin::$instance->documents->get( $homepage_id );
816 -
817 - if ( ! $document || ! $document->is_built_with_elementor() ) {
818 - return Plugin::$instance->documents->get_create_new_post_url( 'page' );
819 - }
820 -
821 - return $document->get_edit_url();
822 - }
823 -
824 - private function get_allowed_fields_for_role() {
825 - $allowed_fields = [
826 - 'post_title',
827 - 'post_content',
828 - 'post_excerpt',
829 - 'post_category',
830 - 'post_type',
831 - 'tags_input',
832 - ];
833 -
834 - if ( current_user_can( 'publish_posts' ) ) {
835 - $allowed_fields[] = 'post_status';
836 - }
837 -
838 - if ( current_user_can( 'edit_others_posts' ) ) {
839 - $allowed_fields[] = 'post_author';
840 - }
841 -
842 - return $allowed_fields;
843 - }
844 -
845 - private function filter_post_data( $post_data ) {
846 - $allowed_fields = $this->get_allowed_fields_for_role();
847 - return array_filter(
848 - $post_data,
849 - function( $key ) use ( $allowed_fields ) {
850 - return in_array( $key, $allowed_fields, true );
851 - },
852 - ARRAY_FILTER_USE_KEY
853 - );
854 - }
855 - /**
856 731 * @since 2.3.0
857 732 * @access public
858 733 */
859 734 public function add_new_template_template() {
@@ -859,31 +734,13 @@
859 734 public function add_new_template_template() {
860 735 Plugin::$instance->common->add_template( ELEMENTOR_PATH . 'includes/admin-templates/new-template.php' );
861 736 }
862 737
863 - public function add_new_floating_elements_template() {
864 - Plugin::$instance->common->add_template( ELEMENTOR_PATH . 'includes/admin-templates/new-floating-elements.php' );
865 - }
866 -
867 - public function enqueue_new_floating_elements_scripts() {
868 - $suffix = Utils::is_script_debug() ? '' : '.min';
869 -
870 - wp_enqueue_script(
871 - 'elementor-floating-elements-modal',
872 - ELEMENTOR_ASSETS_URL . 'js/floating-elements-modal' . $suffix . '.js',
873 - [],
874 - ELEMENTOR_VERSION,
875 - true
876 - );
877 -
878 - wp_set_script_translations( 'elementor-floating-elements-modal', 'elementor' );
879 - }
880 -
881 738 /**
882 739 * @access public
883 740 */
884 741 public function enqueue_new_template_scripts() {
885 - $suffix = Utils::is_script_debug() ? '' : '.min';
742 + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
886 743
887 744 wp_enqueue_script(
888 745 'elementor-new-template',
889 746 ELEMENTOR_ASSETS_URL . 'js/new-template' . $suffix . '.js',
@@ -890,10 +747,8 @@
890 747 [],
891 748 ELEMENTOR_VERSION,
892 749 true
893 750 );
894 -
895 - wp_set_script_translations( 'elementor-new-template', 'elementor' );
896 751 }
897 752
898 753 /**
899 754 * @since 2.6.0
@@ -906,9 +761,9 @@
906 761 /**
907 762 * @access public
908 763 */
909 764 public function enqueue_beta_tester_scripts() {
910 - $suffix = Utils::is_script_debug() ? '' : '.min';
765 + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
911 766
912 767 wp_enqueue_script(
913 768 'elementor-beta-tester',
914 769 ELEMENTOR_ASSETS_URL . 'js/beta-tester' . $suffix . '.js',
@@ -915,26 +770,10 @@
915 770 [],
916 771 ELEMENTOR_VERSION,
917 772 true
918 773 );
919 -
920 - wp_set_script_translations( 'elementor-beta-tester', 'elementor' );
921 774 }
922 775
923 - public function init_floating_elements() {
924 - $screens = [
925 - 'elementor_library_page_e-floating-buttons' => true,
926 - 'edit-e-floating-buttons' => true,
927 - ];
928 -
929 - if ( ! isset( $screens[ get_current_screen()->id ] ) ) {
930 - return;
931 - }
932 -
933 - add_action( 'admin_head', [ $this, 'add_new_floating_elements_template' ] );
934 - add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_new_floating_elements_scripts' ] );
935 - }
936 -
937 776 /**
938 777 * @access public
939 778 */
940 779 public function init_new_template() {
@@ -966,9 +805,9 @@
966 805 </div>
967 806 <div class="e-major-update-warning__message">
968 807 <?php
969 808 printf(
970 - /* translators: %1$s Link open tag, %2$s: Link close tag. */
809 + /* translators: %1$s Link open tag, %2$s: Link close tag. */
971 810 esc_html__( 'The latest update includes some substantial changes across different areas of the plugin. We highly recommend you %1$sbackup your site before upgrading%2$s, and make sure you first update in a staging environment', 'elementor' ),
972 811 '<a href="https://go.elementor.com/wp-dash-update-backup/">',
973 812 '</a>'
974 813 );
@@ -1002,8 +841,12 @@
1002 841
1003 842 $this->add_component( 'feedback', new Feedback() );
1004 843 $this->add_component( 'admin-notices', new Admin_Notices() );
1005 844
845 + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) {
846 + $this->register_menu();
847 + }
848 +
1006 849 add_action( 'admin_init', [ $this, 'maybe_redirect_to_getting_started' ] );
1007 850
1008 851 add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
1009 852 add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_styles' ] );
@@ -1023,20 +866,15 @@
1023 866 add_action( 'wp_dashboard_setup', [ $this, 'register_dashboard_widgets' ] );
1024 867
1025 868 // Admin Actions
1026 869 add_action( 'admin_action_elementor_new_post', [ $this, 'admin_action_new_post' ] );
1027 - add_action( 'admin_action_elementor_site_settings_redirect', [ $this, 'admin_action_site_settings_redirect' ] );
1028 - add_action( 'admin_action_elementor_edit_website_redirect', [ $this, 'admin_action_edit_website_redirect' ] );
1029 870
1030 871 add_action( 'current_screen', [ $this, 'init_new_template' ] );
1031 - add_action( 'current_screen', [ $this, 'init_floating_elements' ] );
1032 872 add_action( 'current_screen', [ $this, 'init_beta_tester' ] );
1033 873
1034 874 add_action( 'in_plugin_update_message-' . ELEMENTOR_PLUGIN_BASE, function( $plugin_data ) {
1035 875 $this->version_update_warning( ELEMENTOR_VERSION, $plugin_data['new_version'] );
1036 876 } );
1037 -
1038 - add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_hints' ] );
1039 877 }
1040 878
1041 879 /**
1042 880 * @since 2.3.0
@@ -1052,10 +890,8 @@
1052 890 'home_url' => home_url(),
1053 891 'settings_url' => Settings::get_url(),
1054 892 'user' => [
1055 893 'introduction' => User::get_introduction_meta(),
1056 - 'restrictions' => Plugin::$instance->role_manager->get_user_restrictions_array(),
1057 - 'is_administrator' => current_user_can( 'manage_options' ),
1058 894 ],
1059 895 'beta_tester' => [
1060 896 'beta_tester_signup' => Beta_Testers::BETA_TESTER_SIGNUP,
1061 897 'has_email' => $beta_tester_email,
@@ -1104,127 +940,8 @@
1104 940 ];
1105 941 } )->all();
1106 942 }
1107 943
1108 - private function maybe_enqueue_hints() {
1109 - $plugin_slug = 'image-optimization';
1110 -
1111 - if ( ! Hints::should_display_hint( $plugin_slug ) ) {
1112 - return;
1113 - }
1114 -
1115 - wp_register_script(
1116 - 'media-hints',
1117 - $this->get_js_assets_url( 'media-hints' ),
1118 - [],
1119 - ELEMENTOR_VERSION,
1120 - true
1121 - );
1122 -
1123 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1124 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
1125 - $is_active = Hints::is_plugin_active( $plugin_slug );
1126 -
1127 - if ( $is_active ) {
1128 - return;
1129 - }
1130 -
1131 - if ( $one_subscription ) {
1132 - if ( ! $is_installed ) {
1133 - $description = esc_html__( 'Automatically optimize images to improve site speed and performance. Included with your ONE subscription.', 'elementor' );
1134 - $button_text = esc_html__( 'Install now', 'elementor' );
1135 - $button_url = Hints::get_plugin_install_url( $plugin_slug );
1136 - } elseif ( ! $is_active ) {
1137 - $description = esc_html__( 'Image Optimization is installed and included in your ONE subscription. Activate it to optimize images and improve site performance.', 'elementor' );
1138 - $button_text = esc_html__( 'Activate now', 'elementor' );
1139 - $button_url = Hints::get_plugin_activate_url( $plugin_slug );
1140 - }
1141 - } else {
1142 - $description = esc_html__( 'Optimize your images to enhance site performance by using Image Optimization.', 'elementor' );
1143 - if ( ! $is_installed ) {
1144 - $button_text = esc_html__( 'Install now', 'elementor' );
1145 - $button_url = Hints::get_plugin_install_url( $plugin_slug );
1146 - } elseif ( ! $is_active ) {
1147 - $button_text = esc_html__( 'Activate now', 'elementor' );
1148 - $button_url = Hints::get_plugin_activate_url( $plugin_slug );
1149 - }
1150 - }
1151 -
1152 - $dismissible = 'image_optimizer_hint';
1153 -
1154 - $title = esc_html__( 'Speed up your website with Image Optimization', 'elementor' );
1155 - $content = sprintf(
1156 - "<strong>%1\$s</strong><br>%2\$s <a class='e-btn-1' href='%3\$s' target='_blank'>%4\$s</a>!",
1157 - $title,
1158 - $description,
1159 - $button_url,
1160 - $button_text
1161 - );
1162 -
1163 - wp_localize_script( 'media-hints', 'elementorAdminHints', [
1164 - 'mediaHint' => [
1165 - 'display' => true,
1166 - 'type' => 'info',
1167 - 'content' => $content,
1168 - 'icon' => true,
1169 - 'dismissible' => $dismissible,
1170 - 'dismiss' => esc_attr__( 'Dismiss this notice.', 'elementor' ),
1171 - 'button_event' => $dismissible,
1172 - 'button_data' => base64_encode(
1173 - wp_json_encode( [
1174 - 'action_url' => $button_url,
1175 - ] ),
1176 - ),
1177 - ],
1178 - ] );
1179 -
1180 - wp_enqueue_script( 'media-hints' );
1181 - }
1182 -
1183 - public function register_ajax_hints( $ajax_manager ) {
1184 - $ajax_manager->register_ajax_action( 'elementor_image_optimization_campaign', [ $this, 'ajax_set_image_optimization_campaign' ] );
1185 - $ajax_manager->register_ajax_action( 'elementor_core_site_mailer_campaign', [ $this, 'ajax_site_mailer_campaign' ] );
1186 - $ajax_manager->register_ajax_action( 'elementor_core_ally_campaign', [ $this, 'ajax_ally_campaign' ] );
1187 - }
1188 -
1189 - public function ajax_ally_campaign( $request ) {
1190 - if ( ! current_user_can( 'install_plugins' ) ) {
1191 - return;
1192 - }
1193 -
1194 - $campaign_data = [
1195 - 'campaign' => sanitize_key( $request['campaign'] ?? '' ),
1196 - 'source' => sanitize_key( $request['source'] ?? '' ),
1197 - 'medium' => sanitize_key( $request['medium'] ?? '' ),
1198 - ];
1199 -
1200 - set_transient( 'elementor_ea11y_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
1201 - }
1202 -
1203 - public function ajax_set_image_optimization_campaign( $request ) {
1204 - if ( ! current_user_can( 'install_plugins' ) ) {
1205 - return;
1206 - }
1207 -
1208 - $campaign_data = [
1209 - 'campaign' => sanitize_key( $request['campaign'] ?? '' ),
1210 - 'source' => sanitize_key( $request['source'] ?? '' ),
1211 - 'medium' => sanitize_key( $request['medium'] ?? '' ),
1212 - ];
1213 -
1214 - set_transient( 'elementor_image_optimization_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
1215 - }
1216 -
1217 - public function ajax_site_mailer_campaign( $request ) {
1218 - if ( ! current_user_can( 'install_plugins' ) ) {
1219 - return;
1220 - }
1221 -
1222 - $campaign_data = [
1223 - 'campaign' => sanitize_key( $request['campaign'] ?? '' ),
1224 - 'source' => sanitize_key( $request['source'] ?? '' ),
1225 - 'medium' => sanitize_key( $request['medium'] ?? '' ),
1226 - ];
1227 -
1228 - set_transient( 'elementor_site_mailer_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
944 + private function register_menu() {
945 + $this->menus['main'] = new MainMenu();
1229 946 }
1230 947 }