[ Index ] |
|
Code source de GeekLog 1.4.1 |
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 22 var FCKFitWindow = function() 23 { 24 this.Name = 'FitWindow' ; 25 } 26 27 FCKFitWindow.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 148 FCKFitWindow.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 156 function 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 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 12:27:40 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |