| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php
- /**
- * Manage the MonsterInsights Dashboard Widget
- *
- * @since 7.1
- *
- * @package MonsterInsights
- */
- // Exit if accessed directly.
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- /**
- * Class MonsterInsights_Dashboard_Widget
- */
- class MonsterInsights_Dashboard_Widget {
- const WIDGET_KEY = 'monsterinsights_reports_widget';
- /**
- * The widget options.
- *
- * @var array $options
- */
- public $options;
- /**
- * MonsterInsights_Dashboard_Widget constructor.
- */
- public function __construct() {
- // Allow dashboard widget to be hidden on multisite installs
- $show_widget = is_multisite() ? apply_filters( 'monsterinsights_show_dashboard_widget', true ) : true;
- if ( ! $show_widget ) {
- return false;
- }
- // Check if reports should be visible.
- $dashboards_disabled = monsterinsights_get_option( 'dashboards_disabled', false );
- if ( ! current_user_can( 'monsterinsights_view_dashboard' ) || $dashboards_disabled ) {
- return false;
- }
- add_action( 'wp_dashboard_setup', array( $this, 'register_dashboard_widget' ) );
- add_action( 'admin_enqueue_scripts', array( $this, 'widget_scripts' ) );
- }
- /**
- * Register the dashboard widget.
- */
- public function register_dashboard_widget() {
- global $wp_meta_boxes;
- wp_add_dashboard_widget(
- self::WIDGET_KEY,
- esc_html__( 'MonsterInsights', 'google-analytics-for-wordpress' ),
- array( $this, 'dashboard_widget_content' )
- );
- // Attept to place the widget at the top.
- $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
- $widget_instance = array( self::WIDGET_KEY => $normal_dashboard[ self::WIDGET_KEY ] );
- unset( $normal_dashboard[ self::WIDGET_KEY ] );
- $sorted_dashboard = array_merge( $widget_instance, $normal_dashboard );
- $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
- }
- /**
- * Load the widget content.
- */
- public function dashboard_widget_content() {
- $is_authed = ( MonsterInsights()->auth->is_authed() || MonsterInsights()->auth->is_network_authed() );
- if ( ! $is_authed ) {
- $this->widget_content_no_auth();
- } else {
- $datepicker_options = array( 30, 7 );
- $url = is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_reports' ) : admin_url( 'admin.php?page=monsterinsights_reports' );
- ?>
- <div class="mi-dw-controls">
- <div class="mi-dw-datepicker mi-dw-btn-group" data-type="datepicker">
- <button class="mi-dw-btn-group-label">
- <?php
- // Translators: %d is the number of days.
- printf( esc_html__( 'Last %d days', 'google-analytics-for-wordpress' ), 30 );
- ?>
- </button>
- <div class="mi-dw-btn-list">
- <?php foreach ( $datepicker_options as $datepicker_option ) { ?>
- <button class="mi-dw-btn <?php echo 30 === $datepicker_option ? 'selected' : ''; ?>" data-value=" <?php echo esc_attr( $datepicker_option ); ?>">
- <?php
- // Translators: %d is the number of days.
- printf( esc_html__( 'Last %d days', 'google-analytics-for-wordpress' ), esc_attr( $datepicker_option ) );
- ?>
- </button>
- <?php } ?>
- </div>
- </div>
- <label class="mi-dw-styled-toggle mi-dw-widget-width-toggle-container" title="<?php esc_attr_e( 'Show in full-width mode', 'google-analytics-for-wordpress' ); ?>">
- <input type="checkbox" class="mi-dw-widget-width-toggle"/>
- </label>
- <div class="mi-dw-dropdown">
- <button class="mi-dw-button-cog mi-dw-dropdown-toggle" data-target="#mi-dw-reports-options" type="button"></button>
- <ul class="mi-dw-reports-options" id="mi-dw-reports-options"></ul>
- </div>
- <img class="mi-dw-mascot" src="<?php echo esc_url( plugins_url( 'assets/css/images/mascot.png', MONSTERINSIGHTS_PLUGIN_FILE ) ); ?>" srcset="<?php echo esc_url( plugins_url( 'assets/css/images/mascot@2x.png', MONSTERINSIGHTS_PLUGIN_FILE ) ); ?> 2x"/>
- </div>
- <div class="mi-dw-lite">
- <div class="mi-dw-lite-content">
- <h2><?php esc_html_e( 'View All Analytics on the WordPress Dashboard', 'google-analytics-for-wordpress' ); ?></h2>
- <p><?php esc_html_e( 'Once you upgrade to MonsterInsights Pro, you can see your analytics on the Dashboard', 'google-analytics-for-wordpress' ); ?></p>
- <a href="<?php echo esc_url( monsterinsights_get_upgrade_link( 'dashboard-widget', 'lite-cta' ) ); ?>" target="_blank" class="mi-dw-btn-large"><?php esc_html_e( 'Get MonsterInsights Pro', 'google-analytics-for-wordpress' ); ?></a>
- <br/>
- <a href="<?php echo esc_url( $url ); ?>"><?php esc_html_e( 'Go to MonsterInsights Reports', 'google-analytics-for-wordpress' ); ?></a>
- </div>
- </div>
- <?php
- }
- }
- /**
- * Message to display when the plugin is not authenticated.
- */
- public function widget_content_no_auth() {
- $url = is_network_admin() ? network_admin_url( 'admin.php?page=monsterinsights_settings' ) : admin_url( 'admin.php?page=monsterinsights_settings' );
- ?>
- <div class="mi-dw-not-authed">
- <h2><?php esc_html_e( 'Reports are not available', 'google-analytics-for-wordpress' ); ?></h2>
- <p><?php esc_html_e( 'Please connect MonsterInsights to Google Analytics to see reports.', 'google-analytics-for-wordpress' ); ?></p>
- <a href="<?php echo esc_url( $url ); ?>" class="mi-dw-btn-large"><?php esc_html_e( 'Configure MonsterInsights', 'google-analytics-for-wordpress' ); ?></a>
- </div>
- <?php
- }
- /**
- * Load widget-specific scripts.
- */
- public function widget_scripts() {
- $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
- $screen = get_current_screen();
- if ( isset( $screen->id ) && 'dashboard' === $screen->id ) {
- wp_enqueue_style( 'monsterinsights-dashboard-widget-styles', plugins_url( 'lite/assets/css/admin-dashboard-widget' . $suffix . '.css', MONSTERINSIGHTS_PLUGIN_FILE ), array(), monsterinsights_get_asset_version() );
- wp_enqueue_script( 'jquery-ui-tooltip' );
- wp_enqueue_script( 'monsterinsights-dashboard-widget', plugins_url( 'lite/assets/js/admin-dashboard-widget' . $suffix . '.js', MONSTERINSIGHTS_PLUGIN_FILE ), array( 'jquery' ), monsterinsights_get_asset_version(), true );
- }
- }
- }
|