Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/modules/container-converter/module.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
namespace Elementor\Modules\ContainerConverter;
4
+
5
+
use Elementor\Controls_Manager;
6
+
use Elementor\Controls_Stack;
7
+
use Elementor\Plugin;
8
+
9
+
if ( ! defined( 'ABSPATH' ) ) {
10
+
exit; // Exit if accessed directly.
11
+
}
12
+
13
+
class Module extends \Elementor\Core\Base\Module {
14
+
15
+
// Event name dispatched by the buttons.
16
+
const EVENT_NAME = 'elementorContainerConverter:convert';
17
+
18
+
/**
19
+
* Retrieve the module name.
20
+
*
21
+
* @return string
22
+
*/
23
+
public function get_name() {
24
+
return 'container-converter';
25
+
}
26
+
27
+
/**
28
+
* Determine whether the module is active.
29
+
*
30
+
* @return bool
31
+
*/
32
+
public static function is_active() {
33
+
return Plugin::$instance->experiments->is_feature_active( 'container' );
34
+
}
35
+
36
+
/**
37
+
* Enqueue the module scripts.
38
+
*
39
+
* @return void
40
+
*/
41
+
public function enqueue_scripts() {
42
+
wp_enqueue_script(
43
+
'container-converter',
44
+
$this->get_js_assets_url( 'container-converter' ),
45
+
[ 'elementor-editor' ],
46
+
ELEMENTOR_VERSION,
47
+
true
48
+
);
49
+
}
50
+
51
+
/**
52
+
* Enqueue the module styles.
53
+
*
54
+
* @return void
55
+
*/
56
+
public function enqueue_styles() {
57
+
wp_enqueue_style(
58
+
'container-converter',
59
+
$this->get_css_assets_url( 'modules/container-converter/editor' ),
60
+
[],
61
+
ELEMENTOR_VERSION
62
+
);
63
+
}
64
+
65
+
/**
66
+
* Add a convert button to sections.
67
+
*
68
+
* @param \Elementor\Controls_Stack $controls_stack
69
+
*
70
+
* @return void
71
+
*/
72
+
protected function add_section_convert_button( Controls_Stack $controls_stack ) {
73
+
if ( ! Plugin::$instance->editor->is_edit_mode() ) {
74
+
return;
75
+
}
76
+
77
+
$controls_stack->start_injection( [
78
+
'of' => '_title',
79
+
] );
80
+
81
+
$controls_stack->add_control(
82
+
'convert_to_container',
83
+
[
84
+
'type' => Controls_Manager::BUTTON,
85
+
'label' => esc_html__( 'Convert to container', 'elementor' ),
86
+
'text' => esc_html__( 'Convert', 'elementor' ),
87
+
'button_type' => 'default',
88
+
'description' => esc_html__( 'Copies all of the selected sections and columns and pastes them in a container beneath the original.', 'elementor' ),
89
+
'separator' => 'after',
90
+
'event' => static::EVENT_NAME,
91
+
]
92
+
);
93
+
94
+
$controls_stack->end_injection();
95
+
}
96
+
97
+
/**
98
+
* Add a convert button to page settings.
99
+
*
100
+
* @param \Elementor\Controls_Stack $controls_stack
101
+
*
102
+
* @return void
103
+
*/
104
+
protected function add_page_convert_button( Controls_Stack $controls_stack ) {
105
+
if ( ! Plugin::$instance->editor->is_edit_mode() || ! $this->page_contains_sections( $controls_stack ) || ! Plugin::$instance->role_manager->user_can( 'design' ) ) {
106
+
return;
107
+
}
108
+
109
+
$controls_stack->start_injection( [
110
+
'of' => 'post_title',
111
+
'at' => 'before',
112
+
] );
113
+
114
+
$controls_stack->add_control(
115
+
'convert_to_container',
116
+
[
117
+
'type' => Controls_Manager::BUTTON,
118
+
'label' => esc_html__( 'Convert to container', 'elementor' ),
119
+
'text' => esc_html__( 'Convert', 'elementor' ),
120
+
'button_type' => 'default',
121
+
'description' => esc_html__( 'Copies all of the selected sections and columns and pastes them in a container beneath the original.', 'elementor' ),
122
+
'separator' => 'after',
123
+
'event' => static::EVENT_NAME,
124
+
]
125
+
);
126
+
127
+
$controls_stack->end_injection();
128
+
}
129
+
130
+
/**
131
+
* Checks if document has any Section elements.
132
+
*
133
+
* @param \Elementor\Controls_Stack $controls_stack
134
+
*
135
+
* @return bool
136
+
*/
137
+
protected function page_contains_sections( $controls_stack ) {
138
+
$data = $controls_stack->get_elements_data();
139
+
140
+
if ( ! is_array( $data ) ) {
141
+
return false;
142
+
}
143
+
144
+
foreach ( $data as $element ) {
145
+
if ( isset( $element['elType'] ) && 'section' === $element['elType'] ) {
146
+
return true;
147
+
}
148
+
}
149
+
150
+
return false;
151
+
}
152
+
153
+
/**
154
+
* Initialize the Container-Converter module.
155
+
*
156
+
* @return void
157
+
*/
158
+
public function __construct() {
159
+
add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
160
+
add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'enqueue_styles' ] );
161
+
162
+
add_action( 'elementor/element/section/section_layout/after_section_end', function ( Controls_Stack $controls_stack ) {
163
+
$this->add_section_convert_button( $controls_stack );
164
+
} );
165
+
166
+
add_action( 'elementor/documents/register_controls', function ( Controls_Stack $controls_stack ) {
167
+
$this->add_page_convert_button( $controls_stack );
168
+
} );
169
+
}
170
+
}
171
+