1111
1212class Conversion_Banner {
1313
14+ const DEFAULT_SELECTOR = '.wrap h1, .wrap h2 ' ;
15+ const SCRIPT_HANDLE = 'hello-conversion-banner ' ;
16+ const NONCE_ACTION = 'ehe_cb_nonce ' ;
17+ const OBJECT_NAME = 'ehe_cb ' ;
18+ const USER_META_KEY = '_hello_elementor_install_notice ' ;
19+ const AJAX_ACTION = 'ehe_dismiss_theme_notice ' ;
20+
1421 private function render_conversion_banner () {
1522 ?>
1623 <div id="ehe-admin-cb" style="width: calc(100% - 48px)">
1724 </div>
1825 <?php
1926 }
2027
21- private function is_conversion_banner_active (): bool {
22- if ( get_user_meta ( get_current_user_id (), '_hello_elementor_install_notice ' , true ) ) {
23- return false ;
28+ private function get_allowed_admin_pages (): array {
29+ return [
30+ 'dashboard ' => [ 'selector ' => '#wpbody #wpbody-content .wrap h1 ' ],
31+ 'update-core ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
32+ 'edit-post ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
33+ 'edit-category ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
34+ 'edit-post_tag ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
35+ 'upload ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
36+ 'media ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
37+ 'edit-page ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
38+ 'elementor_page_elementor-settings ' => [ 'selector ' => self ::DEFAULT_SELECTOR ],
39+ 'edit-elementor_library ' => [
40+ 'selector ' => self ::DEFAULT_SELECTOR ,
41+ 'before ' => true ,
42+ ],
43+ 'elementor_page_elementor-tools ' => [
44+ 'selector ' => self ::DEFAULT_SELECTOR ,
45+ ],
46+ 'elementor_page_elementor-role-manager ' => [
47+ 'selector ' => self ::DEFAULT_SELECTOR ,
48+ ],
49+ 'elementor_page_elementor-element-manager ' => [
50+ 'selector ' => '.wrap h1, .wrap h3.wp-heading-inline ' ,
51+ ],
52+ 'elementor_page_elementor-system-info ' => [
53+ 'selector ' => '#wpbody #wpbody-content #elementor-system-info .elementor-system-info-header ' ,
54+ 'before ' => true ,
55+ ],
56+ 'elementor_library_page_e-floating-buttons ' => [
57+ 'selector ' => '#wpbody-content .e-landing-pages-empty, .wrap h2 ' ,
58+ 'before ' => true ,
59+ ],
60+ 'edit-e-floating-buttons ' => [
61+ 'selector ' => self ::DEFAULT_SELECTOR ,
62+ ],
63+ 'edit-elementor_library_category ' => [
64+ 'selector ' => self ::DEFAULT_SELECTOR ,
65+ ],
66+ 'themes ' => [
67+ 'selector ' => self ::DEFAULT_SELECTOR ,
68+ ],
69+ 'nav-menus ' => [
70+ 'selector ' => self ::DEFAULT_SELECTOR ,
71+ ],
72+ 'theme-editor ' => [
73+ 'selector ' => self ::DEFAULT_SELECTOR ,
74+ ],
75+ 'plugins ' => [
76+ 'selector ' => self ::DEFAULT_SELECTOR ,
77+ ],
78+ 'plugin-install ' => [
79+ 'selector ' => self ::DEFAULT_SELECTOR ,
80+ ],
81+ 'plugin-editor ' => [
82+ 'selector ' => self ::DEFAULT_SELECTOR ,
83+ ],
84+ 'users ' => [
85+ 'selector ' => self ::DEFAULT_SELECTOR ,
86+ ],
87+ 'user ' => [
88+ 'selector ' => self ::DEFAULT_SELECTOR ,
89+ ],
90+ 'profile ' => [
91+ 'selector ' => self ::DEFAULT_SELECTOR ,
92+ ],
93+ 'tools ' => [
94+ 'selector ' => self ::DEFAULT_SELECTOR ,
95+ ],
96+ 'import ' => [
97+ 'selector ' => self ::DEFAULT_SELECTOR ,
98+ ],
99+ 'export ' => [
100+ 'selector ' => self ::DEFAULT_SELECTOR ,
101+ ],
102+ 'site-health ' => [
103+ 'selector ' => self ::DEFAULT_SELECTOR ,
104+ ],
105+ 'export-personal-data ' => [
106+ 'selector ' => self ::DEFAULT_SELECTOR ,
107+ ],
108+ 'erase-personal-data ' => [
109+ 'selector ' => self ::DEFAULT_SELECTOR ,
110+ ],
111+ 'options-general ' => [
112+ 'selector ' => self ::DEFAULT_SELECTOR ,
113+ ],
114+ 'options-writing ' => [
115+ 'selector ' => self ::DEFAULT_SELECTOR ,
116+ ],
117+ 'options-reading ' => [
118+ 'selector ' => self ::DEFAULT_SELECTOR ,
119+ ],
120+ 'options-discussion ' => [
121+ 'selector ' => self ::DEFAULT_SELECTOR ,
122+ ],
123+ 'options-media ' => [
124+ 'selector ' => self ::DEFAULT_SELECTOR ,
125+ ],
126+ 'options-permalink ' => [
127+ 'selector ' => self ::DEFAULT_SELECTOR ,
128+ ],
129+ 'options-privacy ' => [
130+ 'selector ' => self ::DEFAULT_SELECTOR ,
131+ ],
132+ 'privacy-policy-guide ' => [
133+ 'selector ' => self ::DEFAULT_SELECTOR ,
134+ ],
135+ ];
136+ }
137+
138+ private function is_allowed_admin_page (): array {
139+ $ current_screen = get_current_screen ();
140+
141+ if ( ! $ current_screen ) {
142+ return [];
24143 }
25144
26- if ( Utils::has_pro () && Utils::is_elementor_active () ) {
27- return false ;
145+ $ allowed_pages = $ this ->get_allowed_admin_pages ();
146+ $ current_page = $ current_screen ->id ;
147+
148+ return $ allowed_pages [ $ current_page ] ?? [];
149+ }
150+
151+ private function is_conversion_banner_active (): array {
152+ if ( get_user_meta ( get_current_user_id (), self ::USER_META_KEY , true ) ) {
153+ return [];
28154 }
29155
30- $ current_screen = get_current_screen ();
156+ if ( Utils::has_pro () && Utils::is_elementor_active () ) {
157+ return [];
158+ }
31159
32- return false === strpos ( $ current_screen -> id ?? '' , EHP_THEME_SLUG );
160+ return $ this -> is_allowed_admin_page ( );
33161 }
34162
35- private function enqueue_scripts () {
163+ private function enqueue_scripts ( array $ conversion_banner_active ) {
36164 $ script = new Script (
37- ' hello-conversion-banner ' ,
165+ self :: SCRIPT_HANDLE ,
38166 [ 'wp-util ' ]
39167 );
40168
@@ -43,38 +171,40 @@ private function enqueue_scripts() {
43171 $ is_installing_plugin_with_uploader = 'upload-plugin ' === filter_input ( INPUT_GET , 'action ' , FILTER_UNSAFE_RAW );
44172
45173 wp_localize_script (
46- ' hello-conversion-banner ' ,
47- ' ehe_cb ' ,
174+ self :: SCRIPT_HANDLE ,
175+ self :: OBJECT_NAME ,
48176 [
49- 'nonce ' => wp_create_nonce ( ' ehe_cb_nonce ' ),
177+ 'nonce ' => wp_create_nonce ( self :: NONCE_ACTION ),
50178 'beforeWrap ' => $ is_installing_plugin_with_uploader ,
179+ 'data ' => $ conversion_banner_active ,
51180 ]
52181 );
53182 }
54183
55184 public function dismiss_theme_notice () {
56- check_ajax_referer ( ' ehe_cb_nonce ' , 'nonce ' );
185+ check_ajax_referer ( self :: NONCE_ACTION , 'nonce ' );
57186
58- update_user_meta ( get_current_user_id (), ' _hello_elementor_install_notice ' , true );
187+ update_user_meta ( get_current_user_id (), self :: USER_META_KEY , true );
59188
60189 wp_send_json_success ( [ 'message ' => __ ( 'Notice dismissed. ' , 'hello-elementor ' ) ] );
61190 }
62191
63192 public function __construct () {
64193
65- add_action ( 'wp_ajax_ehe_dismiss_theme_notice ' , [ $ this , 'dismiss_theme_notice ' ] );
194+ add_action ( 'wp_ajax_ ' . self :: AJAX_ACTION , [ $ this , 'dismiss_theme_notice ' ] );
66195
67196 add_action ( 'current_screen ' , function () {
68- if ( ! $ this ->is_conversion_banner_active () ) {
197+ $ conversion_banner_active = $ this ->is_conversion_banner_active ();
198+ if ( ! $ conversion_banner_active ) {
69199 return ;
70200 }
71201
72202 add_action ( 'in_admin_header ' , function () {
73203 $ this ->render_conversion_banner ();
74204 }, 11 );
75205
76- add_action ( 'admin_enqueue_scripts ' , function () {
77- $ this ->enqueue_scripts ();
206+ add_action ( 'admin_enqueue_scripts ' , function () use ( $ conversion_banner_active ) {
207+ $ this ->enqueue_scripts ( $ conversion_banner_active );
78208 } );
79209 } );
80210 }
0 commit comments