WordPress.org

Make WordPress Core

Ticket #28542: 28542.2.diff

File 28542.2.diff, 5.1 KB (added by westonruter, 5 years ago)

https://github.com/xwpco/wordpress-develop/pull/32

  • src/wp-admin/customize.php

    diff --git src/wp-admin/customize.php src/wp-admin/customize.php
    index 7828ee4..6496367 100644
    endif; 
    7878
    7979$is_ios = wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] );
    8080
    81 if ( $is_ios )
     81if ( $is_ios ) {
    8282        $body_class .= ' ios';
     83}
    8384
    84 if ( is_rtl() )
    85         $body_class .=  ' rtl';
     85if ( is_rtl() ) {
     86        $body_class .= ' rtl';
     87}
    8688$body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
    8789
    88 $admin_title = sprintf( __( '%1$s — WordPress' ), strip_tags( sprintf( __( 'Customize %s' ), $wp_customize->theme()->display('Name') ) ) );
     90if ( $wp_customize->is_theme_active() ) {
     91        $document_title_tmpl = _x( 'Customize: %s', 'Placeholder is the document title from the preview' );
     92} else {
     93        $document_title_tmpl = _x( 'Live Preview: %s', 'Placeholder is the document title from the preview' );
     94}
     95$document_title_tmpl = html_entity_decode( $document_title_tmpl, ENT_QUOTES, 'UTF-8' ); // because exported to JS and assigned to document.title
     96$admin_title = sprintf( $document_title_tmpl, __( 'Loading…' ) );
     97
    8998?><title><?php echo $admin_title; ?></title>
    9099
    91100<script type="text/javascript">
    do_action( 'customize_controls_print_scripts' ); 
    253262                        'save'    => wp_create_nonce( 'save-customize_' . $wp_customize->get_stylesheet() ),
    254263                        'preview' => wp_create_nonce( 'preview-customize_' . $wp_customize->get_stylesheet() )
    255264                ),
     265                'documentTitleTmpl' => $document_title_tmpl,
    256266        );
    257267
    258268        // Prepare Customize Setting objects to pass to Javascript.
  • src/wp-admin/js/customize-controls.js

    diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
    index fad223e..3d912e1 100644
     
    763763        }());
    764764
    765765        /**
     766         * Set the document title of the customizer
     767         *
     768         * @param {string} documentTitle
     769         */
     770        api.setDocumentTitle = function ( documentTitle ) {
     771                var tmpl, title;
     772                tmpl = api.settings.documentTitleTmpl;
     773                title = tmpl.replace( '%s', documentTitle );
     774                document.title = title;
     775                if ( window !== window.parent ) {
     776                        window.parent.document.title = document.title;
     777                }
     778        };
     779
     780        /**
    766781         * @constructor
    767782         * @augments wp.customize.Messenger
    768783         * @augments wp.customize.Class
     
    877892
    878893                        // Update the URL when the iframe sends a URL message.
    879894                        this.bind( 'url', this.previewUrl );
     895
     896                        // Update the document title when the preview changes
     897                        this.bind( 'documentTitle', function ( title ) {
     898                                api.setDocumentTitle( title );
     899                        } );
    880900                },
    881901
    882902                query: function() {},
  • src/wp-includes/js/customize-loader.js

    diff --git src/wp-includes/js/customize-loader.js src/wp-includes/js/customize-loader.js
    index f0dbfdc..07f2196 100644
    window.wp = window.wp || {}; 
    7878                                Loader.open( Loader.settings.url + '?' + hash );
    7979                        }
    8080
    81                         if ( ! hash && ! $.support.history ){
     81                        if ( ! hash && ! $.support.history ) {
    8282                                Loader.close();
    8383                        }
    8484                },
    window.wp = window.wp || {}; 
    105105                                return window.location = src;
    106106                        }
    107107
     108                        // Store the document title prior to opening the Live Preview
     109                        this.originalDocumentTitle = document.title;
     110
    108111                        this.active = true;
    109112                        this.body.addClass('customize-loading');
    110113
    window.wp = window.wp || {}; 
    134137                                } else {
    135138                                        Loader.close();
    136139                                }
    137                         } );
     140                        });
    138141
    139142                        // Prompt AYS dialog when navigating away
    140143                        $( window ).on( 'beforeunload', this.beforeunload );
    window.wp = window.wp || {}; 
    158161                },
    159162
    160163                pushState: function ( src ) {
    161                         var hash;
     164                        var hash = src.split( '?' )[1];
    162165
    163166                        // Ensure we don't call pushState if the user hit the forward button.
    164167                        if ( $.support.history && window.location.href !== src ) {
    165168                                history.pushState( { customize: src }, '', src );
    166169                        } else if ( ! $.support.history && $.support.hashchange && hash ) {
    167                                 hash = src.split( '?' )[1];
    168170                                window.location.hash = 'wp_customize=on&' + hash;
    169171                        }
     172
     173                        this.trigger( 'open' );
    170174                },
    171175
    172176                /**
    window.wp = window.wp || {}; 
    195199
    196200                        this.trigger( 'close' );
    197201
     202                        // Restore document title prior to opening the Live Preview
     203                        if ( this.originalDocumentTitle ) {
     204                                document.title = this.originalDocumentTitle;
     205                        }
     206
    198207                        // Return focus to link that was originally clicked.
    199208                        if ( this.link ) {
    200209                                this.link.focus();
  • src/wp-includes/js/customize-preview.js

    diff --git src/wp-includes/js/customize-preview.js src/wp-includes/js/customize-preview.js
    index 6da26f4..3979f43 100644
     
    101101                        preview.send( 'synced' );
    102102                });
    103103
    104         preview.bind( 'active', function() {
    105             if ( api.settings.nonce )
    106                 preview.send( 'nonce', api.settings.nonce );
    107         });
     104                preview.bind( 'active', function() {
     105                        if ( api.settings.nonce ) {
     106                                preview.send( 'nonce', api.settings.nonce );
     107                        }
     108
     109                        preview.send( 'documentTitle', document.title );
     110                });
    108111
    109112                preview.send( 'ready', {
    110113                        activeControls: api.settings.activeControls