Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/modules/admin-bar/module.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
namespace Elementor\Modules\AdminBar;
3
+
4
+
use Elementor\Core\Base\Document;
5
+
use Elementor\Core\Base\App as BaseApp;
6
+
7
+
if ( ! defined( 'ABSPATH' ) ) {
8
+
exit; // Exit if accessed directly.
9
+
}
10
+
11
+
class Module extends BaseApp {
12
+
/**
13
+
* @var Document[]
14
+
*/
15
+
private $documents = [];
16
+
17
+
/**
18
+
* @return bool
19
+
*/
20
+
public static function is_active() {
21
+
return is_admin_bar_showing();
22
+
}
23
+
24
+
/**
25
+
* @return string
26
+
*/
27
+
public function get_name() {
28
+
return 'admin-bar';
29
+
}
30
+
31
+
/**
32
+
* Collect the documents that was rendered in the current page.
33
+
*
34
+
* @param Document $document
35
+
* @param $is_excerpt
36
+
*/
37
+
public function add_document_to_admin_bar( Document $document, $is_excerpt ) {
38
+
if (
39
+
$is_excerpt ||
40
+
! $document::get_property( 'show_on_admin_bar' ) ||
41
+
! $document->is_editable_by_current_user()
42
+
) {
43
+
return;
44
+
}
45
+
46
+
$this->documents[ $document->get_main_id() ] = $document;
47
+
}
48
+
49
+
/**
50
+
* Scripts for module.
51
+
*/
52
+
public function enqueue_scripts() {
53
+
if ( empty( $this->documents ) ) {
54
+
return;
55
+
}
56
+
57
+
// Should load 'elementor-admin-bar' before 'admin-bar'
58
+
wp_dequeue_script( 'admin-bar' );
59
+
60
+
wp_enqueue_script(
61
+
'elementor-admin-bar',
62
+
$this->get_js_assets_url( 'elementor-admin-bar' ),
63
+
[ 'elementor-frontend-modules' ],
64
+
ELEMENTOR_VERSION,
65
+
true
66
+
);
67
+
68
+
// This is a core script of WordPress, it is not required to pass the 'ver' argument.
69
+
// We should add dependencies to make sure that 'elementor-admin-bar' is loaded before 'admin-bar'.
70
+
wp_enqueue_script(
71
+
'admin-bar',
72
+
null,
73
+
[ 'elementor-admin-bar' ],
74
+
false, // phpcs:ignore WordPress.WP.EnqueuedResourceParameters
75
+
true
76
+
);
77
+
78
+
$this->print_config( 'elementor-admin-bar' );
79
+
}
80
+
81
+
/**
82
+
* Creates admin bar menu items config.
83
+
*
84
+
* @return array
85
+
*/
86
+
public function get_init_settings() {
87
+
$settings = [];
88
+
89
+
if ( ! empty( $this->documents ) ) {
90
+
$settings['elementor_edit_page'] = $this->get_edit_button_config();
91
+
}
92
+
93
+
/**
94
+
* Admin bar settings in the frontend.
95
+
*
96
+
* Register admin_bar config to parse later in the frontend and add to the admin bar with JS.
97
+
*
98
+
* @since 3.0.0
99
+
*
100
+
* @param array $settings the admin_bar config
101
+
*/
102
+
$settings = apply_filters( 'elementor/frontend/admin_bar/settings', $settings );
103
+
104
+
return $settings;
105
+
}
106
+
107
+
/**
108
+
* Creates the config for 'Edit with elementor' menu item.
109
+
*
110
+
* @return array
111
+
*/
112
+
private function get_edit_button_config() {
113
+
$queried_object_id = get_queried_object_id();
114
+
$href = null;
115
+
116
+
if ( is_singular() && isset( $this->documents[ $queried_object_id ] ) ) {
117
+
$href = $this->documents[ $queried_object_id ]->get_edit_url();
118
+
119
+
unset( $this->documents[ $queried_object_id ] );
120
+
}
121
+
122
+
return [
123
+
'id' => 'elementor_edit_page',
124
+
'title' => esc_html__( 'Edit with Elementor', 'elementor' ),
125
+
'href' => $href,
126
+
'children' => array_map( function ( $document ) {
127
+
return [
128
+
'id' => "elementor_edit_doc_{$document->get_main_id()}",
129
+
'title' => $document->get_post()->post_title,
130
+
'sub_title' => $document::get_title(),
131
+
'href' => $document->get_edit_url(),
132
+
];
133
+
}, $this->documents ),
134
+
];
135
+
}
136
+
137
+
public function add_clear_cache_in_admin_bar( $admin_bar_config ): array {
138
+
if ( current_user_can( 'manage_options' ) ) {
139
+
$clear_cache_url = add_query_arg(
140
+
[
141
+
'_wpnonce' => wp_create_nonce( 'elementor_site_clear_cache' ),
142
+
],
143
+
admin_url( 'admin-post.php?action=elementor_site_clear_cache' ),
144
+
);
145
+
146
+
$admin_bar_config['elementor_edit_page']['children'][] = [
147
+
'id' => 'elementor_site_clear_cache',
148
+
'title' => esc_html__( 'Clear Files & Data', 'elementor' ),
149
+
'sub_title' => esc_html__( 'Site', 'elementor' ),
150
+
'href' => $clear_cache_url,
151
+
];
152
+
}
153
+
154
+
return $admin_bar_config;
155
+
}
156
+
157
+
/**
158
+
* Module constructor.
159
+
*/
160
+
public function __construct() {
161
+
add_action( 'elementor/frontend/before_get_builder_content', [ $this, 'add_document_to_admin_bar' ], 10, 2 );
162
+
add_action( 'wp_footer', [ $this, 'enqueue_scripts' ], 11 /* after third party scripts */ );
163
+
164
+
add_filter( 'elementor/frontend/admin_bar/settings', [ $this, 'add_clear_cache_in_admin_bar' ], 500 );
165
+
}
166
+
}
167
+