WordPress.org

Make WordPress Core

Ticket #23042: 23042.patch

File 23042.patch, 4.2 KB (added by azaozz, 16 months ago)
  • wp-admin/js/post.js

     
    683683 
    684684        // resizable textarea#content 
    685685        (function() { 
    686                 var textarea = $('textarea#content'), offset = null, el; 
     686                var textarea = $('textarea#content'), handle; 
    687687                // No point for touch devices 
    688                 if ( 'ontouchstart' in window ) 
     688                if ( !textarea.length || 'ontouchstart' in window ) 
    689689                        return; 
    690690 
    691                 function dragging(e) { 
    692                         textarea.height( Math.max(50, offset + e.pageY) + 'px' ); 
    693                         return false; 
    694                 } 
     691                textarea.css('resize', 'none'); 
     692                handle = $('<div id="content-resize-handle"><br></div>'); 
     693                $('#wp-content-wrap').append(handle); 
    695694 
    696                 function endDrag(e) { 
    697                         var height = $('#wp-content-editor-container').height(); 
     695                handle.on('mousedown', function(e) { 
     696                        var height, offset = textarea.height() - e.pageY; 
    698697 
    699                         textarea.focus(); 
    700                         $(document).unbind('mousemove', dragging).unbind('mouseup', endDrag); 
     698                        textarea.blur(); 
    701699 
    702                         height -= 33; // compensate for toolbars, padding... 
    703                         // sanity check 
    704                         if ( height > 50 && height < 5000 && height != getUserSetting( 'ed_size' ) ) 
    705                                 setUserSetting( 'ed_size', height ); 
    706                 } 
     700                        $(document).on( 'mousemove.wp-editor-resize', function(e) { 
     701                                height = Math.max(50, offset + e.pageY) 
     702                                textarea.height( height ); 
     703                                e.preventDefault(); 
     704                        }).on( 'mouseup.wp-editor-resize', function(e) { 
     705                                textarea.focus(); 
     706                                $(document).off( '.wp-editor-resize' ); 
    707707 
    708                 textarea.css('resize', 'none'); 
    709                 el = $('<div id="content-resize-handle"><br></div>'); 
    710                 $('#wp-content-wrap').append(el); 
    711                 el.on('mousedown', function(e) { 
    712                         offset = textarea.height() - e.pageY; 
    713                         textarea.blur(); 
    714                         $(document).mousemove(dragging).mouseup(endDrag); 
    715                         return false; 
     708                                // compensate for textarea padding, 'height' has been set while dragging 
     709                                height += 20; 
     710 
     711                                // sanity check 
     712                                if ( height > 70 && height < 5000 ) 
     713                                        setUserSetting( 'ed_size', height ); 
     714                        }); 
     715                        e.preventDefault(); // stop the browser selecting/highlighting elements 
    716716                }); 
    717717        })(); 
    718718 
    719719        if ( typeof(tinymce) != 'undefined' ) { 
    720720                tinymce.onAddEditor.add(function(mce, ed){ 
     721                        var get_textarea_height; 
     722 
    721723                        // iOS expands the iframe to full height and the user cannot adjust it. 
    722724                        if ( ed.id != 'content' || tinymce.isIOS5 ) 
    723725                                return; 
    724726 
     727                        get_textarea_height = function() { 
     728                                var height, ifr_height = $('#content_ifr').height(), 
     729                                        tb_height = $('#content_tbl tr.mceFirst').height(); 
     730 
     731                                if ( !ifr_height || !tb_height ) 
     732                                        return false; 
     733 
     734                                // total height including toolbar and statusbar 
     735                                height = ifr_height + tb_height + 21; 
     736                                // textarea height = total height - 33px Quicktags toolbar 
     737                                height -= 33; 
     738 
     739                                return height; 
     740                        } 
     741 
    725742                        // resize TinyMCE to match the textarea height when switching Text -> Visual 
    726743                        ed.onLoadContent.add( function(ed, o) { 
    727                                 var ifr_height, height = parseInt( $('#content').css('height'), 10 ), 
     744                                var ifr_height, height = parseInt( $('textarea#content').css('height'), 10 ), 
    728745                                        tb_height = $('#content_tbl tr.mceFirst').height(); 
    729746 
    730747                                if ( height && !isNaN(height) && tb_height ) { 
     
    739756 
    740757                        // resize the textarea to match TinyMCE's height when switching Visual -> Text 
    741758                        ed.onSaveContent.add( function(ed, o) { 
    742                                 var height = $('#content_tbl').height(); 
     759                                var height = get_textarea_height(); 
    743760 
    744                                 if ( height && height > 83 && height < 5000 ) { 
    745                                         height -= 33; 
    746  
    747                                         $('#content').css( 'height', height + 'px' ); 
    748                                 } 
     761                                if ( height && height > 50 && height < 5000 ) 
     762                                        $('textarea#content').css( 'height', height + 'px' ); 
    749763                        }); 
    750764 
    751765                        // save on resizing TinyMCE 
    752766                        ed.onPostRender.add(function() { 
    753767                                $('#content_resize').on('mousedown.wp-mce-resize', function(e){ 
    754768                                        $(document).on('mouseup.wp-mce-resize', function(e){ 
    755                                                 var height = $('#wp-content-editor-container').height(); 
     769                                                var height = get_textarea_height(); 
    756770 
    757                                                 height -= 33; 
    758771                                                // sanity check 
    759                                                 if ( height > 50 && height < 5000 && height != getUserSetting( 'ed_size' ) ) 
     772                                                if ( height && height > 50 && height < 5000 ) 
    760773                                                        setUserSetting( 'ed_size', height ); 
    761774 
    762775                                                $(document).off('mouseup.wp-mce-resize');