source: trunk/expressoMail1_2/js/fckeditor/editor/_source/commandclasses/fckfitwindow.js @ 389

Revision 389, 5.1 KB checked in by niltonneto, 16 years ago (diff)

Ver Tickets no Trac #286 e #287.
Inclusão de template de assinatura padrão.
Assinatura também disponível em formato de texto rico.
Inclusão da biblioteca FCKEditor.

  • Property svn:executable set to *
Line 
1/*
2 * FCKeditor - The text editor for internet
3 * Copyright (C) 2003-2006 Frederico Caldeira Knabben
4 *
5 * Licensed under the terms of the GNU Lesser General Public License:
6 *              http://www.opensource.org/licenses/lgpl-license.php
7 *
8 * For further information visit:
9 *              http://www.fckeditor.net/
10 *
11 * "Support Open Source software. What about a donation today?"
12 *
13 * File Name: fckfitwindow.js
14 *      Stretch the editor to full window size and back.
15 *
16 * File Authors:
17 *              Paul Moers (mail@saulmade.nl)
18 *              Thanks to Christian Fecteau (webmaster@christianfecteau.com)
19 *              Frederico Caldeira Knabben (fredck@fckeditor.net)
20 */
21
22var FCKFitWindow = function()
23{
24        this.Name = 'FitWindow' ;
25}
26
27FCKFitWindow.prototype.Execute = function()
28{
29        var eEditorFrame                = window.frameElement ;
30        var eEditorFrameStyle   = eEditorFrame.style ;
31
32        var eMainWindow                 = parent ;
33        var eDocEl                              = eMainWindow.document.documentElement ;
34        var eBody                               = eMainWindow.document.body ;
35        var eBodyStyle                  = eBody.style ;
36
37        // No original style properties known? Go fullscreen.
38        if ( !this.IsMaximized )
39        {
40                // Registering an event handler when the window gets resized.
41                if( FCKBrowserInfo.IsIE )
42                        eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
43                else
44                        eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
45
46                // Save the scrollbars position.
47                this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
48               
49                // Save and reset the styles for the entire node tree. They could interfere in the result.
50                var eParent = eEditorFrame ;
51                while( eParent = eParent.parentNode )
52                {
53                        if ( eParent.nodeType == 1 )
54                                eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
55                }               
56
57                // Hide IE scrollbars (in strict mode).
58                if ( FCKBrowserInfo.IsIE )
59                {
60                        this.documentElementOverflow = eDocEl.style.overflow ;
61                        eDocEl.style.overflow   = 'hidden' ;
62                        eBodyStyle.overflow             = 'hidden' ;
63                }
64                else
65                {
66                        // Hide the scroolbars in Firefox.
67                        eBodyStyle.overflow = 'hidden' ;
68                        eBodyStyle.width = '0px' ;
69                        eBodyStyle.height = '0px' ;
70                }
71               
72                // Save the IFRAME styles.
73                this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
74               
75                // Resize.
76                var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
77
78                eEditorFrameStyle.position      = "absolute";
79                eEditorFrameStyle.zIndex        = FCKConfig.FloatingPanelsZIndex - 1;
80                eEditorFrameStyle.left          = "0px";
81                eEditorFrameStyle.top           = "0px";
82                eEditorFrameStyle.width         = oViewPaneSize.Width + "px";
83                eEditorFrameStyle.height        = oViewPaneSize.Height + "px";
84               
85                // Giving the frame some (huge) borders on his right and bottom
86                // side to hide the background that would otherwise show when the
87                // editor is in fullsize mode and the window is increased in size
88                // not for IE, because IE immediately adapts the editor on resize,
89                // without showing any of the background oddly in firefox, the
90                // editor seems not to fill the whole frame, so just setting the
91                // background of it to white to cover the page laying behind it anyway.
92                if ( !FCKBrowserInfo.IsIE )
93                {
94                        eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
95                        eEditorFrameStyle.backgroundColor               = "white";
96                }
97
98                // Scroll to top left.
99                eMainWindow.scrollTo(0, 0);
100
101                this.IsMaximized = true ;
102        }
103        else    // Resize to original size.
104        {
105                // Remove the event handler of window resizing.
106                if( FCKBrowserInfo.IsIE )
107                        eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
108                else
109                        eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
110
111                // Restore the CSS position for the entire node tree.
112                var eParent = eEditorFrame ;
113                while( eParent = eParent.parentNode )
114                {
115                        if ( eParent._fckSavedStyles )
116                        {
117                                FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
118                                eParent._fckSavedStyles = null ;
119                        }
120                }
121               
122                // Restore IE scrollbars
123                if ( FCKBrowserInfo.IsIE )
124                        eDocEl.style.overflow = this.documentElementOverflow ;
125
126                // Restore original size
127                FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
128               
129                // Restore the window scroll position.
130                eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
131
132                this.IsMaximized = false ;
133        }
134       
135        FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
136
137        // It seams that Firefox restarts the editing area when making this changes.
138        // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special
139        //configuration, like DisableFFTableHandles and DisableObjectResizing get
140        //lost, so we must reset it. Also, the cursor position and selection are
141        //also lost, even if you comment the following line (MakeEditable).
142        // if ( FCKBrowserInfo.IsGecko10 )      // Initially I thought it was a FF 1.0 only problem.
143        FCK.EditingArea.MakeEditable() ;
144       
145        FCK.Focus() ;
146}
147
148FCKFitWindow.prototype.GetState = function()
149{
150        if ( FCKConfig.ToolbarLocation != 'In' )
151                return FCK_TRISTATE_DISABLED ;
152        else
153                return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
154}
155
156function FCKFitWindow_Resize()
157{
158        var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
159
160        var eEditorFrameStyle = window.frameElement.style ;
161
162        eEditorFrameStyle.width         = oViewPaneSize.Width + 'px' ;
163        eEditorFrameStyle.height        = oViewPaneSize.Height + 'px' ;
164}
Note: See TracBrowser for help on using the repository browser.