PluginProbe
Wp-Insert / 1.7.2
Wp-Insert v1.7.2
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / fckeditor / editor / _source / commandclasses / fckfitwindow.js

fckfitwindow.js in Wp-Insert 1.7.2, at fckeditor/editor/_source/commandclasses/fckfitwindow.js

214 lines 6.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
4 *
5 * == BEGIN LICENSE ==
6 *
7 * Licensed under the terms of any of the following licenses at your
8 * choice:
9 *
10 * - GNU General Public License Version 2 or later (the "GPL")
11 * http://www.gnu.org/licenses/gpl.html
12 *
13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14 * http://www.gnu.org/licenses/lgpl.html
15 *
16 * - Mozilla Public License Version 1.1 or later (the "MPL")
17 * http://www.mozilla.org/MPL/MPL-1.1.html
18 *
19 * == END LICENSE ==
20 *
21 * Stretch the editor to full window size and back.
22 */
23
24 var FCKFitWindow = function()
25 {
26 this.Name = 'FitWindow' ;
27 }
28
29 FCKFitWindow.prototype.Execute = function()
30 {
31 var eEditorFrame = window.frameElement ;
32 var eEditorFrameStyle = eEditorFrame.style ;
33
34 var eMainWindow = parent ;
35 var eDocEl = eMainWindow.document.documentElement ;
36 var eBody = eMainWindow.document.body ;
37 var eBodyStyle = eBody.style ;
38 var eParent ;
39
40 // Save the current selection and scroll position.
41 var oRange, oEditorScrollPos ;
42 if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
43 {
44 oRange = new FCKDomRange( FCK.EditorWindow ) ;
45 oRange.MoveToSelection() ;
46 oEditorScrollPos = FCKTools.GetScrollPosition( FCK.EditorWindow ) ;
47 }
48 else
49 {
50 var eTextarea = FCK.EditingArea.Textarea ;
51 oRange = !FCKBrowserInfo.IsIE && [ eTextarea.selectionStart, eTextarea.selectionEnd ] ;
52 oEditorScrollPos = [ eTextarea.scrollLeft, eTextarea.scrollTop ] ;
53 }
54
55 // No original style properties known? Go fullscreen.
56 if ( !this.IsMaximized )
57 {
58 // Registering an event handler when the window gets resized.
59 if( FCKBrowserInfo.IsIE )
60 eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
61 else
62 eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
63
64 // Save the scrollbars position.
65 this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
66
67 // Save and reset the styles for the entire node tree. They could interfere in the result.
68 eParent = eEditorFrame ;
69 // The extra () is to avoid a warning with strict error checking. This is ok.
70 while( (eParent = eParent.parentNode) )
71 {
72 if ( eParent.nodeType == 1 )
73 {
74 eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
75 eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ;
76 }
77 }
78
79 // Hide IE scrollbars (in strict mode).
80 if ( FCKBrowserInfo.IsIE )
81 {
82 this.documentElementOverflow = eDocEl.style.overflow ;
83 eDocEl.style.overflow = 'hidden' ;
84 eBodyStyle.overflow = 'hidden' ;
85 }
86 else
87 {
88 // Hide the scroolbars in Firefox.
89 eBodyStyle.overflow = 'hidden' ;
90 eBodyStyle.width = '0px' ;
91 eBodyStyle.height = '0px' ;
92 }
93
94 // Save the IFRAME styles.
95 this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
96
97 // Resize.
98 var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
99
100 eEditorFrameStyle.position = "absolute";
101 eEditorFrame.offsetLeft ; // Kludge for Safari 3.1 browser bug, do not remove. See #2066.
102 eEditorFrameStyle.zIndex = FCKConfig.FloatingPanelsZIndex - 1;
103 eEditorFrameStyle.left = "0px";
104 eEditorFrameStyle.top = "0px";
105 eEditorFrameStyle.width = oViewPaneSize.Width + "px";
106 eEditorFrameStyle.height = oViewPaneSize.Height + "px";
107
108 // Giving the frame some (huge) borders on his right and bottom
109 // side to hide the background that would otherwise show when the
110 // editor is in fullsize mode and the window is increased in size
111 // not for IE, because IE immediately adapts the editor on resize,
112 // without showing any of the background oddly in firefox, the
113 // editor seems not to fill the whole frame, so just setting the
114 // background of it to white to cover the page laying behind it anyway.
115 if ( !FCKBrowserInfo.IsIE )
116 {
117 eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
118 eEditorFrameStyle.backgroundColor = "white";
119 }
120
121 // Scroll to top left.
122 eMainWindow.scrollTo(0, 0);
123
124 // Is the editor still not on the top left? Let's find out and fix that as well. (Bug #174)
125 var editorPos = FCKTools.GetWindowPosition( eMainWindow, eEditorFrame ) ;
126 if ( editorPos.x != 0 )
127 eEditorFrameStyle.left = ( -1 * editorPos.x ) + "px" ;
128 if ( editorPos.y != 0 )
129 eEditorFrameStyle.top = ( -1 * editorPos.y ) + "px" ;
130
131 this.IsMaximized = true ;
132 }
133 else // Resize to original size.
134 {
135 // Remove the event handler of window resizing.
136 if( FCKBrowserInfo.IsIE )
137 eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
138 else
139 eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
140
141 // Restore the CSS position for the entire node tree.
142 eParent = eEditorFrame ;
143 // The extra () is to avoid a warning with strict error checking. This is ok.
144 while( (eParent = eParent.parentNode) )
145 {
146 if ( eParent._fckSavedStyles )
147 {
148 FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
149 eParent._fckSavedStyles = null ;
150 }
151 }
152
153 // Restore IE scrollbars
154 if ( FCKBrowserInfo.IsIE )
155 eDocEl.style.overflow = this.documentElementOverflow ;
156
157 // Restore original size
158 FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
159
160 // Restore the window scroll position.
161 eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
162
163 this.IsMaximized = false ;
164 }
165
166 FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
167
168 // It seams that Firefox restarts the editing area when making this changes.
169 // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special
170 //configuration, like DisableFFTableHandles and DisableObjectResizing get
171 //lost, so we must reset it. Also, the cursor position and selection are
172 //also lost, even if you comment the following line (MakeEditable).
173 // if ( FCKBrowserInfo.IsGecko10 ) // Initially I thought it was a FF 1.0 only problem.
174 if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
175 FCK.EditingArea.MakeEditable() ;
176
177 FCK.Focus() ;
178
179 // Restore the selection and scroll position of inside the document.
180 if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
181 {
182 oRange.Select() ;
183 FCK.EditorWindow.scrollTo( oEditorScrollPos.X, oEditorScrollPos.Y ) ;
184 }
185 else
186 {
187 if ( !FCKBrowserInfo.IsIE )
188 {
189 eTextarea.selectionStart = oRange[0] ;
190 eTextarea.selectionEnd = oRange[1] ;
191 }
192 eTextarea.scrollLeft = oEditorScrollPos[0] ;
193 eTextarea.scrollTop = oEditorScrollPos[1] ;
194 }
195 }
196
197 FCKFitWindow.prototype.GetState = function()
198 {
199 if ( FCKConfig.ToolbarLocation != 'In' )
200 return FCK_TRISTATE_DISABLED ;
201 else
202 return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
203 }
204
205 function FCKFitWindow_Resize()
206 {
207 var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
208
209 var eEditorFrameStyle = window.frameElement.style ;
210
211 eEditorFrameStyle.width = oViewPaneSize.Width + 'px' ;
212 eEditorFrameStyle.height = oViewPaneSize.Height + 'px' ;
213 }
214