Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1377043
fckdialog.html
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Feb 2, 12:53 AM
Size
21 KB
Mime Type
text/html
Expires
Wed, Feb 4, 12:53 AM (1 h, 49 m)
Engine
blob
Format
Raw Data
Handle
883093
Attached To
rINP In-Portal
fckdialog.html
View Options
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
* 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 ==
*
* This page is used by all dialog box as the container.
-->
<
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
;
if
(
document
.
domain
!=
parentDomain
)
document
.
domain
=
parentDomain
;
break
;
}
catch
(
e
)
{}
// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
d
=
d
.
replace
(
/.*?(?:\.|
$
)/
,
''
)
;
if
(
d
.
length
==
0
)
break
;
// It was not able to detect the domain.
document
.
domain
=
d
;
}
})()
;
var
E
=
frameElement
.
_DialogArguments
.
Editor
;
// 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
;
}
function
ParentDialog
(
dialog
)
{
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
()
;
// Sets the Skin CSS
document
.
write
(
FCKTools
.
GetStyleHtml
(
FCKConfig
.
SkinDialogCSS
)
)
;
// Sets the language direction.
var
langDir
=
E
.
FCKLang
.
Dir
;
// 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>'
)
;
FCKTools
.
RegisterDollarFunction
(
window
)
;
// Resize related functions.
var
Sizer
=
function
()
{
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
;
// Get the current frame size.
var
frameSize
=
FCKTools
.
GetViewPaneSize
(
frmMain
.
contentWindow
)
;
var
deltaWidth
=
innerWidth
-
frameSize
.
Width
;
var
deltaHeight
=
innerHeight
-
frameSize
.
Height
;
// If the contents fits the current size.
if
(
deltaWidth
<=
0
&&
deltaHeight
<=
0
)
return
;
var
dialogWidth
=
frameElement
.
offsetWidth
+
Math
.
max
(
deltaWidth
,
0
)
;
var
dialogHeight
=
frameElement
.
offsetHeight
+
Math
.
max
(
deltaHeight
,
0
)
;
this
.
ResizeDialog
(
dialogWidth
,
dialogHeight
)
;
}
this
.
RefreshContainerSize
()
;
}
}
/**
* 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
;
retval
.
RefreshSize
=
function
()
{
FCKTools
.
SetTimeout
(
originalRefreshSize
,
1
,
retval
)
;
}
}
/**
* 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
)
;
}
}
window
.
onresize
=
function
()
{
retval
.
RefreshContainerSize
()
;
}
window
.
SetAutoSize
=
FCKTools
.
Bind
(
retval
,
retval
.
SetAutoSize
)
;
return
retval
;
}()
;
// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
var
Throbber
=
function
()
{
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
;
// For the first one, copy the last class (rotation).
throbberBlocks
[
0
].
className
=
lastClass
;
}
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
throbberParent
=
$
(
'throbberBlock'
)
;
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
()
;
}
// 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'
;
// Show it.
throbberParent
.
style
.
visibility
=
''
;
// Hide tabs and buttons:
$
(
'Tabs'
).
style
.
visibility
=
'hidden'
;
$
(
'PopupButtons'
).
style
.
visibility
=
'hidden'
;
// Setup the animation interval.
timer
=
setInterval
(
updateThrobber
,
100
)
;
},
Hide
:
function
()
{
if
(
timer
)
{
clearInterval
(
timer
)
;
timer
=
null
;
}
$
(
'throbberBlock'
).
style
.
visibility
=
'hidden'
;
// Show tabs and buttons:
$
(
'Tabs'
).
style
.
visibility
=
''
;
$
(
'PopupButtons'
).
style
.
visibility
=
''
;
}
}
;
}()
;
// Drag and drop handlers.
var
DragAndDrop
=
function
()
{
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
)
{
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
()
;
else
evt
.
returnValue
=
false
;
}
var
dragMouseUpHandler
=
function
(
evt
)
{
if
(
!
lastCoords
)
return
;
if
(
!
evt
)
evt
=
FCKTools
.
GetElementDocument
(
this
).
parentWindow
.
event
;
cleanUpHandlers
()
;
lastCoords
=
null
;
}
return
{
MouseDownHandler
:
function
(
evt
)
{
var
view
=
null
;
if
(
!
evt
)
{
view
=
FCKTools
.
GetElementDocument
(
this
).
parentWindow
;
evt
=
view
.
event
;
}
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
()
{
// 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
)
{
for
(
var
sCode
in
oTabs
)
{
if
(
sCode
==
tabCode
)
$
(
oTabs
[
sCode
]
).
className
=
'PopupTabSelected'
;
else
$
(
oTabs
[
sCode
]
).
className
=
'PopupTab'
;
}
if
(
typeof
(
window
.
frames
[
"frmMain"
].
OnDialogTabChange
)
==
'function'
)
window
.
frames
[
"frmMain"
].
OnDialogTabChange
(
tabCode
)
;
}
function
TabDiv_OnClick
()
{
setSelectedTab
(
this
.
TabCode
)
;
}
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
()
{
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
;
}
}
;
var
contextMenuBlocker
=
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
;
}
;
window
.
SetOkButton
=
function
(
showIt
)
{
$
(
'btnOk'
).
style
.
visibility
=
(
showIt
?
''
:
'hidden'
)
;
}
;
window
.
Ok
=
function
()
{
Selection
.
EnsureSelection
()
;
var
frmMain
=
window
.
frames
[
"frmMain"
]
;
if
(
frmMain
.
Ok
&&
frmMain
.
Ok
()
)
CloseDialog
()
;
else
frmMain
.
focus
()
;
}
;
window
.
Cancel
=
function
(
dontFireChange
)
{
Selection
.
EnsureSelection
()
;
return
CloseDialog
(
dontFireChange
)
;
}
;
window
.
CloseDialog
=
function
(
dontFireChange
)
{
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
()
;
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
)
;
}
FCKDialog
.
OnDialogClose
(
window
)
;
}
;
window
.
SetEnabled
=
function
(
isEnabled
)
{
var
cover
=
$
(
'cover'
)
;
cover
.
style
.
display
=
isEnabled
?
'none'
:
''
;
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"
>
<
script
type
=
"text/javascript"
>
// <![CDATA[
document
.
write
(
Args
().
Title
)
;
// ]]>
</
script
>
<
div
id
=
"closeButton"
onclick
=
"Cancel();"
></
div
>
</
div
>
<
div
id
=
"TabsRow"
class
=
"PopupTabArea"
style
=
"display: none"
>
<
table
border
=
"0"
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"100%"
>
<
tr
id
=
"Tabs"
>
<
td
class
=
"PopupTabEmptyArea"
>
</
td
>
<
td
class
=
"PopupTabEmptyArea"
width
=
"100%"
>
</
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%"
>
</
td
>
<
td
nowrap
=
"nowrap"
>
<
input
id
=
"btnOk"
style
=
"visibility: hidden;"
type
=
"button"
value
=
"Ok"
class
=
"Button"
onclick
=
"Ok();"
fckLang
=
"DlgBtnOK"
/>
<
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
>
</
body
>
</
html
>
Event Timeline
Log In to Comment