|
@@ -695,6 +695,200 @@ FCKSaveCommand.prototype.Execute = function()
|
|
|
oForm.submit.click() ;
|
|
|
}
|
|
|
|
|
|
+// This is a modification of the FitWindow command.
|
|
|
+// Functionality has been implemented for providing differnt toolbars for normal-sized and maximized editor.
|
|
|
+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" ;
|
|
|
+
|
|
|
+ // Added code: Loading a toolbar for maximized editor.
|
|
|
+ var toolbar = FCKURLParams['Toolbar'] + 'Maximized' ;
|
|
|
+ if ( FCKConfig.ToolbarSets[toolbar] )
|
|
|
+ {
|
|
|
+ var oEditor = FCKeditorAPI.GetInstance(FCK.Name) ;
|
|
|
+ if ( toolbar != oEditor.ToolbarSet.Name )
|
|
|
+ {
|
|
|
+ oEditor.ToolbarSet.Load( toolbar ) ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+
|
|
|
+ this.IsMaximized = true ;
|
|
|
+ }
|
|
|
+ else // Resize to original size.
|
|
|
+ {
|
|
|
+ // Added code: Loading a toolbar for editor with "normal" sizes.
|
|
|
+ var toolbar = FCKURLParams['Toolbar'] ;
|
|
|
+ if ( FCKConfig.ToolbarSets[toolbar] )
|
|
|
+ {
|
|
|
+ var oEditor = FCKeditorAPI.GetInstance(FCK.Name) ;
|
|
|
+ if ( toolbar != oEditor.ToolbarSet.Name )
|
|
|
+ {
|
|
|
+ oEditor.ToolbarSet.Load( toolbar ) ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+
|
|
|
+ // 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] ;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
**************************************************************************************
|