PluginProbe
Elementor Website Builder – more than just a page builder / 3.29.1
Elementor Website Builder – more than just a page builder v3.29.1
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
elementor / modules / site-navigation / module.php

module.php in Elementor Website Builder – more than just a page builder 3.29.1, at modules/site-navigation/module.php

94 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\SiteNavigation;
4
5 use Elementor\Core\Base\Module as Module_Base;
6 use Elementor\Core\Experiments\Exceptions\Dependency_Exception;
7 use Elementor\Core\Experiments\Manager as Experiments_Manager;
8 use Elementor\Modules\SiteNavigation\Data\Controller;
9 use Elementor\Modules\SiteNavigation\Rest_Fields\Page_User_Can;
10 use Elementor\Plugin;
11 use Elementor\Utils;
12
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit; // Exit if accessed directly.
16 }
17
18 class Module extends Module_Base {
19 const PAGES_PANEL_EXPERIMENT_NAME = 'pages_panel';
20 const PACKAGES = [
21 'editor-site-navigation',
22 ];
23 /**
24 * Initialize the Site navigation module.
25 *
26 * @return void
27 * @throws \Exception If the experiment registration fails.
28 */
29 public function __construct() {
30 Plugin::$instance->data_manager_v2->register_controller( new Controller() );
31
32 $is_tests = Utils::is_elementor_tests();
33 $is_v2_experiment_on = Plugin::$instance->experiments->is_feature_active( 'editor_v2' );
34 if ( ! $is_v2_experiment_on && ! $is_tests ) {
35 return;
36 }
37
38 $this->register_pages_panel_experiment();
39
40 add_filter( 'elementor/editor/v2/packages', fn( $packages ) => $this->add_packages( $packages ) );
41
42 if ( Plugin::$instance->experiments->is_feature_active( self::PAGES_PANEL_EXPERIMENT_NAME ) ) {
43 add_filter( 'elementor/editor/v2/scripts/env', function( $env ) {
44 $env['@elementor/editor-site-navigation'] = [
45 'is_pages_panel_active' => true,
46 ];
47
48 return $env;
49 } );
50
51 $this->register_rest_fields();
52 }
53 }
54
55 /**
56 * Retrieve the module name.
57 *
58 * @return string
59 */
60 public function get_name() {
61 return 'site-navigation';
62 }
63
64 /**
65 * Register Experiment
66 *
67 * @since 3.16.0
68 *
69 * @return void
70 */
71 private function register_pages_panel_experiment() {
72 Plugin::$instance->experiments->add_feature( [
73 'name' => self::PAGES_PANEL_EXPERIMENT_NAME,
74 'title' => esc_html__( 'Pages Panel', 'elementor' ),
75 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
76 'default' => Experiments_Manager::STATE_INACTIVE,
77 'hidden' => true,
78 'dependencies' => [
79 'editor_v2',
80 ],
81 ] );
82 }
83
84 private function register_rest_fields() {
85 add_action( 'rest_api_init', function() {
86 ( new Page_User_Can() )->register_rest_field();
87 } );
88 }
89
90 private function add_packages( $packages ) {
91 return array_merge( $packages, self::PACKAGES );
92 }
93 }
94