PluginProbe
Elementor Website Builder – more than just a page builder / 3.18.3
Elementor Website Builder – more than just a page builder v3.18.3
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 | includes/settings/tools.php +44 -83 4.2.33.18.3 View file →
@@ -1,12 +1,11 @@
1 1 <?php
2 2 namespace Elementor;
3 3
4 4 use Elementor\Core\Admin\Menu\Admin_Menu_Manager;
5 +use Elementor\Core\Admin\Menu\Main as MainMenu;
5 6 use Elementor\Core\Kits\Manager;
6 7 use Elementor\Includes\Settings\AdminMenuItems\Tools_Menu_Item;
7 -use Elementor\Modules\EditorOne\Classes\Menu_Data_Provider;
8 -use Elementor\Includes\Settings\AdminMenuItems\Editor_One_Tools_Menu;
9 8
10 9 if ( ! defined( 'ABSPATH' ) ) {
11 10 exit; // Exit if accessed directly.
12 11 }
@@ -27,8 +26,18 @@
27 26 * Settings page ID for Elementor tools.
28 27 */
29 28 const PAGE_ID = 'elementor-tools';
30 29
30 + private function register_admin_menu( MainMenu $menu ) {
31 + $menu->add_submenu( [
32 + 'page_title' => esc_html__( 'Tools', 'elementor' ),
33 + 'menu_title' => esc_html__( 'Tools', 'elementor' ),
34 + 'menu_slug' => self::PAGE_ID,
35 + 'function' => [ $this, 'display_settings_page' ],
36 + 'index' => 50,
37 + ] );
38 + }
39 +
31 40 /**
32 41 * Clear cache.
33 42 *
34 43 * Delete post meta containing the post CSS file data. And delete the actual
@@ -50,26 +59,8 @@
50 59
51 60 wp_send_json_success();
52 61 }
53 62
54 - public function admin_post_elementor_site_clear_cache() {
55 - check_ajax_referer( 'elementor_site_clear_cache' );
56 -
57 - if ( ! current_user_can( static::CAPABILITY ) ) {
58 - wp_die( 'Permission denied' );
59 - }
60 -
61 - Plugin::$instance->files_manager->clear_cache();
62 -
63 - $http_referer = wp_get_raw_referer();
64 - if ( empty( $http_referer ) ) {
65 - $http_referer = admin_url( 'admin.php?page=' . static::PAGE_ID );
66 - }
67 -
68 - wp_safe_redirect( $http_referer );
69 - die;
70 - }
71 -
72 63 /**
73 64 * Recreate kit.
74 65 *
75 66 * Recreate default kit (only when default kit does not exist).
@@ -197,14 +188,19 @@
197 188 */
198 189 public function __construct() {
199 190 parent::__construct();
200 191
201 - add_action( 'elementor/editor-one/menu/register', function ( Menu_Data_Provider $menu_data_provider ) {
202 - $this->register_editor_one_menu( $menu_data_provider );
203 - } );
192 + if ( Plugin::$instance->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) {
193 + add_action( 'elementor/admin/menu_registered/elementor', function( MainMenu $menu ) {
194 + $this->register_admin_menu( $menu );
195 + } );
196 + } else {
197 + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) {
198 + $admin_menu->register( static::PAGE_ID, new Tools_Menu_Item( $this ) );
199 + }, Settings::ADMIN_MENU_PRIORITY + 20 );
200 + }
204 201
205 202 add_action( 'wp_ajax_elementor_clear_cache', [ $this, 'ajax_elementor_clear_cache' ] );
206 - add_action( 'admin_post_elementor_site_clear_cache', [ $this, 'admin_post_elementor_site_clear_cache' ] );
207 203 add_action( 'wp_ajax_elementor_replace_url', [ $this, 'ajax_elementor_replace_url' ] );
208 204 add_action( 'wp_ajax_elementor_recreate_kit', [ $this, 'ajax_elementor_recreate_kit' ] );
209 205
210 206 add_action( 'admin_post_elementor_rollback', [ $this, 'post_elementor_rollback' ] );
@@ -209,17 +205,8 @@
209 205
210 206 add_action( 'admin_post_elementor_rollback', [ $this, 'post_elementor_rollback' ] );
211 207 }
212 208
213 - private function register_editor_one_menu( Menu_Data_Provider $menu_data_provider ) {
214 - $menu_data_provider->register_menu( new Editor_One_Tools_Menu() );
215 - }
216 -
217 - public function get_warning_span( string $text ): string {
218 - $color = 'var(--e-one-palette-error-main)';
219 - return sprintf( '<span style="color: %s;">%s</span>', esc_attr( $color ), esc_html( $text ) );
220 - }
221 -
222 209 private function get_rollback_versions() {
223 210 $rollback_versions = get_transient( 'elementor_rollback_versions_' . ELEMENTOR_VERSION );
224 211
225 212 if ( false === $rollback_versions ) {
@@ -275,9 +262,9 @@
275 262 if ( version_compare( $version, ELEMENTOR_VERSION, '>=' ) ) {
276 263 continue;
277 264 }
278 265
279 - ++$current_index;
266 + $current_index++;
280 267 $rollback_versions[] = $version;
281 268 }
282 269
283 270 set_transient( 'elementor_rollback_versions_' . ELEMENTOR_VERSION, $rollback_versions, WEEK_IN_SECONDS );
@@ -310,13 +297,13 @@
310 297 'sections' => [
311 298 'tools' => [
312 299 'fields' => [
313 300 'clear_cache' => [
314 - 'label' => esc_html__( 'Elementor Cache', 'elementor' ),
301 + 'label' => esc_html__( 'Regenerate CSS & Data', 'elementor' ),
315 302 'field_args' => [
316 303 'type' => 'raw_html',
317 - 'html' => sprintf( '<button data-nonce="%s" data-id="elementor-tools-general-button-clear-files-data" class="button elementor-button-spinner" id="elementor-clear-cache-button">%s</button>', wp_create_nonce( 'elementor_clear_cache' ), esc_html__( 'Clear Files & Data', 'elementor' ) ),
318 - 'desc' => esc_html__( "Clear outdated CSS files and cached data in the database (rendered HTML, JS/CSS assets, etc.). We'll regenerate those files the next time someone visits any page on your website.", 'elementor' ),
304 + 'html' => sprintf( '<button data-nonce="%s" class="button elementor-button-spinner" id="elementor-clear-cache-button">%s</button>', wp_create_nonce( 'elementor_clear_cache' ), esc_html__( 'Regenerate Files & Data', 'elementor' ) ),
305 + 'desc' => esc_html__( 'Styles set in Elementor are saved in CSS files in the uploads folder and in the site’s database. Recreate those files and settings, according to the most recent settings.', 'elementor' ),
319 306 ],
320 307 ],
321 308 'reset_api_data' => [
322 309 'label' => esc_html__( 'Sync Library', 'elementor' ),
@@ -321,9 +308,9 @@
321 308 'reset_api_data' => [
322 309 'label' => esc_html__( 'Sync Library', 'elementor' ),
323 310 'field_args' => [
324 311 'type' => 'raw_html',
325 - 'html' => sprintf( '<button data-nonce="%s" data-id="elementor-tools-general-button-sync-library" class="button elementor-button-spinner" id="elementor-library-sync-button">%s</button>', wp_create_nonce( 'elementor_reset_library' ), esc_html__( 'Sync Library', 'elementor' ) ),
312 + 'html' => sprintf( '<button data-nonce="%s" class="button elementor-button-spinner" id="elementor-library-sync-button">%s</button>', wp_create_nonce( 'elementor_reset_library' ), esc_html__( 'Sync Library', 'elementor' ) ),
326 313 'desc' => esc_html__( 'Elementor Library automatically updates on a daily basis. You can also manually update it by clicking on the sync button.', 'elementor' ),
327 314 ],
328 315 ],
329 316 ],
@@ -334,19 +321,17 @@
334 321 'label' => esc_html__( 'Replace URL', 'elementor' ),
335 322 'sections' => [
336 323 'replace_url' => [
337 324 'callback' => function() {
325 + $intro_text = sprintf(
326 + /* translators: %s: WordPress backups documentation. */
327 + __( '<strong>Important:</strong> It is strongly recommended that you <a target="_blank" href="%s">backup your database</a> before using Replace URL.', 'elementor' ),
328 + 'https://go.elementor.com/wordpress-backups/'
329 + );
330 + $intro_text = '<div>' . $intro_text . '</div>';
331 +
338 332 echo '<h2>' . esc_html__( 'Replace URL', 'elementor' ) . '</h2>';
339 - printf(
340 - '<p><strong>%1$s</strong> %2$s</p>',
341 - esc_html__( 'Important:', 'elementor' ),
342 - sprintf(
343 - /* translators: 1: Link open tag, 2: Link close tag. */
344 - esc_html__( 'It is strongly recommended to %1$sbackup the database%2$s before using replacing URLs.', 'elementor' ),
345 - '<a href="https://go.elementor.com/wordpress-backups/" target="_blank">',
346 - '</a>'
347 - )
348 - );
333 + Utils::print_unescaped_internal_string( $intro_text );
349 334 },
350 335 'fields' => [
351 336 'replace_url' => [
352 337 'label' => esc_html__( 'Update Site Address (URL)', 'elementor' ),
@@ -351,9 +336,9 @@
351 336 'replace_url' => [
352 337 'label' => esc_html__( 'Update Site Address (URL)', 'elementor' ),
353 338 'field_args' => [
354 339 'type' => 'raw_html',
355 - 'html' => sprintf( '<input type="text" name="from" placeholder="https://old.example.com" class="large-text"><input type="text" name="to" placeholder="https://new.example.com" class="large-text"><button data-nonce="%s" data-id="elementor-tools-replace_url-button-replace-url" class="button elementor-button-spinner" id="elementor-replace-url-button">%s</button>', wp_create_nonce( 'elementor_replace_url' ), esc_html__( 'Replace URL', 'elementor' ) ),
340 + 'html' => sprintf( '<input type="text" name="from" placeholder="https://old.example.com" class="large-text"><input type="text" name="to" placeholder="https://new.example.com" class="large-text"><button data-nonce="%s" class="button elementor-button-spinner" id="elementor-replace-url-button">%s</button>', wp_create_nonce( 'elementor_replace_url' ), esc_html__( 'Replace URL', 'elementor' ) ),
356 341 'desc' => esc_html__( 'Enter your old and new URLs for your WordPress installation, to update all Elementor data (Relevant for domain transfers or move to \'HTTPS\').', 'elementor' ),
357 342 ],
358 343 ],
359 344 ],
@@ -381,32 +366,29 @@
381 366 'label' => esc_html__( 'Rollback Version', 'elementor' ),
382 367 'field_args' => [
383 368 'type' => 'raw_html',
384 369 'html' => sprintf(
385 - $rollback_html . '<button data-placeholder-text="%1$s v{VERSION}" data-placeholder-url="%2$s" class="button elementor-button-spinner elementor-rollback-button">%1$s</button>',
386 - esc_html__( 'Reinstall', 'elementor' ),
387 - wp_nonce_url( admin_url( 'admin-post.php?action=elementor_rollback&version=VERSION' ), 'elementor_rollback' )
370 + $rollback_html . '<a data-placeholder-text="' . esc_html__( 'Reinstall', 'elementor' ) . ' v{VERSION}" href="#" data-placeholder-url="%s" class="button elementor-button-spinner elementor-rollback-button">%s</a>',
371 + wp_nonce_url( admin_url( 'admin-post.php?action=elementor_rollback&version=VERSION' ), 'elementor_rollback' ),
372 + esc_html__( 'Reinstall', 'elementor' )
388 373 ),
389 - 'desc' => $this->get_warning_span( esc_html__( 'Warning: Please back up your database before making the rollback.', 'elementor' ) ),
374 + 'desc' => '<span style="color: red;">' . esc_html__( 'Warning: Please backup your database before making the rollback.', 'elementor' ) . '</span>',
390 375 ],
391 376 ],
392 377 ],
393 378 ],
394 379 'beta' => [
395 - 'show_if' => $this->display_beta_tester(),
396 380 'label' => esc_html__( 'Become a Beta Tester', 'elementor' ),
397 381 'callback' => function() {
398 382 echo '<p>' .
399 383 esc_html__( 'Turn-on Beta Tester, to get notified when a new beta version of Elementor or Elementor Pro is available. The Beta version will not install automatically. You always have the option to ignore it.', 'elementor' ) .
400 384 '</p>';
401 - echo '<p>' . sprintf(
385 + echo sprintf(
402 386 /* translators: 1: Link open tag, 2: Link close tag. */
403 - esc_html__( '%1$sClick here%2$s %3$sto join our first-to-know email updates.%4$s', 'elementor' ),
404 - '<a id="beta-tester-first-to-know" class="elementor-become-a-beta-tester" href="#">',
405 - '</a>',
406 - '<span class="elementor-become-a-beta-tester">',
407 - '</span>',
408 - ) . '</p>';
387 + esc_html__( '%1$sClick here%2$s to join our first-to-know email updates.', 'elementor' ),
388 + '<a id="beta-tester-first-to-know" href="#">',
389 + '</a>'
390 + );
409 391 },
410 392 'fields' => [
411 393 'beta' => [
412 394 'label' => esc_html__( 'Beta Tester', 'elementor' ),
@@ -416,9 +398,9 @@
416 398 'options' => [
417 399 'no' => esc_html__( 'Disable', 'elementor' ),
418 400 'yes' => esc_html__( 'Enable', 'elementor' ),
419 401 ],
420 - 'desc' => $this->get_warning_span( esc_html__( 'Please Note: We do not recommend updating to a beta version on production sites.', 'elementor' ) ),
402 + 'desc' => '<span style="color: red;">' . esc_html__( 'Please Note: We do not recommend updating to a beta version on production sites.', 'elementor' ) . '</span>',
421 403 ],
422 404 ],
423 405 ],
424 406 ],
@@ -459,27 +441,6 @@
459 441 * @return bool
460 442 */
461 443 public static function can_user_rollback_versions() {
462 444 return current_user_can( 'activate_plugins' ) && current_user_can( 'update_plugins' );
463 - }
464 -
465 - /**
466 - * Check if the beta tester should be displayed.
467 - *
468 - * @since 3.19.0
469 - *
470 - * @return bool
471 - */
472 - public function display_beta_tester(): bool {
473 - $display_beta_tester = true;
474 - /**
475 - * Filter to allow override the display of the beta tester.
476 - *
477 - * @param bool $display_beta_tester Whether to display the beta tester.
478 - *
479 - * @since 3.19.0
480 - *
481 - * return bool
482 - */
483 - return apply_filters( 'elementor/admin/show_beta_tester', $display_beta_tester );
484 445 }
485 446 }