This commit is contained in:
proelements
2026-02-16 11:44:35 +02:00
parent 08ec8d01f1
commit b499583e5a
348 changed files with 3915 additions and 1414 deletions

View File

@@ -9,23 +9,23 @@ if ( ! defined( 'ABSPATH' ) ) {
}
class Theme_Builder_Menu_Item implements Admin_Menu_Item {
public function get_capability() {
public function get_capability(): string {
return 'publish_posts';
}
public function get_label() {
public function get_label(): string {
return esc_html__( 'Theme Builder', 'elementor-pro' );
}
public function get_parent_slug() {
public function get_parent_slug(): string {
return Source_Local::ADMIN_MENU_SLUG;
}
public function is_visible() {
public function is_visible(): bool {
return true;
}
public function get_position() {
return null;
public function get_position(): ?int {
return 20;
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace ElementorPro\Modules\ThemeBuilder\EditorOneMenuItems;
use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_Third_Level_Interface;
use Elementor\Core\Admin\EditorOneMenu\Interfaces\Menu_Item_With_Custom_Url_Interface;
use Elementor\Modules\EditorOne\Classes\Menu_Config;
use Elementor\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Editor_One_Theme_Builder_Menu_Item implements Menu_Item_Third_Level_Interface, Menu_Item_With_Custom_Url_Interface {
public function get_position(): int {
return 85; // After apps (Image Optimization=2, Accessibility=80), before Submissions (100)
}
public function get_slug(): string {
return 'elementor-theme-builder';
}
public function get_parent_slug(): string {
return Menu_Config::ELEMENTOR_HOME_MENU_SLUG;
}
public function get_label(): string {
return esc_html__( 'Theme Builder', 'elementor-pro' );
}
public function get_group_id(): string {
return Menu_Config::EDITOR_GROUP_ID;
}
public function get_capability(): string {
return 'publish_posts';
}
public function is_visible(): bool {
return true;
}
public function get_icon(): string {
return 'build';
}
public function has_children(): bool {
return false;
}
public function get_menu_url(): string {
$return_to = esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ?? '' ) );
return add_query_arg(
[
'return_to' => urlencode( $return_to ),
],
Plugin::instance()->app->get_base_url()
) . '#/site-editor';
}
public function get_page_title(): string {
return esc_html__( 'Theme Builder', 'elementor-pro' );
}
public function render(): void {
}
}

View File

@@ -7,14 +7,17 @@ use Elementor\Core\Admin\Menu\Admin_Menu_Manager;
use Elementor\Core\Admin\Menu\Main as MainMenu;
use Elementor\Core\App\App;
use Elementor\Core\Base\Document;
use Elementor\Modules\EditorOne\Classes\Menu_Config;
use Elementor\Modules\EditorOne\Classes\Menu_Data_Provider;
use Elementor\TemplateLibrary\Source_Local;
use Elementor\App\Modules\ImportExportCustomization\Utils as ImportExportCustomizationUtils;
use ElementorPro\Base\Editor_One_Trait;
use ElementorPro\Base\Module_Base;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\ThemeBuilder\AdminMenuItems\Theme_Builder_Menu_Item;
use ElementorPro\Modules\ThemeBuilder\Classes;
use ElementorPro\Modules\ThemeBuilder\Documents\Single;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\EditorOneMenuItems\Editor_One_Theme_Builder_Menu_Item;
use ElementorPro\Modules\ThemeBuilder\ImportExportCustomization;
use ElementorPro\Plugin;
@@ -23,10 +26,12 @@ if ( ! defined( 'ABSPATH' ) ) {
}
class Module extends Module_Base {
use Editor_One_Trait;
const ADMIN_LIBRARY_TAB_GROUP = 'theme';
const ADMIN_MENU_PRIORITY = 15;
const THEME_BUILDER_MENU_PRIORITY_BEFORE_SUBMISSIONS = 5;
public static function is_preview() {
return Plugin::elementor()->preview->is_preview_mode() || is_preview();
@@ -467,6 +472,10 @@ class Module extends Module_Base {
} );
} else {
add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) {
if ( $this->is_editor_one_active() ) {
return;
}
$this->register_admin_menu_legacy( $admin_menu );
}, static::ADMIN_MENU_PRIORITY /* After "Popups" */ );
@@ -484,6 +493,10 @@ class Module extends Module_Base {
$this->get_admin_templates_url( true )
);
}, 22 /* After core promotion menu */ );
add_action( 'elementor/editor-one/menu/register', function ( Menu_Data_Provider $menu_data_provider ) {
$menu_data_provider->register_menu( new Editor_One_Theme_Builder_Menu_Item() );
}, static::THEME_BUILDER_MENU_PRIORITY_BEFORE_SUBMISSIONS );
}
add_filter( 'elementor/template-library/create_new_dialog_types', [ $this, 'create_new_dialog_types' ] );