WordPress.org

Make WordPress Core

Ticket #20926: 20926.diff

File 20926.diff, 3.6 KB (added by koopersmith, 23 months ago)
  • wp-admin/admin-ajax.php

     
    3838 
    3939$core_actions_get = array( 
    4040        'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache', 
    41         'autocomplete-user', 'dashboard-widgets', 
     41        'autocomplete-user', 'dashboard-widgets', 'logged-in', 
    4242); 
    4343 
    4444$core_actions_post = array( 
  • wp-admin/includes/ajax-actions.php

     
    212212        wp_die(); 
    213213} 
    214214 
     215function wp_ajax_logged_in() { 
     216        wp_die( 1 ); 
     217} 
     218 
    215219/* 
    216220 * Ajax helper. 
    217221 */ 
  • wp-admin/js/customize-controls.dev.js

     
    288288                sensitivity: 2000, 
    289289 
    290290                initialize: function( params, options ) { 
    291                         var loaded   = false, 
    292                                 ready    = false, 
    293                                 deferred = $.Deferred(), 
     291                        var deferred = $.Deferred(), 
    294292                                self     = this; 
    295293 
    296294                        // This is the promise object. 
     
    304302 
    305303                        this.add( 'previewUrl', params.previewUrl ); 
    306304 
    307                         this.bind( 'ready', function() { 
     305                        this.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() }); 
     306 
     307                        this.run( deferred ); 
     308                }, 
     309 
     310                run: function( deferred ) { 
     311                        var self   = this, 
     312                                loaded = false, 
     313                                ready  = false; 
     314 
     315                        if ( this._ready ) 
     316                                this.unbind( 'ready', this._ready ); 
     317 
     318                        this._ready = function() { 
    308319                                ready = true; 
    309320 
    310321                                if ( loaded ) 
    311322                                        deferred.resolveWith( self ); 
    312                         }); 
     323                        }; 
    313324 
    314                         params.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() }); 
     325                        this.bind( 'ready', this._ready ); 
    315326 
    316327                        this.request = $.ajax( this.previewUrl(), { 
    317328                                type: 'POST', 
    318                                 data: params.query, 
     329                                data: this.query, 
    319330                                xhrFields: { 
    320331                                        withCredentials: true 
    321332                                } 
     
    339350 
    340351                                // Check if the user is not logged in. 
    341352                                if ( '0' === response ) { 
    342                                         deferred.rejectWith( self, [ 'logged out' ] ); 
     353                                        self.login( deferred ); 
    343354                                        return; 
    344355                                } 
    345356 
     
    360371                                response = response.slice( 0, index ) + response.slice( index + signature.length ); 
    361372 
    362373                                // Create the iframe and inject the html content. 
    363                                 // Strip the signature from the request. 
    364                                 response = response.slice( 0, index ) + response.slice( index + signature.length ); 
    365  
    366                                 // Create the iframe and inject the html content. 
    367374                                self.iframe = $('<iframe />').appendTo( self.previewer.container ); 
    368375 
    369376                                // Bind load event after the iframe has been added to the page; 
     
    388395                        }); 
    389396                }, 
    390397 
     398                login: function( deferred ) { 
     399                        var self = this, 
     400                                reject; 
     401 
     402                        reject = function() { 
     403                                deferred.rejectWith( self, [ 'logged out' ] ); 
     404                        }; 
     405 
     406                        if ( this.triedLogin ) 
     407                                return reject(); 
     408 
     409                        // Check if we have an admin cookie. 
     410                        $.get( api.settings.url.ajax, { 
     411                                action: 'logged-in' 
     412                        }).fail( reject ).done( function( response ) { 
     413                                var iframe; 
     414 
     415                                if ( '1' !== response ) 
     416                                        reject(); 
     417 
     418                                iframe = $('<iframe src="' + self.previewUrl() + '" />').hide(); 
     419                                iframe.appendTo( self.previewer.container ); 
     420                                iframe.load( function() { 
     421                                        self.triedLogin = true; 
     422 
     423                                        iframe.remove(); 
     424                                        self.run( deferred ); 
     425                                }); 
     426                        }); 
     427                }, 
     428 
    391429                destroy: function() { 
    392430                        api.Messenger.prototype.destroy.call( this ); 
    393431                        this.request.abort();