summaryrefslogtreecommitdiff
path: root/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js')
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js213
1 files changed, 213 insertions, 0 deletions
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
new file mode 100644
index 0000000..c1b8f9a
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
@@ -0,0 +1,213 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ * - GNU General Public License Version 2 or later (the "GPL")
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ * http://www.gnu.org/licenses/lgpl.html
+ *
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
+ * http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Stretch the editor to full window size and back.
+ */
+
+var FCKFitWindow = function()
+{
+ this.Name = 'FitWindow' ;
+}
+
+FCKFitWindow.prototype.Execute = function()
+{
+ var eEditorFrame = window.frameElement ;
+ var eEditorFrameStyle = eEditorFrame.style ;
+
+ var eMainWindow = parent ;
+ var eDocEl = eMainWindow.document.documentElement ;
+ var eBody = eMainWindow.document.body ;
+ var eBodyStyle = eBody.style ;
+ var eParent ;
+
+ // Save the current selection and scroll position.
+ var oRange, oEditorScrollPos ;
+ if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
+ {
+ oRange = new FCKDomRange( FCK.EditorWindow ) ;
+ oRange.MoveToSelection() ;
+ oEditorScrollPos = FCKTools.GetScrollPosition( FCK.EditorWindow ) ;
+ }
+ else
+ {
+ var eTextarea = FCK.EditingArea.Textarea ;
+ oRange = !FCKBrowserInfo.IsIE && [ eTextarea.selectionStart, eTextarea.selectionEnd ] ;
+ oEditorScrollPos = [ eTextarea.scrollLeft, eTextarea.scrollTop ] ;
+ }
+
+ // No original style properties known? Go fullscreen.
+ if ( !this.IsMaximized )
+ {
+ // Registering an event handler when the window gets resized.
+ if( FCKBrowserInfo.IsIE )
+ eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
+ else
+ eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
+
+ // Save the scrollbars position.
+ this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
+
+ // Save and reset the styles for the entire node tree. They could interfere in the result.
+ eParent = eEditorFrame ;
+ // The extra () is to avoid a warning with strict error checking. This is ok.
+ while( (eParent = eParent.parentNode) )
+ {
+ if ( eParent.nodeType == 1 )
+ {
+ eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
+ eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ;
+ }
+ }
+
+ // Hide IE scrollbars (in strict mode).
+ if ( FCKBrowserInfo.IsIE )
+ {
+ this.documentElementOverflow = eDocEl.style.overflow ;
+ eDocEl.style.overflow = 'hidden' ;
+ eBodyStyle.overflow = 'hidden' ;
+ }
+ else
+ {
+ // Hide the scroolbars in Firefox.
+ eBodyStyle.overflow = 'hidden' ;
+ eBodyStyle.width = '0px' ;
+ eBodyStyle.height = '0px' ;
+ }
+
+ // Save the IFRAME styles.
+ this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
+
+ // Resize.
+ var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
+
+ eEditorFrameStyle.position = "absolute";
+ eEditorFrame.offsetLeft ; // Kludge for Safari 3.1 browser bug, do not remove. See #2066.
+ eEditorFrameStyle.zIndex = FCKConfig.FloatingPanelsZIndex - 1;
+ eEditorFrameStyle.left = "0px";
+ eEditorFrameStyle.top = "0px";
+ eEditorFrameStyle.width = oViewPaneSize.Width + "px";
+ eEditorFrameStyle.height = oViewPaneSize.Height + "px";
+
+ // Giving the frame some (huge) borders on his right and bottom
+ // side to hide the background that would otherwise show when the
+ // editor is in fullsize mode and the window is increased in size
+ // not for IE, because IE immediately adapts the editor on resize,
+ // without showing any of the background oddly in firefox, the
+ // editor seems not to fill the whole frame, so just setting the
+ // background of it to white to cover the page laying behind it anyway.
+ if ( !FCKBrowserInfo.IsIE )
+ {
+ eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
+ eEditorFrameStyle.backgroundColor = "white";
+ }
+
+ // Scroll to top left.
+ eMainWindow.scrollTo(0, 0);
+
+ // Is the editor still not on the top left? Let's find out and fix that as well. (Bug #174)
+ var editorPos = FCKTools.GetWindowPosition( eMainWindow, eEditorFrame ) ;
+ if ( editorPos.x != 0 )
+ eEditorFrameStyle.left = ( -1 * editorPos.x ) + "px" ;
+ if ( editorPos.y != 0 )
+ eEditorFrameStyle.top = ( -1 * editorPos.y ) + "px" ;
+
+ this.IsMaximized = true ;
+ }
+ else // Resize to original size.
+ {
+ // Remove the event handler of window resizing.
+ if( FCKBrowserInfo.IsIE )
+ eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
+ else
+ eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
+
+ // Restore the CSS position for the entire node tree.
+ eParent = eEditorFrame ;
+ // The extra () is to avoid a warning with strict error checking. This is ok.
+ while( (eParent = eParent.parentNode) )
+ {
+ if ( eParent._fckSavedStyles )
+ {
+ FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
+ eParent._fckSavedStyles = null ;
+ }
+ }
+
+ // Restore IE scrollbars
+ if ( FCKBrowserInfo.IsIE )
+ eDocEl.style.overflow = this.documentElementOverflow ;
+
+ // Restore original size
+ FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
+
+ // Restore the window scroll position.
+ eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
+
+ this.IsMaximized = false ;
+ }
+
+ FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
+
+ // It seams that Firefox restarts the editing area when making this changes.
+ // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special
+ //configuration, like DisableFFTableHandles and DisableObjectResizing get
+ //lost, so we must reset it. Also, the cursor position and selection are
+ //also lost, even if you comment the following line (MakeEditable).
+ // if ( FCKBrowserInfo.IsGecko10 ) // Initially I thought it was a FF 1.0 only problem.
+ if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
+ FCK.EditingArea.MakeEditable() ;
+
+ FCK.Focus() ;
+
+ // Restore the selection and scroll position of inside the document.
+ if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
+ {
+ oRange.Select() ;
+ FCK.EditorWindow.scrollTo( oEditorScrollPos.X, oEditorScrollPos.Y ) ;
+ }
+ else
+ {
+ if ( !FCKBrowserInfo.IsIE )
+ {
+ eTextarea.selectionStart = oRange[0] ;
+ eTextarea.selectionEnd = oRange[1] ;
+ }
+ eTextarea.scrollLeft = oEditorScrollPos[0] ;
+ eTextarea.scrollTop = oEditorScrollPos[1] ;
+ }
+}
+
+FCKFitWindow.prototype.GetState = function()
+{
+ if ( FCKConfig.ToolbarLocation != 'In' )
+ return FCK_TRISTATE_DISABLED ;
+ else
+ return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
+}
+
+function FCKFitWindow_Resize()
+{
+ var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
+
+ var eEditorFrameStyle = window.frameElement.style ;
+
+ eEditorFrameStyle.width = oViewPaneSize.Width + 'px' ;
+ eEditorFrameStyle.height = oViewPaneSize.Height + 'px' ;
+}