WordPress.org

Make WordPress Core

Ticket #18693: 18693-2.patch

File 18693-2.patch, 5.2 KB (added by WraithKenny, 3 years ago)

Pointers API

  • wp-admin/includes/template.php

     
    16301630} 
    16311631 
    16321632/** 
    1633  * Initializes the new feature pointers. 
     1633 * Special function for managing WP one off pointer registrations. 
    16341634 * 
     1635 * @since 3.3-aortic-dissection 
     1636 * 
     1637 * It's likely better to call wp_register_pointer() in somewhere in upgrade.php 
     1638 * So that this function isn't necassary. Up for discussion 
     1639 */ 
     1640function wp_core_pointers() { 
     1641        $pointer = 'wp330-admin-bar'; 
     1642         
     1643        $done = (array) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ); 
     1644         
     1645        if ( ! in_array( $pointer, $done ) && apply_filters( 'show_wp_pointer_admin_bar', true ) ) { 
     1646                wp_register_pointer( $pointer, '_wp_pointer_print_admin_bar' ); 
     1647                $done[] = $pointer;  
     1648                update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $done ); 
     1649                 
     1650        } 
     1651} 
     1652add_action( 'admin_enqueue_scripts', 'wp_core_pointers' ); 
     1653 
     1654/** 
     1655 * Register a pointer. 
     1656 * 
    16351657 * @since 3.3.0 
    16361658 * 
    1637  * Pointer user settings: 
    1638  *    p0 - Admin bar pointer, added 3.3. 
     1659 * Should only be called where the code is executed once, for example, on upgrade, install, or on user-action. 
     1660 * 
    16391661 */ 
     1662function wp_register_pointer( $pointer, $callback, $hook_suffix = 'all', $args = array() ) { 
     1663        $queued = (array) get_user_meta( get_current_user_id(), 'queued_wp_pointers', true ); 
     1664        $queued[ $hook_suffix ][ $pointer ] = array_merge( array( 'callback' => $callback ), $args ); 
     1665        update_user_meta( get_current_user_id(), 'queued_wp_pointers', $queued );  
     1666} 
     1667 
     1668/** 
     1669 * Initializes the new feature pointers. 
     1670 * 
     1671 * @since 3.3.0 
     1672 */ 
    16401673function wp_pointer_enqueue( $hook_suffix ) { 
    1641         $enqueue = false; 
    1642  
    1643         $admin_bar = get_user_setting( 'p0', 0 ); 
    1644         if ( ! $admin_bar && apply_filters( 'show_wp_pointer_admin_bar', true ) ) { 
    1645                 $enqueue = true; 
    1646                 add_action( 'admin_print_footer_scripts', '_wp_pointer_print_admin_bar' ); 
     1674        $queued = (array) get_user_meta( get_current_user_id(), 'queued_wp_pointers', true ); 
     1675         
     1676        if ( empty( $queued[ 'all' ] ) && empty( $queued[ $hook_suffix] ) ) return; 
     1677         
     1678        if ( ! empty( $queued[ 'all' ] ) ) { 
     1679                foreach( $queued[ 'all' ] as $pointer ) { 
     1680                        add_action( 'admin_print_footer_scripts', $pointer[ 'callback' ] ); 
     1681                } 
    16471682        } 
    1648  
    1649         if ( $enqueue ) { 
    1650                 wp_enqueue_style( 'wp-pointer' ); 
    1651                 wp_enqueue_script( 'wp-pointer' ); 
    1652                 wp_enqueue_script( 'utils' ); 
     1683        if ( ! empty( $queued[ $hook_suffix] ) ) { 
     1684                foreach( $queued[ $hook_suffix] as $pointer ) { 
     1685                        add_action( 'admin_print_footer_scripts', $pointer[ 'callback' ] ); 
     1686                } 
    16531687        } 
     1688        wp_enqueue_style( 'wp-pointer' ); 
     1689        wp_enqueue_script( 'wp-pointer' ); 
     1690        wp_enqueue_script( 'utils' ); 
    16541691} 
    16551692add_action( 'admin_enqueue_scripts', 'wp_pointer_enqueue' ); 
    16561693 
     1694/** 
     1695 * Prints admin_bar pointer. 
     1696 * 
     1697 * @since 3.3.0 
     1698 */ 
    16571699function _wp_pointer_print_admin_bar() { 
    1658         $pointer_content  = '<h3>' . ('The admin bar has been updated in WordPress 3.3.') . '</h3>'; 
    1659         $pointer_content .= '<p>' . sprintf( ('Have some feedback? Visit this <a href="%s">ticket</a>.'), 'http://core.trac.wordpress.org/ticket/18197' ) . '</p>'; 
    1660         $pointer_content .= '<p>' . sprintf( ('P.S. You are looking at a new admin pointer. Chime in <a href="%s">here</a>.'), 'http://core.trac.wordpress.org/ticket/18693' ) . '</p>'; 
     1700        $pointer_content  = '<h3>' . __('The admin bar has been updated in WordPress 3.3.') . '</h3>';  
     1701        $pointer_content .= '<p>' . sprintf( __('Have some feedback? Visit this <a href="%s">ticket</a>.'), 'http://core.trac.wordpress.org/ticket/18197' ) . '</p>';  
     1702        $pointer_content .= '<p>' . sprintf( __('P.S. You are looking at a new admin pointer. Chime in <a href="%s">here</a>.'), 'http://core.trac.wordpress.org/ticket/18693' ) . '</p>';  
    16611703 
    1662 ?> 
    1663 <script type="text/javascript"> 
    1664 //<![CDATA[ 
    1665 jQuery(document).ready( function($) { 
    1666         $('#wpadminbar').pointer({ 
    1667                 content: '<?php echo $pointer_content; ?>', 
    1668                 position: { 
    1669                         my: 'left top', 
    1670                         at: 'center bottom', 
    1671                         offset: '-25 0' 
    1672                 }, 
     1704?>  
     1705<script type="text/javascript">  
     1706//<![CDATA[  
     1707jQuery(document).ready( function($) {  
     1708        $('#wpadminbar').pointer({  
     1709                content: '<?php echo $pointer_content; ?>',  
     1710                position: {  
     1711                        my: 'left top',  
     1712                        at: 'center bottom',  
     1713                        offset: '-25 0'  
     1714                },  
    16731715                close: function() { 
    1674                         setUserSetting( 'p0', '1' ); 
    1675                 } 
    1676         }).pointer('open'); 
    1677 }); 
    1678 //]]> 
    1679 </script> 
    1680 <?php 
     1716                        $.post( ajaxurl, {  
     1717                                pointer: 'wp330-admin-bar',  
     1718                //              _ajax_nonce: $('#_ajax_nonce').val(),  
     1719                                action: 'dismiss-wp-pointer'  
     1720                        });  
     1721                }  
     1722        }).pointer('open');  
     1723});  
     1724//]]>  
     1725</script>  
     1726<?php  
    16811727} 
     1728 
     1729/** 
     1730 * Removes a pointer via AJAX. 
     1731 * 
     1732 * @since 3.3.0 
     1733 */ 
     1734function dismiss_wp_pointer() { 
     1735        $pointer = sanitize_key( $_POST[ 'pointer' ] );  
     1736         
     1737        $hook_suffix = ( isset( $_POST[ 'page' ] ) ) ? sanitize_key( $_POST[ 'page' ] ): 'all'; 
     1738         
     1739        //      check_ajax_referer( 'dismiss-pointer_' . $pointer );  
     1740          
     1741        $queued = (array) get_user_meta( get_current_user_id(), 'queued_wp_pointers', true );  
     1742        if ( empty( $queued[ $hook_suffix ][ $pointer ] ) )  
     1743                die( '0' ); 
     1744         
     1745        unset( $queued[ $hook_suffix ][ $pointer ] ); 
     1746 
     1747        update_user_meta( get_current_user_id(), 'queued_wp_pointers', $queued );  
     1748         
     1749        die( '1' );  
     1750        break;  
     1751} 
     1752add_action( 'wp_ajax_dismiss-wp-pointer', 'dismiss_wp_pointer' ); 
     1753 
     1754?>