WordPress.org

Make WordPress Core

Ticket #19845: 19845.4.diff

File 19845.4.diff, 3.4 KB (added by kovshenin, 6 years ago)
  • src/wp-admin/css/edit.css

     
    594594
    595595.edit-form-section {
    596596        margin-bottom: 20px;
     597}
     598
     599.wp-editor-wrap {
    597600        position: relative;
    598601}
    599602
     
    604607        left: 0;
    605608        width: 100%;
    606609        height: 100%;
    607         z-index: 250000;
     610        z-index: 99998;
    608611        display: none;
    609612        text-align: center;
    610613}
  • src/wp-includes/js/media-views.js

     
    28072807                className: 'uploader-editor',
    28082808                template:  media.template( 'uploader-editor' ),
    28092809
    2810                 events: {
    2811                         'drop': 'drop',
    2812                         'dragover': 'dropzoneDragover',
    2813                         'dragleave': 'dropzoneDragleave'
    2814                 },
    2815 
    28162810                initialize: function() {
     2811                        this.$document = $(document);
     2812                        this.dropzones = [];
    28172813                        this.files = [];
    2818                         this.$document = $(document);
     2814
     2815                        this.$document.on( 'drop', '.uploader-editor', _.bind( this.drop, this ) );
     2816                        this.$document.on( 'dragover', '.uploader-editor', _.bind( this.dropzoneDragover, this ) );
     2817                        this.$document.on( 'dragleave', '.uploader-editor', _.bind( this.dropzoneDragleave, this ) );
     2818
    28192819                        this.$document.on( 'dragover', _.bind( this.containerDragover, this ) );
    28202820                        this.$document.on( 'dragleave', _.bind( this.containerDragleave, this ) );
     2821
    28212822                        return this;
    28222823                },
    28232824
    28242825                refresh: function() {
    2825                         // Hide the dropzone only if dragging has left the screen.
    2826                         return this.$el.toggle( this.overContainer || this.overDropzone );
     2826                        for ( dropzone_id in this.dropzones ) {
     2827                                // Hide the dropzones only if dragging has left the screen.
     2828                                this.dropzones[ dropzone_id ].toggle( this.overContainer || this.overDropzone );
     2829                        }
     2830                        return this;
    28272831                },
    28282832
    28292833                render: function() {
    28302834                        media.View.prototype.render.apply( this, arguments );
    2831                         $( '.edit-form-section' ).append( this.$el );
     2835                        $( '.wp-editor-wrap' ).each( _.bind( this.attach, this ) );
    28322836                        return this;
    28332837                },
    28342838
     2839                attach: function( index, editor ) {
     2840                        // Attach a dropzone to an editor.
     2841                        var dropzone = this.$el.clone();
     2842                        this.dropzones.push( dropzone );
     2843                        $( editor ).append( dropzone );
     2844                        return this;
     2845                },
     2846
    28352847                drop: function( event ) {
     2848                        var $wrap = null;
     2849
    28362850                        this.files = event.originalEvent.dataTransfer.files;
    28372851                        if ( this.files.length < 1 )
    28382852                                return;
    28392853
    2840                         this.containerDragleave();
    2841                         this.dropzoneDragleave();
     2854                        this.containerDragleave( event );
     2855                        this.dropzoneDragleave( event );
    28422856
     2857                        // Set the active editor to the drop target.
     2858                        $wrap = $( event.target ).parents( '.wp-editor-wrap' );
     2859                        if ( $wrap.length > 0 ) {
     2860                                window.wpActiveEditor = $wrap[0].id.slice( 3, -5 );
     2861                        }
     2862
    28432863                        if ( ! this.workflow ) {
    28442864                                this.workflow = wp.media.editor.open( 'content', {
    28452865                                        frame:    'post',
     
    28772897                        _.delay( _.bind( this.refresh, this ), 50 );
    28782898                },
    28792899
    2880                 dropzoneDragover: function() {
    2881                         this.$el.addClass( 'droppable' );
     2900                dropzoneDragover: function( e ) {
     2901                        $( e.target ).addClass( 'droppable' );
    28822902                        this.overDropzone = true;
    28832903                        _.defer( _.bind( this.refresh, this ) );
    28842904                        return false;
    28852905                },
    28862906
    2887                 dropzoneDragleave: function() {
    2888                         this.$el.removeClass( 'droppable' );
     2907                dropzoneDragleave: function( e ) {
     2908                        $( e.target ).removeClass( 'droppable' );
    28892909                        this.overDropzone = false;
    28902910                        this.refresh();
    28912911                }