PluginProbe
Elementor Website Builder – more than just a page builder / 3.24.0-dev3
Elementor Website Builder – more than just a page builder v3.24.0-dev3
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 / atomic-widgets / module.php

module.php in Elementor Website Builder – more than just a page builder 3.24.0-dev3, at modules/atomic-widgets/module.php

78 lines 2.2 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\AtomicWidgets;
4
5 use Elementor\Core\Base\Module as BaseModule;
6 use Elementor\Core\Experiments\Manager as Experiments_Manager;
7 use Elementor\Modules\AtomicWidgets\Widgets\Atomic_Heading;
8 use Elementor\Modules\AtomicWidgets\Widgets\Atomic_Image;
9 use Elementor\Plugin;
10 use Elementor\Widgets_Manager;
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit; // Exit if accessed directly.
14 }
15
16 class Module extends BaseModule {
17 const EXPERIMENT_NAME = 'atomic_widgets';
18
19 const PACKAGES = [
20 'editor-documents', // TODO: NEED to be removed once the editor will not be dependent on the documents package.
21 'editor-panels',
22 'editor-editing-panel',
23 'editor-style',
24 ];
25
26 public function get_name() {
27 return 'atomic-widgets';
28 }
29
30 public function __construct() {
31 parent::__construct();
32
33 $this->register_experiment();
34
35 if ( Plugin::$instance->experiments->is_feature_active( self::EXPERIMENT_NAME ) ) {
36 add_filter( 'elementor/editor/v2/packages', fn( $packages ) => $this->add_packages( $packages ) );
37 add_filter( 'elementor/widgets/register', fn( Widgets_Manager $widgets_manager ) => $this->register_widgets( $widgets_manager ) );
38
39 add_action( 'elementor/editor/after_enqueue_scripts', fn() => $this->enqueue_scripts() );
40 }
41 }
42
43 private function register_experiment() {
44 Plugin::$instance->experiments->add_feature( [
45 'name' => self::EXPERIMENT_NAME,
46 'title' => esc_html__( 'Atomic Widgets', 'elementor' ),
47 'description' => esc_html__( 'Enable atomic widgets.', 'elementor' ),
48 'hidden' => true,
49 'default' => Experiments_Manager::STATE_INACTIVE,
50 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
51 ] );
52 }
53
54 private function add_packages( $packages ) {
55 return array_merge( $packages, self::PACKAGES );
56 }
57
58 private function register_widgets( Widgets_Manager $widgets_manager ) {
59 $widgets_manager->register( new Atomic_Heading() );
60 $widgets_manager->register( new Atomic_Image() );
61 }
62
63 /**
64 * Enqueue the module scripts.
65 *
66 * @return void
67 */
68 private function enqueue_scripts() {
69 wp_enqueue_script(
70 'elementor-atomic-widgets-editor',
71 $this->get_js_assets_url( 'atomic-widgets-editor' ),
72 [ 'elementor-editor' ],
73 ELEMENTOR_VERSION,
74 true
75 );
76 }
77 }
78