203 lines
8.6 KiB
PHP
203 lines
8.6 KiB
PHP
|
|
<?php
|
||
|
|
/**
|
||
|
|
* Master Slider Pointers Class.
|
||
|
|
*
|
||
|
|
* @package MasterSlider
|
||
|
|
* @author averta [averta.net]
|
||
|
|
* @license LICENSE.txt
|
||
|
|
* @link http://masterslider.com
|
||
|
|
* @copyright Copyright © 2014 averta
|
||
|
|
*/
|
||
|
|
|
||
|
|
// no direct access allowed
|
||
|
|
if ( ! defined('ABSPATH') ) {
|
||
|
|
die();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class MSP_Pointers {
|
||
|
|
|
||
|
|
/* */
|
||
|
|
public $pointers = array();
|
||
|
|
public $seen_ids = array();
|
||
|
|
public $not_seen_pointers = array();
|
||
|
|
public $version_file = '';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set theme or plugine file path to get version from
|
||
|
|
* @param string $version_file a path to plugin or theme file to get and compare version with it
|
||
|
|
*/
|
||
|
|
function __construct( $version_file = '' ) {
|
||
|
|
$this->version_file = $version_file;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public function add( $options = array() ){
|
||
|
|
// return if no data passed
|
||
|
|
if( empty( $options ) || ! is_array( $options ) ) return false;
|
||
|
|
|
||
|
|
$options = array_merge( $this->default_point(), $options );
|
||
|
|
// add pointer to pointers list
|
||
|
|
$this->pointers[] = $options;
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public function init(){
|
||
|
|
global $wp_version;
|
||
|
|
|
||
|
|
if ( version_compare( $wp_version, '3.4', '<' ) )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
if( ! count( $this->pointers) ) return "No Point Available.";
|
||
|
|
|
||
|
|
add_action( 'admin_enqueue_scripts' , array( $this, 'add_hooks' ) );
|
||
|
|
add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public function add_hooks(){
|
||
|
|
if ( ! current_user_can( 'manage_options' ) ) return;
|
||
|
|
|
||
|
|
if( ! count( $this->pointers ) ) return false;
|
||
|
|
|
||
|
|
$this->seen_ids = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
||
|
|
|
||
|
|
foreach ( $this->pointers as $key => $pointer_data ) {
|
||
|
|
if( ! in_array( $pointer_data["id"], $this->seen_ids ) )
|
||
|
|
$this->not_seen_pointers[] = $pointer_data;
|
||
|
|
}
|
||
|
|
|
||
|
|
if( count( $this->not_seen_pointers ) ) {
|
||
|
|
/* Load wp-pointer scripts and styles */
|
||
|
|
wp_enqueue_style ( 'wp-pointer' );
|
||
|
|
wp_enqueue_script( 'wp-pointer' );
|
||
|
|
|
||
|
|
add_action( 'admin_print_footer_scripts', array( $this, 'print_pointer_scripts' ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public function print_pointer_scripts() {
|
||
|
|
if ( ! current_user_can( 'manage_options' ) ) return;
|
||
|
|
|
||
|
|
global $hook_suffix;
|
||
|
|
|
||
|
|
$info = empty( $this->version_file ) ? wp_get_theme() : get_plugin_data( $this->version_file );
|
||
|
|
|
||
|
|
foreach ( $this->not_seen_pointers as $key => $pointer_data ) {
|
||
|
|
// check if we are on correct page to display pointer
|
||
|
|
if( ! empty( $pointer_data["hook_suffix"] ) && $pointer_data["hook_suffix"] != $hook_suffix ) continue;
|
||
|
|
// display pointer for specified theme version and above
|
||
|
|
if( version_compare( $info["Version"], $pointer_data["version"], '<' ) ) continue;
|
||
|
|
?>
|
||
|
|
<script type="text/javascript">
|
||
|
|
jQuery(document).ready(function($) {
|
||
|
|
if( typeof(jQuery().pointer) != 'undefined' ) {
|
||
|
|
$('<?php echo $pointer_data["target"]; ?>').pointer({
|
||
|
|
content: '<?php printf('<h3>%s</h3><p>%s</p>', $pointer_data["title"],$pointer_data["content"]); ?>',
|
||
|
|
pointerClass: '<?php echo $pointer_data["id"]; ?>',
|
||
|
|
pointerWidth: <?php echo isset( $pointer_data["width"] ) ? (int) $pointer_data["width"] : 320; ?>,
|
||
|
|
position: {
|
||
|
|
edge: '<?php echo $pointer_data["position"]["edge"]; ?>',
|
||
|
|
align: '<?php echo $pointer_data["position"]["align"]; ?>'
|
||
|
|
},
|
||
|
|
close: function() {
|
||
|
|
$.post( ajaxurl, {
|
||
|
|
pointer: '<?php echo $pointer_data["id"]; ?>',
|
||
|
|
action: 'dismiss-wp-pointer'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}).pointer('open');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
</script>
|
||
|
|
<?php
|
||
|
|
if( isset( $pointer_data["css"] ) )
|
||
|
|
printf( '<style>%s</style>', $pointer_data["css"] );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public function default_point(){
|
||
|
|
return array(
|
||
|
|
'id' => 'mspo', // Unique id for pointer
|
||
|
|
'hook_suffix'=> '', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
|
||
|
|
'target' => '#menu-settings',// CSS selector to hang the pointer to that element
|
||
|
|
'version' => '1', // The theme or plugin version to display tooltip on
|
||
|
|
'title' => '', // Tooltip title
|
||
|
|
'content' => '', // Tooltip description
|
||
|
|
'position' => array(
|
||
|
|
'edge' => 'left', //top, bottom, left, right
|
||
|
|
'align' => 'middle' //top, bottom, left, right, middle
|
||
|
|
)
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/*-----------------------------------------------------------------------------------*/
|
||
|
|
/* Display Admin Pointers
|
||
|
|
/*-----------------------------------------------------------------------------------*/
|
||
|
|
|
||
|
|
function msp_add_custom_pointers(){
|
||
|
|
|
||
|
|
// admin pointers /////////////////////////////////////////////////////////
|
||
|
|
$msp_pointers = new MSP_Pointers( MSWP_AVERTA_DIR . '/masterslider.php' );
|
||
|
|
$msp_pointers->add( array(
|
||
|
|
'id' => 'master_1_0_view_help', // Unique id for pointer
|
||
|
|
'hook_suffix'=> 'toplevel_page_masterslider', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
|
||
|
|
'target' => '#contextual-help-link', // CSS selector to hang the pointer to that element
|
||
|
|
'version' => '1.0.0', // The theme or plugin version to display tooltip on
|
||
|
|
'title' => __( 'Do you need any help on Master Slider?', MSWP_TEXT_DOMAIN ), // Tooltip title
|
||
|
|
'content' => sprintf( __( 'Please open contextual help panel (click the %s button at top right side of this page)', MSWP_TEXT_DOMAIN ), '<strong style="color:#1D86AC;">'.__( 'Help', MSWP_TEXT_DOMAIN ).'</strong>' ), // Tooltip description
|
||
|
|
'width' => 370,
|
||
|
|
'css' => '.master_1_0_view_help { left:auto !important; right:20px !important; } .master_1_0_view_help .wp-pointer-arrow { left:auto !important; right:25px; }',
|
||
|
|
'position' => array(
|
||
|
|
'edge' => 'top', //top, bottom, left, right
|
||
|
|
'align' => 'middle' //top, bottom, left, right, middle
|
||
|
|
)
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
|
||
|
|
$msp_pointers->add( array(
|
||
|
|
'id' => 'msp_1_4_3__25samples', // Unique id for pointer
|
||
|
|
'hook_suffix'=> 'toplevel_page_masterslider', // Screen hook suffix to show pointer on [empty means display every where on admin] (dashboard : index.php)
|
||
|
|
'target' => '#msp-add-slider', // CSS selector to hang the pointer to that element
|
||
|
|
'version' => '1.5.0', // The theme or plugin version to display tooltip on
|
||
|
|
'title' => __( 'Start with 33 Ready to Use Sample Sliders', MSWP_TEXT_DOMAIN ), // Tooltip title
|
||
|
|
'content' => __( 'You can create your slider from scratch or use one of 33 ready to use sample sliders to start', MSWP_TEXT_DOMAIN ), // Tooltip description
|
||
|
|
'width' => 370,
|
||
|
|
'css' => '.msp_1_4_3__25samples { left:182px !important; } ',
|
||
|
|
'position' => array(
|
||
|
|
'edge' => 'top', //top, bottom, left, right
|
||
|
|
'align' => 'middle' //top, bottom, left, right, middle
|
||
|
|
)
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
$msp_pointers->init();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
msp_add_custom_pointers();
|
||
|
|
|
||
|
|
?>
|