Changeset 1056


Ignore:
Timestamp:
11/01/07 08:40:34 (7 years ago)
Author:
martinkou
Message:

Added blocker logic for the editor and the editor's parent document in dialog mode.

Location:
FCKeditor/branches/features/floating_dialog/editor
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • FCKeditor/branches/features/floating_dialog/editor/_source/internals/fck.js

    r1050 r1056  
    3131        Toolbar                 : null, 
    3232        HasFocus                : false, 
    33         DataProcessor   : new FCKDataProcessor(), 
    34         Window          : window, 
     33        DataProcessor           : new FCKDataProcessor(), 
     34        Window                  : window, 
    3535 
    3636        AttachToOnSelectionChange : function( functionPointer ) 
     
    734734 
    735735                return true ; 
     736        }, 
     737 
     738        SetDialogMode: function( yes ) 
     739        { 
     740                var doc = this.Window.parent.document ; 
     741                var editorFrame = this.Window.frameElement ; 
     742                var editorParentElement = editorFrame.parentNode ; 
     743                if ( !this.BackgroundBlocker ) 
     744                { 
     745                        this.BackgroundBlocker = doc.createElement( 'iframe' ) ; 
     746                        this.EditorBlocker = doc.createElement( 'iframe' ) ; 
     747                        this.BackgroundBlocker.src = FCKConfig.SkinPath + 'fck_background_blocker.html' ; 
     748                        this.EditorBlocker.src = FCKConfig.SkinPath + 'fck_editor_blocker.html' ; 
     749 
     750                        this.BackgroundBlocker.frameBorder = 0 ; 
     751                        this.EditorBlocker.frameBorder = 0 ; 
     752                        FCKDomTools.SetElementStyles( this.BackgroundBlocker, 
     753                                { 
     754                                        'left' : '0px', 
     755                                        'top' : '0px', 
     756                                        'position' : 'absolute', 
     757                                        'zIndex' : 0 
     758                                } ) ; 
     759                        FCKDomTools.SetElementStyles( this.EditorBlocker, 
     760                                { 
     761                                        'position' : 'absolute', 
     762                                        'zIndex' : 200 
     763                                } ) ; 
     764                        FCKDomTools.SetOpacity( this.BackgroundBlocker, 0.5 ) ; 
     765                        FCKDomTools.SetOpacity( this.EditorBlocker, 0.5 ) ; 
     766                        editorParentElement.style.overflow = 'visible' ; 
     767                        FCKDomTools.SetElementStyles( editorFrame, 
     768                                { 
     769                                        'zIndex' : 100, 
     770                                        'width' : editorFrame.offsetWidth + 'px', 
     771                                        'height' : editorFrame.offsetHeight + 'px', 
     772                                        'position' : 'absolute' 
     773                                } ) ; 
     774                        FCKDomTools.SetElementStyles( editorParentElement,  
     775                                { 
     776                                        'width' : editorFrame.offsetWidth + 'px', 
     777                                        'height' : editorFrame.offsetHeight + 'px' 
     778                                } ) ; 
     779                        editorParentElement.appendChild( this.BackgroundBlocker ) ; 
     780                        editorParentElement.appendChild( this.EditorBlocker ) ; 
     781                } 
     782 
     783                if ( yes ) 
     784                { 
     785                        var parentDivPosition = FCKTools.GetDocumentPosition( this.Window.parent, editorParentElement ) ; 
     786                        FCKDomTools.SetElementStyles( this.EditorBlocker, 
     787                                { 
     788                                        'width' : editorFrame.offsetWidth + 'px', 
     789                                        'height' : editorFrame.offsetHeight + 'px', 
     790                                        'left' : parentDivPosition.x + 'px', 
     791                                        'top' : parentDivPosition.y + 'px', 
     792                                        'display' : '' 
     793                                } ) ; 
     794                        FCKDomTools.SetElementStyles( this.BackgroundBlocker, 
     795                                { 
     796                                        'width' : Math.max( doc.documentElement.scrollWidth, doc.documentElement.clientWidth ) + 'px', 
     797                                        'height' : Math.max( doc.documentElement.scrollHeight, doc.documentElement.clientHeight ) + 'px', 
     798                                        'left' : '0px', 
     799                                        'top' : '0px', 
     800                                        'display' : '' 
     801                                } ) ; 
     802                        this.EditorBlocker.focus() ; 
     803                } 
     804                else 
     805                { 
     806                        // the top : -10000px statement is needed to circumvent an IE focus bug, don't delete. 
     807                        FCKDomTools.SetElementStyles( this.EditorBlocker,  
     808                                {  
     809                                        'display' : 'none', 
     810                                        'top' : '-10000px' 
     811                                } ) ; 
     812                        FCKDomTools.SetElementStyles( this.BackgroundBlocker,  
     813                                {  
     814                                        'display' : 'none', 
     815                                        'top' : '-10000px' 
     816                                } ) ; 
     817                } 
    736818        } 
    737819} ; 
     
    865947                return ; 
    866948 
     949        // Popup a debug window if debug mode is set to true. 
    867950        if ( FCKConfig.Debug ) 
    868951                FCKDebug._GetWindow() ; 
     952 
     953        // Apply floating dialog blocker styles to the parent document if not already applied. 
     954        if ( ! window.parent.FCK_BLOCKER_STYLES_APPLIED ) 
     955        { 
     956                window.parent.FCK_BLOCKER_STYLES_APPLIED = true ; 
     957        } 
    869958 
    870959        FCK.SetStatus( FCK_STATUS_ACTIVE ) ; 
  • FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdialog.js

    r1054 r1056  
    6666        var sUrl = FCKConfig.BasePath + 'fckdialog.html' ; 
    6767        this.Show( oDialogInfo, dialogName, sUrl, width, height, parentWindow, resizable ) ; 
    68 } 
    69  
    70 FCKDialog._LoadPNG = function( element, url ) 
    71 { 
    72         if ( FCKBrowserInfo.IsIE ) 
    73                 element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + url + '",sizingMethod="scale")' ; 
    74         else 
    75         { 
    76                 element.style.backgroundImage = 'url(' + url + ')' ; 
    77                 element.style.backgroundRepeat = 'repeat' ; 
    78         } 
    79 } 
    80  
    81 FCKDialog._SetOpacity = function( element, opacity ) 
    82 { 
    83         if ( FCKBrowserInfo.IsIE ) 
    84                 element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + parseInt( opacity * 100 ) + ')' ; 
    85         else 
    86                 element.style.opacity = opacity ; 
    8768} 
    8869 
     
    143124        oWindow.focus() ; 
    144125        this.Window = oWindow ; 
     126        FCK.SetDialogMode( true ) ; 
    145127} 
    146128 
     
    218200                else 
    219201                        d.style.height = ( container.offsetHeight - 40 ) + 'px' ; 
    220                 this._LoadPNG( d, FCKConfig.SkinPath + 'images/' + partUrl[i] ) ; 
     202                FCKDomTools.LoadPNG( d, FCKConfig.SkinPath + 'images/' + partUrl[i] ) ; 
    221203                var x = [ 0, 20, container.offsetWidth - 20 ] ; 
    222204                var y = [ 0, 20, container.offsetHeight - 20 ] ; 
     
    230212        } 
    231213 
    232         this._SetOpacity( shadowBlock, 0.65 ) ; 
     214        FCKDomTools.SetOpacity( shadowBlock, 0.65 ) ; 
    233215        container.appendChild( shadowBlock ) ; 
    234216} 
     
    241223        container.parentNode.removeChild( container ) ; 
    242224        this.BaseZIndex -= 100 ; 
    243 } 
     225        FCK.SetDialogMode( false ) ; 
     226} 
  • FCKeditor/branches/features/floating_dialog/editor/_source/internals/fckdomtools.js

    r1048 r1056  
    895895                for ( var styleName in styleDict ) 
    896896                        style[ styleName ] = styleDict[ styleName ] ; 
     897        }, 
     898 
     899        LoadPNG : function( element, url ) 
     900        { 
     901                if ( FCKBrowserInfo.IsIE ) 
     902                        element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + url + '",sizingMethod="scale")' ; 
     903                else 
     904                { 
     905                        element.style.backgroundImage = 'url(' + url + ')' ; 
     906                        element.style.backgroundRepeat = 'repeat' ; 
     907                } 
     908        }, 
     909 
     910        SetOpacity : function( element, opacity ) 
     911        { 
     912                if ( FCKBrowserInfo.IsIE ) 
     913                        element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + parseInt( opacity * 100 ) + ')' ; 
     914                else 
     915                        element.style.opacity = opacity ; 
    897916        } 
    898917} ; 
  • FCKeditor/branches/features/floating_dialog/editor/_source/internals/fcktools.js

    r1017 r1056  
    424424        var y = 0 ; 
    425425        var curNode = node ; 
    426         while ( curNode && curNode != w.document.body ) 
     426        while ( curNode && curNode != w.document.documentElement ) 
    427427        { 
    428428                x += curNode.offsetLeft - curNode.scrollLeft ; 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy