summaryrefslogtreecommitdiff
path: root/httemplate/elements/fckeditor/editor/fckdialog.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/elements/fckeditor/editor/fckdialog.html')
-rw-r--r--httemplate/elements/fckeditor/editor/fckdialog.html905
1 files changed, 205 insertions, 700 deletions
diff --git a/httemplate/elements/fckeditor/editor/fckdialog.html b/httemplate/elements/fckeditor/editor/fckdialog.html
index 0770c8981..7f26822e3 100644
--- a/httemplate/elements/fckeditor/editor/fckdialog.html
+++ b/httemplate/elements/fckeditor/editor/fckdialog.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
@@ -23,797 +23,302 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex, nofollow" />
<script type="text/javascript">
-// <![CDATA[
-// Domain relaxation logic.
-(function()
-{
- var d = document.domain ;
-
- while ( true )
- {
- // Test if we can access a parent property.
- try
- {
- var parentDomain = ( Args().TopWindow || E ).document.domain ;
+// On some Gecko browsers (probably over slow connections) the
+// "dialogArguments" are not set so we must get it from the opener window.
+if ( !window.dialogArguments )
+ window.dialogArguments = window.opener.FCKLastDialogInfo ;
- if ( document.domain != parentDomain )
- document.domain = parentDomain ;
-
- break ;
- }
- catch( e ) {}
+// Sets the Skin CSS
+document.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
- // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
- d = d.replace( /.*?(?:\.|$)/, '' ) ;
+// Sets the language direction.
+window.document.dir = window.dialogArguments.Editor.FCKLang.Dir ;
- if ( d.length == 0 )
- break ; // It was not able to detect the domain.
+var sTitle = window.dialogArguments.Title ;
+document.write( '<title>' + sTitle + '<\/title>' ) ;
- document.domain = d ;
- }
-})() ;
+function LoadInnerDialog()
+{
+ if ( window.onresize )
+ window.onresize() ;
-var E = frameElement._DialogArguments.Editor ;
+ // First of all, translate the dialog box contents.
+ window.dialogArguments.Editor.FCKLanguageManager.TranslatePage( document ) ;
-// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
-// So let's use functions to access its members instead.
-function Args()
-{
- return frameElement._DialogArguments ;
+ window.frames["frmMain"].document.location.href = window.dialogArguments.Page ;
}
-function ParentDialog( dialog )
+function InnerDialogLoaded()
{
- return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
-}
-
-var FCK = E.FCK ;
-var FCKTools = E.FCKTools ;
-var FCKDomTools = E.FCKDomTools ;
-var FCKDialog = E.FCKDialog ;
-var FCKBrowserInfo = E.FCKBrowserInfo ;
-var FCKConfig = E.FCKConfig ;
-
-// Steal the focus so that the caret would no longer stay in the editor iframe.
-window.focus() ;
+ var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
-// Sets the Skin CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+ // Set the language direction.
+ oInnerDoc.dir = window.dialogArguments.Editor.FCKLang.Dir ;
-// Sets the language direction.
-var langDir = E.FCKLang.Dir ;
+ // Sets the Skin CSS.
+ oInnerDoc.write( '<link href="' + window.dialogArguments.Editor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
-// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
-if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
+ SetOnKeyDown( oInnerDoc ) ;
+ DisableContextMenu( oInnerDoc ) ;
-FCKTools.RegisterDollarFunction( window ) ;
+ return window.dialogArguments.Editor ;
+}
-// Resize related functions.
-var Sizer = function()
+function SetOkButton( showIt )
{
- var bAutoSize = false ;
-
- var retval = {
- // Sets whether the dialog should auto-resize according to its content's height.
- SetAutoSize : function( autoSize )
- {
- bAutoSize = autoSize ;
- this.RefreshSize() ;
- },
-
- // Fit the dialog container's layout to the inner iframe's external size.
- RefreshContainerSize : function()
- {
- var frmMain = $( 'frmMain' ) ;
-
- if ( frmMain )
- {
- // Get the container size.
- var height = $( 'contents' ).offsetHeight ;
-
- // Subtract the size of other elements.
- height -= $( 'TitleArea' ).offsetHeight ;
- height -= $( 'TabsRow' ).offsetHeight ;
- height -= $( 'PopupButtons' ).offsetHeight ;
-
- frmMain.style.height = Math.max( height, 0 ) + 'px' ;
- }
- },
-
- // Resize and re-layout the dialog.
- // Triggers the onresize event for the layout logic.
- ResizeDialog : function( width, height )
- {
- FCKDomTools.SetElementStyles( window.frameElement,
- {
- 'width' : width + 'px',
- 'height' : height + 'px'
- } ) ;
-
- // If the skin have defined a function for resize fixes, call it now.
- if ( typeof window.DoResizeFixes == 'function' )
- window.DoResizeFixes() ;
- },
-
- // if bAutoSize is true, automatically fit the dialog size and layout to
- // accomodate the inner iframe's internal height.
- // if bAutoSize is false, then only the layout logic for the dialog decorations
- // is run to accomodate the inner iframe's external height.
- RefreshSize : function()
- {
- if ( bAutoSize )
- {
- var frmMain = $( 'frmMain' ) ;
- var innerDoc = frmMain.contentWindow.document ;
- var isStrict = FCKTools.IsStrictMode( innerDoc ) ;
-
- // Get the size of the frame contents.
- var innerWidth = isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
- var innerHeight = isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
+ document.getElementById('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
+}
- // Get the current frame size.
- var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
+var bAutoSize = false ;
- var deltaWidth = innerWidth - frameSize.Width ;
- var deltaHeight = innerHeight - frameSize.Height ;
+function SetAutoSize( autoSize )
+{
+ bAutoSize = autoSize ;
+ RefreshSize() ;
+}
- // If the contents fits the current size.
- if ( deltaWidth <= 0 && deltaHeight <= 0 )
- return ;
+function RefreshSize()
+{
+ if ( bAutoSize )
+ {
+ var oInnerDoc = document.getElementById('frmMain').contentWindow.document ;
- var dialogWidth = frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
- var dialogHeight = frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
+ var iFrameHeight ;
+ if ( document.all )
+ iFrameHeight = oInnerDoc.body.offsetHeight ;
+ else
+ iFrameHeight = document.getElementById('frmMain').contentWindow.innerHeight ;
- this.ResizeDialog( dialogWidth, dialogHeight ) ;
- }
- this.RefreshContainerSize() ;
- }
- }
+ var iInnerHeight = oInnerDoc.body.scrollHeight ;
- /**
- * Safari seems to have a bug with the time when RefreshSize() is executed - it
- * thinks frmMain's innerHeight is 0 if we query the value too soon after the
- * page is loaded in some circumstances. (#1316)
- * TODO : Maybe this is not needed anymore after #35.
- */
- if ( FCKBrowserInfo.IsSafari )
- {
- var originalRefreshSize = retval.RefreshSize ;
+ var iDiff = iInnerHeight - iFrameHeight ;
- retval.RefreshSize = function()
+ if ( iDiff > 0 )
{
- FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
+ if ( document.all )
+ window.dialogHeight = ( parseInt( window.dialogHeight, 10 ) + iDiff ) + 'px' ;
+ else
+ window.resizeBy( 0, iDiff ) ;
}
}
+}
- /**
- * IE6 has a similar bug where it sometimes thinks $('contents') has an
- * offsetHeight of 0 (#2114).
- */
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var originalRefreshContainerSize = retval.RefreshContainerSize ;
- retval.RefreshContainerSize = function()
- {
- FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
- }
- }
+function Ok()
+{
+ if ( window.frames["frmMain"].Ok && window.frames["frmMain"].Ok() )
+ Cancel() ;
+}
- window.onresize = function()
+function Cancel( dontFireChange )
+{
+ if ( !dontFireChange )
{
- retval.RefreshContainerSize() ;
+ // All dialog windows, by default, will fire the "OnSelectionChange"
+ // event, no matter the Ok or Cancel button has been pressed.
+ window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
}
+ window.close() ;
+}
- window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
-
- return retval ;
-}() ;
+// Object that holds all available tabs.
+var oTabs = new Object() ;
-// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
-var Throbber = function()
+function TabDiv_OnClick()
{
- var timer ;
-
- var updateThrobber = function()
- {
- var throbberParent = $( 'throbberBlock' ) ;
- var throbberBlocks = throbberParent.childNodes ;
- var lastClass = throbberParent.lastChild.className ;
-
- // From the last to the second one, copy the class from the previous one.
- for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
- throbberBlocks[i].className = throbberBlocks[i-1].className ;
+ SetSelectedTab( this.TabCode ) ;
+}
- // For the first one, copy the last class (rotation).
- throbberBlocks[0].className = lastClass ;
- }
+function AddTab( tabCode, tabText, startHidden )
+{
+ if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
+ return ;
- return {
- Show : function( waitMilliseconds )
- {
- // Auto-setup the Show function to be called again after the
- // requested amount of time.
- if ( waitMilliseconds && waitMilliseconds > 0 )
- {
- timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
- return ;
- }
+ var eTabsRow = document.getElementById( 'Tabs' ) ;
- var throbberParent = $( 'throbberBlock' ) ;
+ var oCell = eTabsRow.insertCell( eTabsRow.cells.length - 1 ) ;
+ oCell.noWrap = true ;
- if (throbberParent.childNodes.length == 0)
- {
- // Create the throbber blocks.
- var classIds = [ 1,2,3,4,5,4,3,2 ] ;
- while ( classIds.length > 0 )
- throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
- }
+ var oDiv = document.createElement( 'DIV' ) ;
+ oDiv.className = 'PopupTab' ;
+ oDiv.innerHTML = tabText ;
+ oDiv.TabCode = tabCode ;
+ oDiv.onclick = TabDiv_OnClick ;
- // Center the throbber.
- var frm = $( 'contents' ) ;
- var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
- var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
- var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
- throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
- throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
+ if ( startHidden )
+ oDiv.style.display = 'none' ;
- // Show it.
- throbberParent.style.visibility = '' ;
+ eTabsRow = document.getElementById( 'TabsRow' ) ;
- // Hide tabs and buttons:
- $( 'Tabs' ).style.visibility = 'hidden' ;
- $( 'PopupButtons' ).style.visibility = 'hidden' ;
+ oCell.appendChild( oDiv ) ;
- // Setup the animation interval.
- timer = setInterval( updateThrobber, 100 ) ;
- },
+ if ( eTabsRow.style.display == 'none' )
+ {
+ var eTitleArea = document.getElementById( 'TitleArea' ) ;
+ eTitleArea.className = 'PopupTitle' ;
- Hide : function()
- {
- if ( timer )
- {
- clearInterval( timer ) ;
- timer = null ;
- }
+ oDiv.className = 'PopupTabSelected' ;
+ eTabsRow.style.display = '' ;
- $( 'throbberBlock' ).style.visibility = 'hidden' ;
+ if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+ window.onresize() ;
+ }
- // Show tabs and buttons:
- $( 'Tabs' ).style.visibility = '' ;
- $( 'PopupButtons' ).style.visibility = '' ;
- }
- } ;
-}() ;
+ oTabs[ tabCode ] = oDiv ;
+}
-// Drag and drop handlers.
-var DragAndDrop = function()
+function SetSelectedTab( tabCode )
{
- var registeredWindows = [] ;
- var lastCoords ;
- var currentPos ;
-
- var cleanUpHandlers = function()
- {
- for ( var i = 0 ; i < registeredWindows.length ; i++ )
- {
- FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
- FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
- }
- }
-
- var dragMouseMoveHandler = function( evt )
+ for ( var sCode in oTabs )
{
- if ( !lastCoords )
- return ;
-
- if ( !evt )
- evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
-
- // Updated the last coordinates.
- var currentCoords =
- {
- x : evt.screenX,
- y : evt.screenY
- } ;
-
- currentPos =
- {
- x : currentPos.x + ( currentCoords.x - lastCoords.x ),
- y : currentPos.y + ( currentCoords.y - lastCoords.y )
- } ;
-
- lastCoords = currentCoords ;
-
- frameElement.style.left = currentPos.x + 'px' ;
- frameElement.style.top = currentPos.y + 'px' ;
-
- if ( evt.preventDefault )
- evt.preventDefault() ;
+ if ( sCode == tabCode )
+ oTabs[sCode].className = 'PopupTabSelected' ;
else
- evt.returnValue = false ;
+ oTabs[sCode].className = 'PopupTab' ;
}
- var dragMouseUpHandler = function( evt )
- {
- if ( !lastCoords )
- return ;
- if ( !evt )
- evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
- cleanUpHandlers() ;
- lastCoords = null ;
- }
+ if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
+ window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
+}
- return {
+function SetTabVisibility( tabCode, isVisible )
+{
+ var oTab = oTabs[ tabCode ] ;
+ oTab.style.display = isVisible ? '' : 'none' ;
- MouseDownHandler : function( evt )
+ if ( ! isVisible && oTab.className == 'PopupTabSelected' )
+ {
+ for ( var sCode in oTabs )
{
- var view = null ;
- if ( !evt )
+ if ( oTabs[sCode].style.display != 'none' )
{
- view = FCKTools.GetElementDocument( this ).parentWindow ;
- evt = view.event ;
+ SetSelectedTab( sCode ) ;
+ break ;
}
- else
- view = evt.view ;
-
- var target = evt.srcElement || evt.target ;
- if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
- return ;
-
- lastCoords =
- {
- x : evt.screenX,
- y : evt.screenY
- } ;
-
- // Save the current IFRAME position.
- currentPos =
- {
- x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
- y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
- } ;
-
- for ( var i = 0 ; i < registeredWindows.length ; i++ )
- {
- FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
- FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
- }
-
- if ( evt.preventDefault )
- evt.preventDefault() ;
- else
- evt.returnValue = false ;
- },
-
- RegisterHandlers : function( w )
- {
- registeredWindows.push( w ) ;
}
}
-}() ;
-
-// Selection related functions.
-//(Became simple shortcuts after the fix for #1990)
-var Selection =
-{
- /**
- * Ensures that the editing area contains an active selection. This is a
- * requirement for IE, as it looses the selection when the focus moves to other
- * frames.
- */
- EnsureSelection : function()
- {
- // Move the focus to the Cancel button so even if the dialog contains a
- // contentEditable element the selection is properly restored in the editor #2496
- window.focus() ;
- $( 'btnCancel' ).focus() ;
-
- FCK.Selection.Restore() ;
- },
-
- /**
- * Get the FCKSelection object for the editor instance.
- */
- GetSelection : function()
- {
- return FCK.Selection ;
- },
-
- /**
- * Get the selected element in the editing area (for object selections).
- */
- GetSelectedElement : function()
- {
- return FCK.Selection.GetSelectedElement() ;
- }
}
-// Tab related functions.
-var Tabs = function()
+function SetOnKeyDown( targetDocument )
{
- // Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
- // would build circular references with the element references inside and cause memory leaks in IE6.
- var oTabs = new Object() ;
-
- var setSelectedTab = function( tabCode )
+ targetDocument.onkeydown = function ( e )
{
- for ( var sCode in oTabs )
+ e = e || event || this.parentWindow.event ;
+ switch ( e.keyCode )
{
- if ( sCode == tabCode )
- $( oTabs[sCode] ).className = 'PopupTabSelected' ;
- else
- $( oTabs[sCode] ).className = 'PopupTab' ;
+ case 13 : // ENTER
+ var oTarget = e.srcElement || e.target ;
+ if ( oTarget.tagName == 'TEXTAREA' )
+ return true ;
+ Ok() ;
+ return false ;
+ case 27 : // ESC
+ Cancel() ;
+ return false ;
+ break ;
}
-
- if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
- window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
- }
-
- function TabDiv_OnClick()
- {
- setSelectedTab( this.TabCode ) ;
+ return true ;
}
+}
+SetOnKeyDown( document ) ;
- window.AddTab = function( tabCode, tabText, startHidden )
- {
- if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
- return ;
-
- var eTabsRow = $( 'Tabs' ) ;
-
- var oCell = eTabsRow.insertCell( eTabsRow.cells.length - 1 ) ;
- oCell.noWrap = true ;
-
- var oDiv = document.createElement( 'DIV' ) ;
- oDiv.className = 'PopupTab' ;
- oDiv.innerHTML = tabText ;
- oDiv.TabCode = tabCode ;
- oDiv.onclick = TabDiv_OnClick ;
- oDiv.id = Math.random() ;
-
- if ( startHidden )
- oDiv.style.display = 'none' ;
-
- eTabsRow = $( 'TabsRow' ) ;
-
- oCell.appendChild( oDiv ) ;
-
- if ( eTabsRow.style.display == 'none' )
- {
- var eTitleArea = $( 'TitleArea' ) ;
- eTitleArea.className = 'PopupTitle' ;
-
- oDiv.className = 'PopupTabSelected' ;
- eTabsRow.style.display = '' ;
-
- if ( window.onresize )
- window.onresize() ;
- }
-
- oTabs[ tabCode ] = oDiv.id ;
-
- FCKTools.DisableSelection( oDiv ) ;
- } ;
-
- window.SetSelectedTab = setSelectedTab ;
-
- window.SetTabVisibility = function( tabCode, isVisible )
- {
- var oTab = $( oTabs[ tabCode ] ) ;
- oTab.style.display = isVisible ? '' : 'none' ;
-
- if ( ! isVisible && oTab.className == 'PopupTabSelected' )
- {
- for ( var sCode in oTabs )
- {
- if ( $( oTabs[sCode] ).style.display != 'none' )
- {
- setSelectedTab( sCode ) ;
- break ;
- }
- }
- }
- } ;
-}() ;
-
-// readystatechange handler for registering drag and drop handlers in cover
-// iframes, defined out here to avoid memory leak.
-// Do NOT put this function as a private function as it will induce memory leak
-// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
-// really nasty (sigh).
-var onReadyRegister = function()
-{
- if ( this.readyState != 'complete' )
- return ;
- DragAndDrop.RegisterHandlers( this.contentWindow ) ;
-} ;
-
-// The business logic of the dialog, dealing with operational things like
-// dialog open/dialog close/enable/disable/etc.
-(function()
+function DisableContextMenu( targetDocument )
{
- var setOnKeyDown = function( targetDocument )
- {
- targetDocument.onkeydown = function ( e )
- {
- e = e || event || this.parentWindow.event ;
- switch ( e.keyCode )
- {
- case 13 : // ENTER
- var oTarget = e.srcElement || e.target ;
- if ( oTarget.tagName == 'TEXTAREA' )
- return true ;
- Ok() ;
- return false ;
-
- case 27 : // ESC
- Cancel() ;
- return false ;
- }
- return true ;
- }
- } ;
+ if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE ) return ;
- var contextMenuBlocker = function( e )
+ // Disable Right-Click
+ var oOnContextMenu = function( e )
{
var sTagName = e.target.tagName ;
if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
e.preventDefault() ;
- } ;
-
- var disableContextMenu = function( targetDocument )
- {
- if ( FCKBrowserInfo.IsIE )
- return ;
-
- targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
- } ;
-
- // Program entry point.
- window.Init = function()
- {
- $( 'contents' ).dir = langDir;
-
- // Start the throbber timer.
- Throbber.Show( 1000 ) ;
-
- Sizer.RefreshContainerSize() ;
- LoadInnerDialog() ;
-
- FCKTools.DisableSelection( document.body ) ;
-
- // Make the title area draggable.
- var titleElement = $( 'header' ) ;
- titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
-
- // Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
- DragAndDrop.RegisterHandlers( window ) ;
- DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
-
- // Disable the previous dialog if it exists.
- if ( ParentDialog() )
- {
- ParentDialog().contentWindow.SetEnabled( false ) ;
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var currentParent = ParentDialog() ;
- while ( currentParent )
- {
- var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
- if ( blockerFrame.readyState == 'complete' )
- DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
- else
- blockerFrame.onreadystatechange = onReadyRegister ;
- currentParent = ParentDialog( currentParent ) ;
- }
- }
- else
- {
- var currentParent = ParentDialog() ;
- while ( currentParent )
- {
- DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
- currentParent = ParentDialog( currentParent ) ;
- }
- }
- }
-
- // If this is the only dialog on screen, enable the background cover.
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var blockerFrame = FCKDialog.GetCover().firstChild ;
- if ( blockerFrame.readyState == 'complete' )
- DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
- else
- blockerFrame.onreadystatechange = onReadyRegister;
- }
-
- // Add Enter/Esc hotkeys and disable context menu for the dialog.
- setOnKeyDown( document ) ;
- disableContextMenu( document ) ;
- } ;
-
- window.LoadInnerDialog = function()
- {
- if ( window.onresize )
- window.onresize() ;
-
- // First of all, translate the dialog box contents.
- E.FCKLanguageManager.TranslatePage( document ) ;
-
- // Create the IFRAME that holds the dialog contents.
- $( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
- } ;
-
- window.InnerDialogLoaded = function()
- {
- // If the dialog has been closed before the iframe is loaded, do nothing.
- if ( !frameElement.parentNode )
- return null ;
-
- Throbber.Hide() ;
-
- var frmMain = $('frmMain') ;
- var innerWindow = frmMain.contentWindow ;
- var innerDoc = innerWindow.document ;
-
- // Show the loaded iframe.
- frmMain.style.visibility = '' ;
-
- // Set the language direction.
- innerDoc.documentElement.dir = langDir ;
-
- // Sets the Skin CSS.
- innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-
- setOnKeyDown( innerDoc ) ;
- disableContextMenu( innerDoc ) ;
-
- Sizer.RefreshContainerSize();
-
- DragAndDrop.RegisterHandlers( innerWindow ) ;
-
- innerWindow.focus() ;
-
- return E ;
- } ;
+ }
+ targetDocument.addEventListener( 'contextmenu', oOnContextMenu, true ) ;
+}
+DisableContextMenu( document ) ;
- window.SetOkButton = function( showIt )
+if ( ! window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+{
+ window.onresize = function()
{
- $('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
- } ;
+ var oFrame = document.getElementById("frmMain") ;
- window.Ok = function()
- {
- Selection.EnsureSelection() ;
+ if ( ! oFrame )
+ return ;
- var frmMain = window.frames["frmMain"] ;
+ oFrame.height = 0 ;
- if ( frmMain.Ok && frmMain.Ok() )
- CloseDialog() ;
- else
- frmMain.focus() ;
- } ;
+ var oCell = document.getElementById("FrameCell") ;
+ var iHeight = oCell.offsetHeight ;
- window.Cancel = function( dontFireChange )
- {
- Selection.EnsureSelection() ;
- return CloseDialog( dontFireChange ) ;
- } ;
+ oFrame.height = iHeight - 2 ;
+ }
+}
- window.CloseDialog = function( dontFireChange )
+if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
+{
+ function Window_OnBeforeUnload()
{
- Throbber.Hide() ;
-
- // Points the src to a non-existent location to avoid loading errors later, in case the dialog
- // haven't been completed loaded at this point.
- if ( $( 'frmMain' ) )
- $( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
+ for ( var t in oTabs )
+ oTabs[t] = null ;
- if ( !dontFireChange && !FCK.EditMode )
- {
- // All dialog windows, by default, will fire the "OnSelectionChange"
- // event, no matter the Ok or Cancel button has been pressed.
- // It seems that OnSelectionChange may enter on a concurrency state
- // on some situations (#1965), so we should put the event firing in
- // the execution queue instead of executing it immediately.
- setTimeout( function()
- {
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- }, 0 ) ;
- }
+ window.dialogArguments.Editor = null ;
+ }
+ window.attachEvent( "onbeforeunload", Window_OnBeforeUnload ) ;
+}
- FCKDialog.OnDialogClose( window ) ;
- } ;
+function Window_OnClose()
+{
+ window.dialogArguments.Editor.FCKFocusManager.Unlock() ;
+}
- window.SetEnabled = function( isEnabled )
- {
- var cover = $( 'cover' ) ;
- cover.style.display = isEnabled ? 'none' : '' ;
+if ( window.addEventListener )
+ window.addEventListener( 'unload', Window_OnClose, false ) ;
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- if ( !isEnabled )
- {
- // Inser the blocker IFRAME before the cover.
- var blocker = document.createElement( 'iframe' ) ;
- blocker.src = FCKTools.GetVoidUrl() ;
- blocker.hideFocus = true ;
- blocker.frameBorder = 0 ;
- blocker.id = blocker.className = 'blocker' ;
- cover.appendChild( blocker ) ;
- }
- else
- {
- var blocker = $( 'blocker' ) ;
- if ( blocker && blocker.parentNode )
- blocker.parentNode.removeChild( blocker ) ;
- }
- }
- } ;
-})() ;
-// ]]>
</script>
</head>
- <body onload="Init();" class="PopupBody">
- <div class="contents" id="contents">
- <div id="header">
- <div id="TitleArea" class="PopupTitle PopupTitleBorder">
+ <body onload="LoadInnerDialog();" class="PopupBody">
+ <table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+ <tr>
+ <td id="TitleArea" class="PopupTitle PopupTitleBorder">
<script type="text/javascript">
-// <![CDATA[
-document.write( Args().Title ) ;
-// ]]>
+document.write( sTitle ) ;
</script>
- <div id="closeButton" onclick="Cancel();"></div>
- </div>
- <div id="TabsRow" class="PopupTabArea" style="display: none">
+ </td>
+ </tr>
+ <tr id="TabsRow" style="DISPLAY: none">
+ <td class="PopupTabArea">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr id="Tabs">
+ <tr id="Tabs" onselectstart="return false;">
<td class="PopupTabEmptyArea">&nbsp;</td>
<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
</tr>
</table>
- </div>
- </div>
- <div id="innerContents"></div>
- <div id="PopupButtons" class="PopupButtons">
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td width="100%">&nbsp;</td>
- <td nowrap="nowrap">
- <input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
- &nbsp;
- <input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
- </td>
- </tr>
- </table>
- </div>
- </div>
- <div class="tl"></div>
- <div class="tc"></div>
- <div class="tr"></div>
- <div class="ml"></div>
- <div class="mr"></div>
- <div class="bl"></div>
- <div class="bc"></div>
- <div class="br"></div>
- <div class="cover" id="cover" style="display:none"></div>
- <div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
- <script type="text/javascript">
-// <![CDATA[
- // Set the class name for language direction.
- document.body.className += ' ' + langDir ;
-
- var cover = $( 'cover' ) ;
- cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
- FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
-// ]]>
- </script>
+ </td>
+ </tr>
+ <tr>
+ <td id="FrameCell" height="100%" valign="top">
+ <iframe id="frmMain" src="javascript:void(0)" name="frmMain" frameborder="0" height="100%" width="100%" scrolling="auto">
+ </iframe>
+ </td>
+ </tr>
+ <tr>
+ <td class="PopupButtons">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td width="100%">&nbsp;</td>
+ <td nowrap="nowrap">
+ <input id="btnOk" style="VISIBILITY: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
+ &nbsp;
+ <input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
</body>
-</html>
+</html> \ No newline at end of file