WordPress.org

Make WordPress Core

Ticket #24716: 24716.26.diff

File 24716.26.diff, 5.8 KB (added by adamsilverstein, 3 years ago)

remove unused handler

  • src/wp-admin/upload.php

     
    2424        wp_enqueue_media(); 
    2525        wp_enqueue_script( 'media-grid' ); 
    2626        wp_enqueue_script( 'media' ); 
     27        wp_localize_script( 'media-grid', 'mediaGridSettings', array( 'adminUrl' => parse_url( self_admin_url(), PHP_URL_PATH )  ) ); 
    2728 
    2829        require_once( ABSPATH . 'wp-admin/admin-header.php' ); 
    2930        include( ABSPATH . 'wp-admin/admin-footer.php' ); 
  • src/wp-includes/js/media-grid.js

     
    1 /* global _wpMediaViewsL10n, setUserSetting, deleteUserSetting, MediaElementPlayer */ 
     1/* global _wpMediaViewsL10n, setUserSetting, deleteUserSetting, MediaElementPlayer, mediaGridSettings*/ 
    22(function($, _, Backbone, wp) { 
    33        var media = wp.media, l10n; 
    44 
     
    120120                 * @global wp.Uploader 
    121121                 */ 
    122122                initialize: function() { 
     123                        var self = this; 
    123124                        _.defaults( this.options, { 
    124125                                title:     l10n.mediaLibraryTitle, 
    125126                                modal:     false, 
     
    168169                        this.createStates(); 
    169170                        this.bindHandlers(); 
    170171                        this.render(); 
     172 
     173                        // Set up the Backbone router after a brief delay 
     174                        _.delay( function(){ 
     175                                wp.media.mediarouter = new media.view.Frame.Router( self ); 
     176                                // Verify pushState support and activate 
     177                                if ( window.history && window.history.pushState ) { 
     178                                        Backbone.history.start({ 
     179                                                root: mediaGridSettings.adminUrl, 
     180                                                pushState: true 
     181                                        }); 
     182                                } 
     183                        }, 150); 
     184 
     185                        // Update the URL when entering search string (at most once per second) 
     186                        $( '#media-search-input' ).on( 'input', _.debounce( function() { 
     187                                if ( '' !== $( this ).val() ) { 
     188                                        wp.media.mediarouter.navigate( wp.media.mediarouter.baseUrl( '?search=' + $( this ).val() ), { trigger: false, replace: false } ); 
     189                                } 
     190                        }, 1000 ) ); 
    171191                }, 
    172192 
    173193                createSelection: function() { 
     
    247267                                hasNext = false; 
    248268                        } 
    249269 
    250                         new media.view.Frame.EditAttachment({ 
     270                        wp.media.editAttachmentFrame = new media.view.Frame.EditAttachment({ 
    251271                                hasPrevious:    hasPrevious, 
    252272                                hasNext:        hasNext, 
    253273                                model:          model, 
     
    324344        }); 
    325345 
    326346        /** 
     347         * A router for handling the browser history and application state 
     348         */ 
     349        media.view.Frame.Router = Backbone.Router.extend({ 
     350 
     351                mediaFrame: '', 
     352 
     353                initialize: function( mediaFrame ){ 
     354                        this.mediaFrame = mediaFrame; 
     355                }, 
     356 
     357                routes: { 
     358                        'upload.php?item=:slug':    'showitem', 
     359                        'upload.php?search=:query': 'search', 
     360                        ':default':                 'defaultRoute' 
     361                }, 
     362 
     363                // Map routes against the page URL 
     364                baseUrl: function( url ) { 
     365                        return 'upload.php' + url; 
     366                }, 
     367 
     368                // Respond to the search route by filling the search field and trigggering the input event 
     369                search: function( query ) { 
     370                        // Ensure modal closed, see back button 
     371                        this.closeModal(); 
     372                        $( '#media-search-input' ).val( query ).trigger( 'input' ); 
     373                }, 
     374 
     375                // Show the modal with a specific item 
     376                showitem: function( query ) { 
     377                        var library = this.mediaFrame.state().get('library'); 
     378 
     379                        // Remove existing modal if present 
     380                        this.closeModal(); 
     381                        // Trigger the media frame to open the correct item 
     382                        this.mediaFrame.trigger( 'edit:attachment', library.findWhere( { id: parseInt( query, 10 ) } ) ); 
     383                }, 
     384 
     385                // Close the modal if set up 
     386                closeModal: function() { 
     387                        if ( 'undefined' !== typeof wp.media.editAttachmentFrame ) { 
     388                                wp.media.editAttachmentFrame.modal.remove(); 
     389                        } 
     390                }, 
     391 
     392                // Default route: make sure the modal and search are reset 
     393                defaultRoute: function() { 
     394                        this.closeModal(); 
     395                        $( '#media-search-input' ).val( '' ).trigger( 'input' ); 
     396                } 
     397        }); 
     398 
     399        /** 
    327400         * A frame for editing the details of a specific media item. 
    328401         * 
    329402         * Opens in a modal by default. 
     
    340413                        'click':                    'collapse', 
    341414                        'click .delete-media-item': 'deleteMediaItem', 
    342415                        'click .left':              'previousMediaItem', 
    343                         'click .right':             'nextMediaItem' 
    344                 }, 
     416                        'click .right':             'nextMediaItem', 
     417                        'keydown':                  'keyEvent' 
     418                        }, 
    345419 
    346420                initialize: function() { 
    347421                        var self = this; 
     
    373447                                // Completely destroy the modal DOM element when closing it. 
    374448                                this.modal.close = function() { 
    375449                                        self.modal.remove(); 
     450                                        // Reset the browser URL 
    376451                                }; 
    377452 
    378453                                this.modal.content( this ); 
    379454                                this.modal.open(); 
     455 
     456                                // Update browser url when navigating media details 
     457                                wp.media.mediarouter.navigate( wp.media.mediarouter.baseUrl( '?item=' + this.options.model.id ), { trigger: false, replace: false } ); 
     458 
     459                                // Ensure modal gains focus, otherwise keyboard events lost 
     460                                $( '.attachment-fields input:first' ).focus(); 
     461                                $( '.media-modal-backdrop, .media-modal-close' ).on( 'click', function() { 
     462                                        self.resetRoute(); 
     463                                } ); 
    380464                        } 
    381465                }, 
    382466 
     
    482566                                return; 
    483567                        this.modal.close(); 
    484568                        this.options.gridController.trigger( 'edit:attachment:next', this.model ); 
     569                }, 
     570                /** 
     571                 * Respond to the keyboard events: right arrow, left arrow, escape. 
     572                 */ 
     573                keyEvent: function( event ) { 
     574                        // The right arrow key 
     575                        if ( event.keyCode === 39 ) { 
     576                                if ( ! this.options.hasNext ) { return; } 
     577                                _.once( this.nextMediaItem() ); 
     578                        } 
     579 
     580                        // The left arrow key 
     581                        if ( event.keyCode === 37 ) { 
     582                                if ( ! this.options.hasPrevious ) { return; } 
     583                                _.once( this.previousMediaItem() ); 
     584                        } 
     585 
     586                        // Pressing the escape key routes back to main url 
     587                        if ( event.keyCode === 27 ) { 
     588                                this.resetRoute(); 
     589                                return event; 
     590                        } 
     591                }, 
     592 
     593                resetRoute: function() { 
     594                        wp.media.mediarouter.navigate( wp.media.mediarouter.baseUrl( '' ), { trigger: false, replace: false } ); 
     595                        return; 
    485596                } 
    486597 
    487598        });