PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.0-dev2
Elementor Website Builder – more than just a page builder v3.35.0-dev2
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 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | modules/editor-one/classes/menu-data-provider.php +9 -63 4.3.0-beta33.35.0-dev2 View file →
@@ -4,11 +4,9 @@
4 4
5 5 use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_Interface;
6 6 use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_Third_Level_Interface;
7 7 use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_With_Custom_Url_Interface;
8 -use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_With_Event_Id_Interface;
9 8 use Elementor\Plugin;
10 -use Elementor\Utils;
11 9
12 10 if ( ! defined( 'ABSPATH' ) ) {
13 11 exit;
14 12 }
@@ -24,9 +22,8 @@
24 22 private ?array $cached_level3_sidebar_data = null;
25 23 private ?array $cached_level4_sidebar_data = null;
26 24 private ?array $cached_flyout_menu_data = null;
27 25 private Slug_Normalizer $slug_normalizer;
28 - private array $registration_options = [];
29 26
30 27 public static function instance(): self {
31 28 if ( null === self::$instance ) {
32 29 self::$instance = new self();
@@ -42,13 +39,9 @@
42 39 public function get_slug_normalizer(): Slug_Normalizer {
43 40 return $this->slug_normalizer;
44 41 }
45 42
46 - public function register_menu( Menu_Item_Interface $item, array $options = [] ): void {
47 - if ( ! empty( $options['preserve_label_casing'] ) ) {
48 - $this->registration_options[ $item->get_slug() ]['preserve_label_casing'] = true;
49 - }
50 -
43 + public function register_menu( Menu_Item_Interface $item ): void {
51 44 if ( ! ( $item instanceof Menu_Item_Third_Level_Interface ) ) {
52 45 $this->register_level4_item( $item );
53 46 return;
54 47 }
@@ -294,24 +287,19 @@
294 287 } ) );
295 288 }
296 289
297 290 private function build_level3_flyout_items(): array {
298 - return $this->build_flyout_items( false, Menu_Config::get_excluded_level3_slugs() );
291 + return $this->build_flyout_items( false );
299 292 }
300 293
301 294 private function build_flyout_items_with_expanded_third_party(): array {
302 - return $this->build_flyout_items(
303 - true,
304 - array_merge(
305 - Menu_Config::get_excluded_level3_slugs(),
306 - Menu_Config::get_excluded_flyout_menu_level3_slugs()
307 - )
308 - );
295 + return $this->build_flyout_items( true );
309 296 }
310 297
311 - private function build_flyout_items( bool $expand_third_party, array $excluded_slugs ): array {
298 + private function build_flyout_items( bool $expand_third_party ): array {
312 299 $items = [];
313 300 $existing_slugs = [];
301 + $excluded_slugs = Menu_Config::get_excluded_level3_slugs();
314 302 $excluded_level4_slugs = $expand_third_party ? Menu_Config::get_excluded_level4_slugs() : [];
315 303
316 304 foreach ( $this->level3_items as $group_items ) {
317 305 foreach ( $group_items as $item_slug => $item ) {
@@ -370,14 +358,13 @@
370 358 $url = $this->resolve_item_url( $item, $item_slug );
371 359
372 360 return [
373 361 'slug' => $item_slug,
374 - 'label' => $this->format_flyout_label( $item, $item_slug ),
362 + 'label' => $this->title_case( $item->get_label() ),
375 363 'url' => $url,
376 364 'group_id' => '',
377 365 'priority' => $this->get_item_priority( $item ),
378 366 'has_divider_before' => $is_first,
379 - 'event_id' => $this->resolve_event_id( $item, $item_slug ),
380 367 ];
381 368 }
382 369
383 370 private function should_include_flyout_item( Menu_Item_Interface $item, string $item_slug, array $existing_slugs, array $excluded_slugs ): bool {
@@ -406,15 +393,14 @@
406 393 $is_third_party_parent = Menu_Config::THIRD_PARTY_GROUP_ID === $item->get_group_id();
407 394
408 395 return [
409 396 'slug' => $item_slug,
410 - 'label' => $this->format_flyout_label( $item, $item_slug ),
397 + 'label' => $this->title_case( $item->get_label() ),
411 398 'url' => $this->resolve_flyout_item_url( $item, $item_slug ),
412 399 'icon' => $item->get_icon(),
413 400 'group_id' => $group_id,
414 401 'priority' => $this->get_item_priority( $item ),
415 402 'has_divider_before' => $is_third_party_parent,
416 - 'event_id' => $this->resolve_event_id( $item, $item_slug ),
417 403 ];
418 404 }
419 405
420 406 private function resolve_flyout_item_url( Menu_Item_Interface $item, string $item_slug ): string {
@@ -485,12 +471,11 @@
485 471 $url = $this->resolve_item_url( $item, $item_slug );
486 472
487 473 $groups[ $group_id ]['items'][] = [
488 474 'slug' => $item_slug,
489 - 'label' => $this->format_flyout_label( $item, $item_slug ),
475 + 'label' => $this->title_case( $item->get_label() ),
490 476 'url' => $url,
491 477 'priority' => $this->get_item_priority( $item ),
492 - 'event_id' => $this->resolve_event_id( $item, $item_slug ),
493 478 ];
494 479
495 480 $existing_labels[] = $label_lower;
496 481 }
@@ -548,49 +533,10 @@
548 533 return ( $a['priority'] ?? 100 ) <=> ( $b['priority'] ?? 100 );
549 534 } );
550 535 }
551 536
552 - private function resolve_event_id( Menu_Item_Interface $item, string $item_slug ): string {
553 - if ( $item instanceof Menu_Item_With_Event_Id_Interface ) {
554 - return $item->get_event_id();
555 - }
556 -
557 - return $this->derive_event_id_from_slug( $item_slug );
558 - }
559 -
560 - private function derive_event_id_from_slug( string $slug ): string {
561 - $slug_event_map = [
562 - 'edit.php?post_type=elementor_library' => 'saved_templates',
563 - 'elementor-app' => 'theme_builder',
564 - ];
565 -
566 - if ( isset( $slug_event_map[ $slug ] ) ) {
567 - return $slug_event_map[ $slug ];
568 - }
569 -
570 - $event_id = preg_replace( '/^elementor-/', '', $slug );
571 - $event_id = preg_replace( '/[?#].*$/', '', $event_id );
572 - $event_id = str_replace( [ '-', ' ' ], '_', $event_id );
573 -
574 - return strtolower( $event_id );
575 - }
576 -
577 - private function format_flyout_label( Menu_Item_Interface $item, string $item_slug ): string {
578 - $label = $item->get_label();
579 -
580 - if ( ! empty( $this->registration_options[ $item_slug ]['preserve_label_casing'] ) ) {
581 - return $label;
582 - }
583 -
584 - return $this->title_case( $label );
585 - }
586 -
587 537 private function title_case( string $text ): string {
588 - if ( function_exists( 'mb_convert_case' ) ) {
589 - return mb_convert_case( $text, MB_CASE_TITLE, 'UTF-8' );
590 - }
591 -
592 - return ucwords( strtolower( $text ) );
538 + return mb_convert_case( $text, MB_CASE_TITLE, 'UTF-8' );
593 539 }
594 540
595 541 private function invalidate_cache(): void {
596 542 $this->cached_level3_sidebar_data = null;