188 lines
5.9 KiB
PHP
188 lines
5.9 KiB
PHP
|
<?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;
|
||
|
}
|
||
|
}
|