WordPress.org

Make WordPress Core

Ticket #18693: 18693.more-pointers.6.patch

File 18693.more-pointers.6.patch, 6.0 KB (added by koopersmith, 7 years ago)
  • wp-admin/includes/template.php

     
    16641664<?php
    16651665}
    16661666
    1667 /**
    1668  * Initializes the new feature pointers.
    1669  *
    1670  * @since 3.3.0
    1671  *
    1672  * Pointer user settings:
    1673  *    p0 - Admin bar pointer, added 3.3.
    1674  */
    1675 function wp_pointer_enqueue( $hook_suffix ) {
    1676         $enqueue = false;
     1667final class WP_Internal_Pointers {
     1668        /**
     1669         * Initializes the new feature pointers.
     1670         *
     1671         * @since 3.3.0
     1672         *
     1673         * All pointers can be disabled using the following:
     1674         *     remove_action( 'admin_enqueue_scripts', array( 'WP_Internal_Pointers', 'enqueue_scripts' ) );
     1675         *
     1676         * Individual pointers (e.g. wp330-toolbar) can be disabled using the following:
     1677         *     remove_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_wp330_toolbar' ) );
     1678         */
     1679        public static function enqueue_scripts( $hook_suffix ) {
     1680                /*
     1681                 * Register feature pointers
     1682                 * Format: array( hook_suffix => pointer_id )
     1683                 */
     1684                $registered_pointers = array(
     1685                        'index.php'    => 'wp330-toolbar',
     1686                        'post-new.php' => 'wp330-media-uploader',
     1687                        'themes.php'   => 'wp330-saving-widgets',
     1688                );
    16771689
    1678         $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
     1690                // Check if screen related pointers are registered
     1691                if ( empty( $registered_pointers[$hook_suffix] ) )
     1692                        return;
    16791693
    1680         if ( ! in_array( 'wp330-admin-bar', $dismissed ) ) {
    1681                 $enqueue = true;
    1682                 add_action( 'admin_print_footer_scripts', '_wp_pointer_print_admin_bar' );
    1683         }
     1694                // Get dismissed pointers
     1695                $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
    16841696
    1685         if ( $enqueue ) {
     1697                // Sort dismissed pointers out
     1698                $pointers = array_diff( (array) $registered_pointers[$hook_suffix], $dismissed );
     1699
     1700                // Pointers were already shown
     1701                if ( empty( $pointers ) )
     1702                        return;
     1703
     1704                // Init pointers print functions
     1705                foreach ( $pointers as $pointer )
     1706                        add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . str_replace( '-', '_', $pointer ) ) );
     1707
     1708                // Add pointers script and style to queue
    16861709                wp_enqueue_style( 'wp-pointer' );
    16871710                wp_enqueue_script( 'wp-pointer' );
    16881711        }
    1689 }
    1690 add_action( 'admin_enqueue_scripts', 'wp_pointer_enqueue' );
    16911712
    1692 function _wp_pointer_print_admin_bar() {
    1693         $pointer_content  = '<h3>' . 'The admin bar has been updated in WordPress 3.3.' . '</h3>';
    1694         $pointer_content .= '<p>' . sprintf( 'Have some feedback? Visit the <a href="%s">forum</a>.', 'http://wordpress.org/support/forum/alphabeta' ) . '</p>';
    1695         $pointer_content .= '<p>' . 'P.S. You are looking at a new admin pointer.' . '</p>';
     1713        /**
     1714         * Print the pointer javascript data.
     1715         *
     1716         * @since 3.3.0
     1717         *
     1718         * @param string $pointer_id The pointer ID.
     1719         * @param string $selector The HTML elements, on which the pointer should be attached.
     1720         * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.dev.js).
     1721         */
     1722        private static function print_js( $pointer_id, $selector, $args ) {
     1723                if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
     1724                        return;
    16961725
    1697 ?>
    1698 <script type="text/javascript">
    1699 //<![CDATA[
    1700 jQuery(document).ready( function($) {
    1701         $('#wpadminbar').pointer({
    1702                 content: '<?php echo $pointer_content; ?>',
    1703                 position: {
    1704                         edge:  'top',
    1705                         align: 'center'
    1706                 },
    1707                 close: function() {
    1708                         $.post( ajaxurl, {
    1709                                         pointer: 'wp330-admin-bar',
    1710                                 //      _ajax_nonce: $('#_ajax_nonce').val(),
    1711                                         action: 'dismiss-wp-pointer'
     1726                ?>
     1727                <script type="text/javascript">
     1728                //<![CDATA[
     1729                jQuery(document).ready( function($) {
     1730                        var options = <?php echo json_encode( $args ); ?>;
     1731
     1732                        if ( ! options )
     1733                                return;
     1734
     1735                        options = $.extend( options, {
     1736                                close: function() {
     1737                                        $.post( ajaxurl, {
     1738                                                pointer: '<?php echo $pointer_id; ?>',
     1739                                                action: 'dismiss-wp-pointer'
     1740                                        });
     1741                                }
    17121742                        });
    1713                 }
    1714         }).pointer('open');
    1715 });
    1716 //]]>
    1717 </script>
    1718 <?php
     1743
     1744                        $('<?php echo $selector; ?>').pointer( options ).pointer('open');
     1745                });
     1746                //]]>
     1747                </script>
     1748                <?php
     1749        }
     1750
     1751        public static function pointer_wp330_toolbar() {
     1752                $content  = '<h3>' . esc_js( __( 'New Feature: Toolbar' ) ). '</h3>';
     1753                $content .= '<p>' . esc_js( __( 'We&#8217;ve combined the admin bar and the old Dashboard header into one persistent toolbar. Hover over the toolbar items to see what&#8217;s new.' ) ) . '</p>';
     1754
     1755                if ( is_multisite() && is_super_admin() )
     1756                        $content .= '<p>' .esc_js( __( 'Network Admin is now located in the My Sites menu.' ) ) . '</p>';
     1757
     1758                WP_Internal_Pointers::print_js( 'wp330-toolbar', '#wpadminbar', array(
     1759                        'content'  => $content,
     1760                        'position' => array( 'edge' => 'top', 'align' => 'center' ),
     1761                ) );
     1762        }
     1763
     1764        /**
     1765         * Print 'Updated Media Uploader' for 3.3.0.
     1766         *
     1767         * @since 3.3.0
     1768         */
     1769        public static function pointer_wp330_media_uploader() {
     1770                $content  = '<h3>' . esc_js( __( 'Updated Media Uploader' ) ) . '</h3>';
     1771                $content .= '<p>' . esc_js( __( 'The single media icon now launches the uploader for all file types, and the new drag and drop interface makes uploading a breeze.' ) ) . '</p>';
     1772
     1773                WP_Internal_Pointers::print_js( 'wp330-media-uploader', '#content-add_media', array(
     1774                        'content'  => $content,
     1775                        'position' => array( 'edge' => 'left', 'align' => 'center' ),
     1776                ) );
     1777        }
     1778
     1779        /**
     1780         * Print 'New Feature: Saving Widgets' for 3.3.0.
     1781         *
     1782         * @since 3.3.0
     1783         */
     1784        public static function pointer_wp330_saving_widgets() {
     1785                $content  = '<h3>' . esc_js( __( 'New Feature: Saving Widgets' ) ) . '</h3>';
     1786                $content .= '<p>' . esc_js( __( 'If you change your mind and revert to your previous theme, we&#8217;ll put the widgets back the way you had them.' ) ) . '</p>';
     1787
     1788                WP_Internal_Pointers::print_js( 'wp330-saving-widgets', '#message2', array(
     1789                        'content'  => $content,
     1790                        'position' => array( 'edge' => 'top', 'align' => 'left' ),
     1791                ) );
     1792        }
    17191793}
     1794
     1795add_action( 'admin_enqueue_scripts', array( 'WP_Internal_Pointers', 'enqueue_scripts' ) );
     1796 No newline at end of file