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;
?>
%s', $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 . '/' . MSWP_SLUG . '.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?', 'master-slider' ), // Tooltip title
'content' => sprintf( __( 'Please open contextual help panel (click the %s button at top right side of this page)', 'master-slider' ), ''.__( 'Help', 'master-slider' ).'' ), // 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->init();
}
// msp_add_custom_pointers();
?>