PluginProbe
Elementor Website Builder – more than just a page builder / 3.33.0-beta1
Elementor Website Builder – more than just a page builder v3.33.0-beta1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 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 All 457 releases
← All changes | core/admin/admin.php +47 -161 4.3.3 → 3.33.0-beta1 View file →
@@ -7,15 +7,13 @@
7 7 use Elementor\Core\Base\App;
8 8 use Elementor\Core\Upgrade\Manager as Upgrade_Manager;
9 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 15 use Elementor\Core\Utils\Hints;
17 -use Elementor\Core\DocumentTypes\Page;
18 16
19 17 if ( ! defined( 'ABSPATH' ) ) {
20 18 exit; // Exit if accessed directly.
21 19 }
@@ -38,36 +36,8 @@
38 36 return 'admin';
39 37 }
40 38
41 39 /**
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 40 * @since 2.2.0
71 41 * @access public
72 42 */
73 43 public function maybe_redirect_to_getting_started() {
@@ -242,10 +212,10 @@
242 212 <div id="elementor-switch-mode">
243 213 <input id="elementor-switch-mode-input" type="hidden" name="_elementor_post_mode" value="<?php echo esc_attr( $document->is_built_with_elementor() ); ?>" />
244 214 <button id="elementor-switch-mode-button" type="button" class="button button-primary button-hero">
245 215 <span class="elementor-switch-mode-on">
246 - <i class="eicon-wordpress" aria-hidden="true"></i>
247 - <?php echo esc_html__( 'Edit with WordPress', 'elementor' ); ?>
216 + <i class="eicon-arrow-<?php echo ( is_rtl() ) ? 'right' : 'left'; ?>" aria-hidden="true"></i>
217 + <?php echo esc_html__( 'Back to WordPress Editor', 'elementor' ); ?>
248 218 </span>
249 219 <span class="elementor-switch-mode-off">
250 220 <i class="eicon-elementor-square" aria-hidden="true"></i>
251 221 <?php echo esc_html__( 'Edit with Elementor', 'elementor' ); ?>
@@ -373,9 +343,9 @@
373 343 array_unshift( $links, $settings_link );
374 344
375 345 $go_pro_text = esc_html__( 'Get Elementor Pro', 'elementor' );
376 346 if ( Utils::is_sale_time() ) {
377 - $go_pro_text = esc_html__( 'Sale! Upgrade Now', 'elementor' );
347 + $go_pro_text = esc_html__( 'Discounted Upgrades Now!', 'elementor' );
378 348 }
379 349
380 350 $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 351
@@ -401,10 +371,10 @@
401 371 */
402 372 public function plugin_row_meta( $plugin_meta, $plugin_file ) {
403 373 if ( ELEMENTOR_PLUGIN_BASE === $plugin_file ) {
404 374 $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>',
375 + '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>',
376 + '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 377 ];
408 378
409 379 $plugin_meta = array_merge( $plugin_meta, $row_meta );
410 380 }
@@ -427,13 +397,8 @@
427 397 * @return string The content that will be printed.
428 398 */
429 399 public function admin_footer_text( $footer_text ) {
430 400 $current_screen = get_current_screen();
431 -
432 - if ( $current_screen && str_ends_with( $current_screen->id, 'elementor-mcp' ) ) {
433 - return $footer_text;
434 - }
435 -
436 401 $is_elementor_screen = ( $current_screen && false !== strpos( $current_screen->id, 'elementor' ) );
437 402
438 403 if ( $is_elementor_screen ) {
439 404 $footer_text = sprintf(
@@ -513,9 +478,9 @@
513 478 ?>
514 479 <div class="e-overview__header">
515 480 <?php if ( $show_versions ) { ?>
516 481 <div class="e-overview__logo">
517 - <div class="e-logo-wrapper"><i class="eicon-elementor-circle"></i></div>
482 + <div class="e-logo-wrapper"><i class="eicon-elementor"></i></div>
518 483 </div>
519 484 <div class="e-overview__versions">
520 485 <span class="e-overview__version"><?php echo esc_html__( 'Elementor', 'elementor' ); ?> v<?php echo ELEMENTOR_VERSION; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
521 486 <?php
@@ -755,78 +720,8 @@
755 720
756 721 die;
757 722 }
758 723
759 - public function admin_action_site_settings_redirect() {
760 - check_admin_referer( 'elementor_action_site_settings_redirect' );
761 -
762 - if ( ! current_user_can( 'edit_theme_options' ) ) {
763 - wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'elementor' ) );
764 - }
765 -
766 - $active_tab = filter_input( INPUT_GET, 'active-tab', FILTER_SANITIZE_ENCODED );
767 -
768 - $site_settings_url_config = Page::get_site_settings_url_config( $active_tab );
769 -
770 - if ( empty( $site_settings_url_config['url'] ) ) {
771 - wp_die( esc_html__( 'Unable to create or access Site Settings page.', 'elementor' ) );
772 - }
773 -
774 - wp_safe_redirect( $site_settings_url_config['url'] );
775 -
776 - die;
777 - }
778 -
779 - /**
780 - * Admin action edit website.
781 - *
782 - * Redirects to the homepage edit URL if it exists and is built with Elementor,
783 - * otherwise redirects to create a new page.
784 - *
785 - * Fired by `admin_action_elementor_edit_website` action.
786 - *
787 - * @since 3.x.x
788 - * @access public
789 - */
790 - public function admin_action_edit_website_redirect() {
791 - check_admin_referer( 'elementor_action_edit_website' );
792 -
793 - if ( ! User::is_current_user_can_edit_post_type( 'page' ) ) {
794 - wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'elementor' ) );
795 - }
796 -
797 - $homepage_id = $this->get_homepage_id();
798 - $edit_url = $this->get_edit_website_url( $homepage_id );
799 -
800 - wp_safe_redirect( $edit_url );
801 -
802 - die;
803 - }
804 -
805 - private function get_homepage_id(): ?int {
806 - if ( get_option( 'show_on_front' ) !== 'page' ) {
807 - return null;
808 - }
809 -
810 - $homepage_id = get_option( 'page_on_front' );
811 -
812 - return $homepage_id ? (int) $homepage_id : null;
813 - }
814 -
815 - private function get_edit_website_url( ?int $homepage_id ): string {
816 - if ( ! $homepage_id ) {
817 - return Plugin::$instance->documents->get_create_new_post_url( 'page' );
818 - }
819 -
820 - $document = Plugin::$instance->documents->get( $homepage_id );
821 -
822 - if ( ! $document || ! $document->is_built_with_elementor() ) {
823 - return Plugin::$instance->documents->get_create_new_post_url( 'page' );
824 - }
825 -
826 - return $document->get_edit_url();
827 - }
828 -
829 724 private function get_allowed_fields_for_role() {
830 725 $allowed_fields = [
831 726 'post_title',
832 727 'post_content',
@@ -1028,10 +923,8 @@
1028 923 add_action( 'wp_dashboard_setup', [ $this, 'register_dashboard_widgets' ] );
1029 924
1030 925 // Admin Actions
1031 926 add_action( 'admin_action_elementor_new_post', [ $this, 'admin_action_new_post' ] );
1032 - add_action( 'admin_action_elementor_site_settings_redirect', [ $this, 'admin_action_site_settings_redirect' ] );
1033 - add_action( 'admin_action_elementor_edit_website_redirect', [ $this, 'admin_action_edit_website_redirect' ] );
1034 927
1035 928 add_action( 'current_screen', [ $this, 'init_new_template' ] );
1036 929 add_action( 'current_screen', [ $this, 'init_floating_elements' ] );
1037 930 add_action( 'current_screen', [ $this, 'init_beta_tester' ] );
@@ -1110,11 +1003,9 @@
1110 1003 } )->all();
1111 1004 }
1112 1005
1113 1006 private function maybe_enqueue_hints() {
1114 - $plugin_slug = 'image-optimization';
1115 -
1116 - if ( ! Hints::should_display_hint( $plugin_slug ) ) {
1007 + if ( ! Hints::should_display_hint( 'image-optimization' ) ) {
1117 1008 return;
1118 1009 }
1119 1010
1120 1011 wp_register_script(
@@ -1124,48 +1015,16 @@
1124 1015 ELEMENTOR_VERSION,
1125 1016 true
1126 1017 );
1127 1018
1128 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1129 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
1130 - $is_active = Hints::is_plugin_active( $plugin_slug );
1019 + $content = sprintf("%1\$s <a class='e-btn-1' href='%2\$s' target='_blank'>%3\$s</a>!",
1020 + __( 'Optimize your images to enhance site performance by using Image Optimizer.', 'elementor' ),
1021 + Hints::get_plugin_action_url( 'image-optimization' ),
1022 + ( Hints::is_plugin_installed( 'image-optimization' ) ? __( 'Activate', 'elementor' ) : __( 'Install', 'elementor' ) ) . ' ' . __( 'Image Optimizer', 'elementor' )
1023 + );
1131 1024
1132 - if ( $is_active ) {
1133 - return;
1134 - }
1135 -
1136 - if ( $one_subscription ) {
1137 - if ( ! $is_installed ) {
1138 - $description = esc_html__( 'Automatically optimize images to improve site speed and performance. Included with your ONE subscription.', 'elementor' );
1139 - $button_text = esc_html__( 'Install now', 'elementor' );
1140 - $button_url = Hints::get_plugin_install_url( $plugin_slug );
1141 - } elseif ( ! $is_active ) {
1142 - $description = esc_html__( 'Image Optimization is installed and included in your ONE subscription. Activate it to optimize images and improve site performance.', 'elementor' );
1143 - $button_text = esc_html__( 'Activate now', 'elementor' );
1144 - $button_url = Hints::get_plugin_activate_url( $plugin_slug );
1145 - }
1146 - } else {
1147 - $description = esc_html__( 'Optimize your images to enhance site performance by using Image Optimization.', 'elementor' );
1148 - if ( ! $is_installed ) {
1149 - $button_text = esc_html__( 'Install now', 'elementor' );
1150 - $button_url = Hints::get_plugin_install_url( $plugin_slug );
1151 - } elseif ( ! $is_active ) {
1152 - $button_text = esc_html__( 'Activate now', 'elementor' );
1153 - $button_url = Hints::get_plugin_activate_url( $plugin_slug );
1154 - }
1155 - }
1156 -
1157 1025 $dismissible = 'image_optimizer_hint';
1158 1026
1159 - $title = esc_html__( 'Speed up your website with Image Optimization', 'elementor' );
1160 - $content = sprintf(
1161 - "<strong>%1\$s</strong><br>%2\$s <a class='e-btn-1' href='%3\$s' target='_blank'>%4\$s</a>!",
1162 - $title,
1163 - $description,
1164 - $button_url,
1165 - $button_text
1166 - );
1167 -
1168 1027 wp_localize_script( 'media-hints', 'elementorAdminHints', [
1169 1028 'mediaHint' => [
1170 1029 'display' => true,
1171 1030 'type' => 'info',
@@ -1171,13 +1030,13 @@
1171 1030 'type' => 'info',
1172 1031 'content' => $content,
1173 1032 'icon' => true,
1174 1033 'dismissible' => $dismissible,
1175 - 'dismiss' => esc_attr__( 'Dismiss this notice.', 'elementor' ),
1034 + 'dismiss' => __( 'Dismiss this notice.', 'elementor' ),
1176 1035 'button_event' => $dismissible,
1177 1036 'button_data' => base64_encode(
1178 1037 wp_json_encode( [
1179 - 'action_url' => $button_url,
1038 + 'action_url' => Hints::get_plugin_action_url( 'image-optimization' ),
1180 1039 ] ),
1181 1040 ),
1182 1041 ],
1183 1042 ] );
@@ -1186,8 +1045,9 @@
1186 1045 }
1187 1046
1188 1047 public function register_ajax_hints( $ajax_manager ) {
1189 1048 $ajax_manager->register_ajax_action( 'elementor_image_optimization_campaign', [ $this, 'ajax_set_image_optimization_campaign' ] );
1049 + $ajax_manager->register_ajax_action( 'elementor_core_site_mailer_campaign', [ $this, 'ajax_site_mailer_campaign' ] );
1190 1050 $ajax_manager->register_ajax_action( 'elementor_core_ally_campaign', [ $this, 'ajax_ally_campaign' ] );
1191 1051 }
1192 1052
1193 1053 public function ajax_ally_campaign( $request ) {
@@ -1194,12 +1054,16 @@
1194 1054 if ( ! current_user_can( 'install_plugins' ) ) {
1195 1055 return;
1196 1056 }
1197 1057
1058 + if ( empty( $request['source'] ) ) {
1059 + return;
1060 + }
1061 +
1198 1062 $campaign_data = [
1199 - 'campaign' => sanitize_key( $request['campaign'] ?? '' ),
1200 - 'source' => sanitize_key( $request['source'] ?? '' ),
1201 - 'medium' => sanitize_key( $request['medium'] ?? '' ),
1063 + 'source' => sanitize_key( $request['source'] ),
1064 + 'campaign' => 'ally-plg',
1065 + 'medium' => 'wp-dash',
1202 1066 ];
1203 1067
1204 1068 set_transient( 'elementor_ea11y_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
1205 1069 }
@@ -1208,13 +1072,35 @@
1208 1072 if ( ! current_user_can( 'install_plugins' ) ) {
1209 1073 return;
1210 1074 }
1211 1075
1076 + if ( empty( $request['source'] ) ) {
1077 + return;
1078 + }
1079 +
1212 1080 $campaign_data = [
1213 - 'campaign' => sanitize_key( $request['campaign'] ?? '' ),
1214 - 'source' => sanitize_key( $request['source'] ?? '' ),
1215 - 'medium' => sanitize_key( $request['medium'] ?? '' ),
1081 + 'source' => sanitize_key( $request['source'] ),
1082 + 'campaign' => 'io-plg',
1083 + 'medium' => 'wp-dash',
1216 1084 ];
1217 1085
1218 1086 set_transient( 'elementor_image_optimization_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
1087 + }
1088 +
1089 + public function ajax_site_mailer_campaign( $request ) {
1090 + if ( ! current_user_can( 'install_plugins' ) ) {
1091 + return;
1092 + }
1093 +
1094 + if ( empty( $request['source'] ) ) {
1095 + return;
1096 + }
1097 +
1098 + $campaign_data = [
1099 + 'source' => sanitize_key( $request['source'] ),
1100 + 'campaign' => 'sm-plg',
1101 + 'medium' => 'wp-dash',
1102 + ];
1103 +
1104 + set_transient( 'elementor_site_mailer_campaign', $campaign_data, 30 * DAY_IN_SECONDS );
1219 1105 }
1220 1106 }