laipower/wp-content/plugins/easy-digital-downloads/includes/admin/promos/notices/class-five-star-review-dashboard.php

188 lines
5.9 KiB
PHP
Raw Normal View History

<?php
/**
* Dashboard Review Notice
*
* @package easy-digital-downloads
* @copyright Copyright (c) 2021, Easy Digital Downloads
* @license GPL2+
* @since 2.11.4
*/
namespace EDD\Admin\Promos\Notices;
class Five_Star_Review_Dashboard extends Notice {
/**
* Action hook for displaying the notice.
*/
const DISPLAY_HOOK = 'edd_dashboard_sales_widget';
/**
* Type of promotional notice.
*/
const TYPE = 'dashboard';
/**
* Capability required to view or dismiss the notice.
*/
const CAPABILITY = 'manage_shop_settings';
/**
* The current screen.
*
* @var string
*/
protected $screen = 'dashboard';
/**
* The ID of the notice. Defined specifically here as we intend to use it twice.
*
* @since 2.11.4
* @return string
*/
public function get_id() {
return 'five-star-review';
}
/**
* Display the notice.
*
* @since 2.11.4
* @return void
*/
public function display() {
?>
<div
id="edd-admin-notice-<?php echo esc_attr( $this->get_id() ); ?>"
class="edd-admin-notice-<?php echo esc_attr( sanitize_html_class( static::TYPE ) ); ?> edd-promo-notice"
data-nonce="<?php echo esc_attr( wp_create_nonce( 'edd-dismiss-notice-' . $this->get_id() ) ); ?>"
data-id="<?php echo esc_attr( $this->get_id() ); ?>"
data-lifespan="<?php echo esc_attr( static::dismiss_duration() ); ?>"
>
<?php
$this->_display();
?>
</div>
<?php
}
/**
* The promo notice content.
*
* @since 2.11.4
* @return void
*/
public function _display() {
?>
<div class="edd-review-step edd-review-step-1">
<p><?php esc_html_e( 'Hey, I noticed you\'ve made quite a few sales with Easy Digital Downloads! Are you enjoying Easy Digital Downloads?', 'easy-digital-downloads' ); ?></p>
<div class="edd-review-actions">
<button class="button-primary edd-review-switch-step" data-step="3"><?php esc_html_e( 'Yes', 'easy-digital-downloads' ); ?></button><br />
<button class="button-link edd-review-switch-step" data-step="2"><?php esc_html_e( 'Not Really', 'easy-digital-downloads' ); ?></button>
</div>
</div>
<div class="edd-review-step edd-review-step-2" style="display:none;">
<p><?php esc_html_e( 'We\'re sorry to hear you aren\'t enjoying Easy Digital Downloads. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'easy-digital-downloads' ); ?></p>
<div class="edd-review-actions">
<a href="<?php echo esc_url( $this->url() ); ?>" class="button button-secondary edd-promo-notice-dismiss" target="_blank"><?php esc_html_e( 'Give Feedback', 'easy-digital-downloads' ); ?></a><br>
<button class="button-link edd-promo-notice-dismiss"><?php esc_html_e( 'No thanks', 'easy-digital-downloads' ); ?></button>
</div>
</div>
<div class="edd-review-step edd-review-step-3" style="display:none;">
<p><?php esc_html_e( 'That\'s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'easy-digital-downloads' ); ?></p>
<p><strong><?php echo wp_kses( __( '~ Chris Klosowski<br>President of Easy Digital Downloads', 'easy-digital-downloads' ), array( 'br' => array() ) ); ?></strong></p>
<div class="edd-review-actions">
<a href="https://wordpress.org/support/plugin/easy-digital-downloads/reviews/?filter=5#new-post" class="button button-primary edd-promo-notice-dismiss" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it!', 'easy-digital-downloads' ); ?></a><br>
<button class="button-link edd-promo-notice-dismiss"><?php esc_html_e( 'No thanks', 'easy-digital-downloads' ); ?></button>
</div>
</div>
<img alt="" class="edd-peeking" src="<?php echo esc_url( EDD_PLUGIN_URL . 'assets/images/edd-peeking.png' ); ?>" />
<script type="text/javascript">
document.addEventListener( 'DOMContentLoaded', function() {
var steps = document.querySelectorAll( '.edd-review-switch-step' );
steps.forEach( function(step) {
step.addEventListener( 'click', function ( e ) {
e.preventDefault();
var target = this.getAttribute( 'data-step' );
if ( target ) {
var notice = this.closest( '.edd-promo-notice' );
var review_step = notice.querySelector( '.edd-review-step-' + target );
if ( review_step ) {
var thisStep = this.closest( '.edd-review-step' );
eddFadeOut( thisStep );
eddFadeIn( review_step );
}
}
} )
} )
function eddFadeIn( element ) {
var op = 0;
element.style.opacity = op;
element.style.display = 'block';
var timer = setInterval( function () {
if ( op >= 1 ) {
clearInterval( timer );
}
element.style.opacity = op;
element.style.filter = 'alpha(opacity=' + op * 100 + ')';
op = op + 0.1;
}, 80 );
}
function eddFadeOut( element ) {
var op = 1;
var timer = setInterval( function () {
if ( op <= 0 ) {
element.style.display = 'none';
clearInterval( timer );
}
element.style.opacity = op;
element.style.filter = 'alpha(opacity=' + op * 100 + ')';
op = op - 0.1;
}, 80 );
}
} );
</script>
<?php
}
/**
* Whether the notice should display.
*
* @since 2.11.4
* @return bool
*/
protected function _should_display() {
$activated = edd_get_activation_date();
// Do not show if EDD was activated less than 30 days ago.
if ( ! is_numeric( $activated ) || ( $activated + ( DAY_IN_SECONDS * 30 ) ) > time() ) {
return false;
}
// @todo Change this to edd_count_orders in 3.0
$payments = edd_count_payments();
return isset( $payments->publish ) && $payments->publish >= 15;
}
/**
* Builds the UTM parameters for the URLs.
*
* @since 2.11.4
*
* @return string
*/
private function url() {
$url = edd_link_helper(
'https://easydigitaldownloads.com/plugin-feedback/',
array(
'utm_medium' => 'feedback-' . static::TYPE,
'utm_content' => 'give-feedback',
)
);
return $url;
}
}