mirror of
https://github.com/elementor/hello-theme.git
synced 2025-10-03 15:33:37 +08:00
Tweak: Show PLG only on selected pages [TMZ-919] (#547)
Some checks failed
Build / Build theme (push) Has been cancelled
Lint / ESLint (push) Has been cancelled
Lint / PHPCS (push) Has been cancelled
PHPUnit / File Diff (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - Test Results (push) Has been cancelled
Some checks failed
Build / Build theme (push) Has been cancelled
Lint / ESLint (push) Has been cancelled
Lint / PHPCS (push) Has been cancelled
PHPUnit / File Diff (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 7.4 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.0 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.1 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.2 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.5 - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress 6.6 - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress latest - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - WordPress nightly - PHP version 8.3 (push) Has been cancelled
PHPUnit / PHPUnit - Test Results (push) Has been cancelled
This commit is contained in:
parent
512648255d
commit
6ab0b47d15
6 changed files with 186 additions and 49 deletions
|
@ -32,3 +32,4 @@ tsconfig.json
|
||||||
.wp-env.json
|
.wp-env.json
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
temp-changelog-from-readme.txt
|
temp-changelog-from-readme.txt
|
||||||
|
.vscode/
|
||||||
|
|
8
.vscode/settings.json
vendored
Normal file
8
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"phpcs.standard": "./phpcs.xml",
|
||||||
|
"phpcs.executablePath": "vendor/bin/phpcs",
|
||||||
|
"phpcbf.executablePath": "vendor/bin/phpcbf",
|
||||||
|
"phpcs.enable": true,
|
||||||
|
"phpcbf.enable": true,
|
||||||
|
"phpcs.showSources": true
|
||||||
|
}
|
|
@ -3,23 +3,23 @@
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"squizlabs/php_codesniffer": "^3.6",
|
"squizlabs/php_codesniffer": "^3.6",
|
||||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
|
||||||
"wp-coding-standards/wpcs": "^2.3",
|
"wp-coding-standards/wpcs": "^2.3",
|
||||||
"phpunit/phpunit": "9.5.14",
|
"phpunit/phpunit": "9.5.14",
|
||||||
"elementor/elementor-editor-testing": "0.0.3",
|
"elementor/elementor-editor-testing": "0.0.3",
|
||||||
"yoast/phpunit-polyfills": "^1.0.1"
|
"yoast/phpunit-polyfills": "^1.0.1"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"elementor/wp-notifications-package": "1.2.*"
|
"elementor/wp-notifications-package": "1.2.*"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"allow-plugins": {
|
"allow-plugins": {
|
||||||
"dealerdirect/phpcodesniffer-composer-installer": true
|
"dealerdirect/phpcodesniffer-composer-installer": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "phpcs --extensions=php -p",
|
"lint": "phpcs --extensions=php --standard=./phpcs.xml --ignore=node_modules,vendor,assets,tmp -p .",
|
||||||
"lint:fix": "vendor/bin/phpcbf --ignore=node_modules,vendor,build .",
|
"lint:fix": "vendor/bin/phpcbf --extensions=php --standard=./phpcs.xml --ignore=node_modules,vendor,assets,tmp .",
|
||||||
"test": "phpunit --testsuite hello-elementor",
|
"test": "phpunit --testsuite hello-elementor",
|
||||||
"test:install": "bash ./bin/install-wp-tests-local.sh"
|
"test:install": "bash ./bin/install-wp-tests-local.sh"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,21 +20,21 @@ document.addEventListener( 'DOMContentLoaded', () => {
|
||||||
const container = document.getElementById( 'ehe-admin-cb' );
|
const container = document.getElementById( 'ehe-admin-cb' );
|
||||||
|
|
||||||
if ( container ) {
|
if ( container ) {
|
||||||
let headerEnd = document.querySelector( '.wp-header-end' );
|
const { beforeWrap = false } = window.ehe_cb;
|
||||||
|
const { selector, before = false } = window.ehe_cb.data;
|
||||||
if ( ! headerEnd ) {
|
const headerEnd = document.querySelector( selector );
|
||||||
headerEnd = document.querySelector( '.wrap h1, .wrap h2' );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( headerEnd ) {
|
if ( headerEnd ) {
|
||||||
if ( window.ehe_cb.beforeWrap ) {
|
if ( beforeWrap ) {
|
||||||
const wrapElement = document.querySelector( '.wrap' );
|
const wrapElement = document.querySelector( '.wrap' );
|
||||||
if ( wrapElement ) {
|
if ( wrapElement ) {
|
||||||
wrapElement.insertAdjacentElement( 'beforebegin', container );
|
wrapElement.insertAdjacentElement( 'beforebegin', container );
|
||||||
}
|
}
|
||||||
} else {
|
} else if ( before ) {
|
||||||
headerEnd.insertAdjacentElement( 'afterend', container );
|
headerEnd.insertAdjacentElement( 'beforebegin', container );
|
||||||
}
|
} else {
|
||||||
|
headerEnd.insertAdjacentElement( 'afterend', container );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const root = createRoot( container );
|
const root = createRoot( container );
|
||||||
|
|
|
@ -11,6 +11,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
|
||||||
class Conversion_Banner {
|
class Conversion_Banner {
|
||||||
|
|
||||||
|
const DEFAULT_SELECTOR = '.wrap h1, .wrap h2';
|
||||||
|
const SCRIPT_HANDLE = 'hello-conversion-banner';
|
||||||
|
const NONCE_ACTION = 'ehe_cb_nonce';
|
||||||
|
const OBJECT_NAME = 'ehe_cb';
|
||||||
|
const USER_META_KEY = '_hello_elementor_install_notice';
|
||||||
|
const AJAX_ACTION = 'ehe_dismiss_theme_notice';
|
||||||
|
|
||||||
private function render_conversion_banner() {
|
private function render_conversion_banner() {
|
||||||
?>
|
?>
|
||||||
<div id="ehe-admin-cb" style="width: calc(100% - 48px)">
|
<div id="ehe-admin-cb" style="width: calc(100% - 48px)">
|
||||||
|
@ -18,23 +25,144 @@ class Conversion_Banner {
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
private function is_conversion_banner_active(): bool {
|
private function get_allowed_admin_pages(): array {
|
||||||
if ( get_user_meta( get_current_user_id(), '_hello_elementor_install_notice', true ) ) {
|
return [
|
||||||
return false;
|
'dashboard' => [ 'selector' => '#wpbody #wpbody-content .wrap h1' ],
|
||||||
|
'update-core' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'edit-post' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'edit-category' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'edit-post_tag' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'upload' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'media' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'edit-page' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'elementor_page_elementor-settings' => [ 'selector' => self::DEFAULT_SELECTOR ],
|
||||||
|
'edit-elementor_library' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
'before' => true,
|
||||||
|
],
|
||||||
|
'elementor_page_elementor-tools' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'elementor_page_elementor-role-manager' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'elementor_page_elementor-element-manager' => [
|
||||||
|
'selector' => '.wrap h1, .wrap h3.wp-heading-inline',
|
||||||
|
],
|
||||||
|
'elementor_page_elementor-system-info' => [
|
||||||
|
'selector' => '#wpbody #wpbody-content #elementor-system-info .elementor-system-info-header',
|
||||||
|
'before' => true,
|
||||||
|
],
|
||||||
|
'elementor_library_page_e-floating-buttons' => [
|
||||||
|
'selector' => '#wpbody-content .e-landing-pages-empty, .wrap h2',
|
||||||
|
'before' => true,
|
||||||
|
],
|
||||||
|
'edit-e-floating-buttons' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'edit-elementor_library_category' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'themes' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'nav-menus' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'theme-editor' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'plugins' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'plugin-install' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'plugin-editor' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'users' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'user' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'profile' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'tools' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'import' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'export' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'site-health' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'export-personal-data' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'erase-personal-data' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-general' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-writing' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-reading' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-discussion' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-media' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-permalink' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'options-privacy' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
'privacy-policy-guide' => [
|
||||||
|
'selector' => self::DEFAULT_SELECTOR,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function is_allowed_admin_page(): array {
|
||||||
|
$current_screen = get_current_screen();
|
||||||
|
|
||||||
|
if ( ! $current_screen ) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$allowed_pages = $this->get_allowed_admin_pages();
|
||||||
|
$current_page = $current_screen->id;
|
||||||
|
|
||||||
|
return $allowed_pages[ $current_page ] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function is_conversion_banner_active(): array {
|
||||||
|
if ( get_user_meta( get_current_user_id(), self::USER_META_KEY, true ) ) {
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Utils::has_pro() && Utils::is_elementor_active() ) {
|
if ( Utils::has_pro() && Utils::is_elementor_active() ) {
|
||||||
return false;
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$current_screen = get_current_screen();
|
return $this->is_allowed_admin_page();
|
||||||
|
|
||||||
return false === strpos( $current_screen->id ?? '', EHP_THEME_SLUG );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function enqueue_scripts() {
|
private function enqueue_scripts( array $conversion_banner_active ) {
|
||||||
$script = new Script(
|
$script = new Script(
|
||||||
'hello-conversion-banner',
|
self::SCRIPT_HANDLE,
|
||||||
[ 'wp-util' ]
|
[ 'wp-util' ]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -43,29 +171,31 @@ class Conversion_Banner {
|
||||||
$is_installing_plugin_with_uploader = 'upload-plugin' === filter_input( INPUT_GET, 'action', FILTER_UNSAFE_RAW );
|
$is_installing_plugin_with_uploader = 'upload-plugin' === filter_input( INPUT_GET, 'action', FILTER_UNSAFE_RAW );
|
||||||
|
|
||||||
wp_localize_script(
|
wp_localize_script(
|
||||||
'hello-conversion-banner',
|
self::SCRIPT_HANDLE,
|
||||||
'ehe_cb',
|
self::OBJECT_NAME,
|
||||||
[
|
[
|
||||||
'nonce' => wp_create_nonce( 'ehe_cb_nonce' ),
|
'nonce' => wp_create_nonce( self::NONCE_ACTION ),
|
||||||
'beforeWrap' => $is_installing_plugin_with_uploader,
|
'beforeWrap' => $is_installing_plugin_with_uploader,
|
||||||
|
'data' => $conversion_banner_active,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dismiss_theme_notice() {
|
public function dismiss_theme_notice() {
|
||||||
check_ajax_referer( 'ehe_cb_nonce', 'nonce' );
|
check_ajax_referer( self::NONCE_ACTION, 'nonce' );
|
||||||
|
|
||||||
update_user_meta( get_current_user_id(), '_hello_elementor_install_notice', true );
|
update_user_meta( get_current_user_id(), self::USER_META_KEY, true );
|
||||||
|
|
||||||
wp_send_json_success( [ 'message' => __( 'Notice dismissed.', 'hello-elementor' ) ] );
|
wp_send_json_success( [ 'message' => __( 'Notice dismissed.', 'hello-elementor' ) ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
|
|
||||||
add_action( 'wp_ajax_ehe_dismiss_theme_notice', [ $this, 'dismiss_theme_notice' ] );
|
add_action( 'wp_ajax_' . self::AJAX_ACTION, [ $this, 'dismiss_theme_notice' ] );
|
||||||
|
|
||||||
add_action( 'current_screen', function () {
|
add_action( 'current_screen', function () {
|
||||||
if ( ! $this->is_conversion_banner_active() ) {
|
$conversion_banner_active = $this->is_conversion_banner_active();
|
||||||
|
if ( ! $conversion_banner_active ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,8 +203,8 @@ class Conversion_Banner {
|
||||||
$this->render_conversion_banner();
|
$this->render_conversion_banner();
|
||||||
}, 11 );
|
}, 11 );
|
||||||
|
|
||||||
add_action( 'admin_enqueue_scripts', function () {
|
add_action( 'admin_enqueue_scripts', function () use ( $conversion_banner_active ) {
|
||||||
$this->enqueue_scripts();
|
$this->enqueue_scripts( $conversion_banner_active );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,8 +65,8 @@ if (!defined('WP_ADMIN')) {
|
||||||
|
|
||||||
do_action('plugins_loaded');
|
do_action('plugins_loaded');
|
||||||
|
|
||||||
function initialize_elementor_plugin($plugin_class)
|
function initialize_elementor_plugin($plugin_class){
|
||||||
{
|
|
||||||
if (!class_exists($plugin_class)) {
|
if (!class_exists($plugin_class)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,5 @@ function initialize_elementor_plugin($plugin_class)
|
||||||
|
|
||||||
$plugin_instance = initialize_elementor_plugin('Elementor\Plugin');
|
$plugin_instance = initialize_elementor_plugin('Elementor\Plugin');
|
||||||
|
|
||||||
$plugin_instance->initialize_container();
|
|
||||||
|
|
||||||
do_action('init');
|
do_action('init');
|
||||||
do_action('wp_loaded');
|
do_action('wp_loaded');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue