Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F391092
fcktoolbarset.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
fcktoolbarset.js
View Options
/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2007 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 ==
*
* Defines the FCKToolbarSet object that is used to load and draw the
* toolbar.
*/
function
FCKToolbarSet_Create
(
overhideLocation
)
{
var
oToolbarSet
;
var
sLocation
=
overhideLocation
||
FCKConfig
.
ToolbarLocation
;
switch
(
sLocation
)
{
case
'In'
:
document
.
getElementById
(
'xToolbarRow'
).
style
.
display
=
''
;
oToolbarSet
=
new
FCKToolbarSet
(
document
)
;
break
;
// case 'OutTop' :
// Not supported.
default
:
FCK
.
Events
.
AttachEvent
(
'OnBlur'
,
FCK_OnBlur
)
;
FCK
.
Events
.
AttachEvent
(
'OnFocus'
,
FCK_OnFocus
)
;
var
eToolbarTarget
;
// Out:[TargetWindow]([TargetId])
var
oOutMatch
=
sLocation
.
match
(
/^Out:(.+)\((\w+)\)$/
)
;
if
(
oOutMatch
)
{
eToolbarTarget
=
eval
(
'parent.'
+
oOutMatch
[
1
]
).
document
.
getElementById
(
oOutMatch
[
2
]
)
;
}
else
{
// Out:[TargetId]
oOutMatch
=
sLocation
.
match
(
/^Out:(\w+)$/
)
;
if
(
oOutMatch
)
eToolbarTarget
=
parent
.
document
.
getElementById
(
oOutMatch
[
1
]
)
;
}
if
(
!
eToolbarTarget
)
{
alert
(
'Invalid value for "ToolbarLocation"'
)
;
return
this
.
_Init
(
'In'
)
;
}
// If it is a shared toolbar, it may be already available in the target element.
oToolbarSet
=
eToolbarTarget
.
__FCKToolbarSet
;
if
(
oToolbarSet
)
break
;
// Create the IFRAME that will hold the toolbar inside the target element.
var
eToolbarIFrame
=
FCKTools
.
GetElementDocument
(
eToolbarTarget
).
createElement
(
'iframe'
)
;
eToolbarIFrame
.
frameBorder
=
0
;
eToolbarIFrame
.
width
=
'100%'
;
eToolbarIFrame
.
height
=
'10'
;
eToolbarTarget
.
appendChild
(
eToolbarIFrame
)
;
eToolbarIFrame
.
unselectable
=
'on'
;
// Write the basic HTML for the toolbar (copy from the editor main page).
var
eTargetDocument
=
eToolbarIFrame
.
contentWindow
.
document
;
eTargetDocument
.
open
()
;
eTargetDocument
.
write
(
'<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'
+
document
.
getElementById
(
'xToolbarSpace'
).
innerHTML
+
'</body></html>'
)
;
eTargetDocument
.
close
()
;
eTargetDocument
.
oncontextmenu
=
FCKTools
.
CancelEvent
;
// Load external resources (must be done here, otherwise Firefox will not
// have the document DOM ready to be used right away.
FCKTools
.
AppendStyleSheet
(
eTargetDocument
,
FCKConfig
.
SkinPath
+
'fck_editor.css'
)
;
oToolbarSet
=
eToolbarTarget
.
__FCKToolbarSet
=
new
FCKToolbarSet
(
eTargetDocument
)
;
oToolbarSet
.
_IFrame
=
eToolbarIFrame
;
if
(
FCK
.
IECleanup
)
FCK
.
IECleanup
.
AddItem
(
eToolbarTarget
,
FCKToolbarSet_Target_Cleanup
)
;
}
oToolbarSet
.
CurrentInstance
=
FCK
;
FCK
.
AttachToOnSelectionChange
(
oToolbarSet
.
RefreshItemsState
)
;
return
oToolbarSet
;
}
function
FCK_OnBlur
(
editorInstance
)
{
var
eToolbarSet
=
editorInstance
.
ToolbarSet
;
if
(
eToolbarSet
.
CurrentInstance
==
editorInstance
)
eToolbarSet
.
Disable
()
;
}
function
FCK_OnFocus
(
editorInstance
)
{
var
oToolbarset
=
editorInstance
.
ToolbarSet
;
var
oInstance
=
editorInstance
||
FCK
;
// Unregister the toolbar window from the current instance.
oToolbarset
.
CurrentInstance
.
FocusManager
.
RemoveWindow
(
oToolbarset
.
_IFrame
.
contentWindow
)
;
// Set the new current instance.
oToolbarset
.
CurrentInstance
=
oInstance
;
// Register the toolbar window in the current instance.
oInstance
.
FocusManager
.
AddWindow
(
oToolbarset
.
_IFrame
.
contentWindow
,
true
)
;
oToolbarset
.
Enable
()
;
}
function
FCKToolbarSet_Cleanup
()
{
this
.
_TargetElement
=
null
;
this
.
_IFrame
=
null
;
}
function
FCKToolbarSet_Target_Cleanup
()
{
this
.
__FCKToolbarSet
=
null
;
}
var
FCKToolbarSet
=
function
(
targetDocument
)
{
this
.
_Document
=
targetDocument
;
// Get the element that will hold the elements structure.
this
.
_TargetElement
=
targetDocument
.
getElementById
(
'xToolbar'
)
;
// Setup the expand and collapse handlers.
var
eExpandHandle
=
targetDocument
.
getElementById
(
'xExpandHandle'
)
;
var
eCollapseHandle
=
targetDocument
.
getElementById
(
'xCollapseHandle'
)
;
eExpandHandle
.
title
=
FCKLang
.
ToolbarExpand
;
eExpandHandle
.
onclick
=
FCKToolbarSet_Expand_OnClick
;
eCollapseHandle
.
title
=
FCKLang
.
ToolbarCollapse
;
eCollapseHandle
.
onclick
=
FCKToolbarSet_Collapse_OnClick
;
// Set the toolbar state at startup.
if
(
!
FCKConfig
.
ToolbarCanCollapse
||
FCKConfig
.
ToolbarStartExpanded
)
this
.
Expand
()
;
else
this
.
Collapse
()
;
// Enable/disable the collapse handler
eCollapseHandle
.
style
.
display
=
FCKConfig
.
ToolbarCanCollapse
?
''
:
'none'
;
if
(
FCKConfig
.
ToolbarCanCollapse
)
eCollapseHandle
.
style
.
display
=
''
;
else
targetDocument
.
getElementById
(
'xTBLeftBorder'
).
style
.
display
=
''
;
// Set the default properties.
this
.
Toolbars
=
new
Array
()
;
this
.
IsLoaded
=
false
;
if
(
FCK
.
IECleanup
)
FCK
.
IECleanup
.
AddItem
(
this
,
FCKToolbarSet_Cleanup
)
;
}
function
FCKToolbarSet_Expand_OnClick
()
{
FCK
.
ToolbarSet
.
Expand
()
;
}
function
FCKToolbarSet_Collapse_OnClick
()
{
FCK
.
ToolbarSet
.
Collapse
()
;
}
FCKToolbarSet
.
prototype
.
Expand
=
function
()
{
this
.
_ChangeVisibility
(
false
)
;
}
FCKToolbarSet
.
prototype
.
Collapse
=
function
()
{
this
.
_ChangeVisibility
(
true
)
;
}
FCKToolbarSet
.
prototype
.
_ChangeVisibility
=
function
(
collapse
)
{
this
.
_Document
.
getElementById
(
'xCollapsed'
).
style
.
display
=
collapse
?
''
:
'none'
;
this
.
_Document
.
getElementById
(
'xExpanded'
).
style
.
display
=
collapse
?
'none'
:
''
;
if
(
FCKBrowserInfo
.
IsGecko
)
{
// I had to use "setTimeout" because Gecko was not responding in a right
// way when calling window.onresize() directly.
FCKTools
.
RunFunction
(
window
.
onresize
)
;
}
}
FCKToolbarSet
.
prototype
.
Load
=
function
(
toolbarSetName
)
{
this
.
Name
=
toolbarSetName
;
this
.
Items
=
new
Array
()
;
// Reset the array of toolbat items that are active only on WYSIWYG mode.
this
.
ItemsWysiwygOnly
=
new
Array
()
;
// Reset the array of toolbar items that are sensitive to the cursor position.
this
.
ItemsContextSensitive
=
new
Array
()
;
// Cleanup the target element.
this
.
_TargetElement
.
innerHTML
=
''
;
var
ToolbarSet
=
FCKConfig
.
ToolbarSets
[
toolbarSetName
]
;
if
(
!
ToolbarSet
)
{
alert
(
FCKLang
.
UnknownToolbarSet
.
replace
(
/%1/g
,
toolbarSetName
)
)
;
return
;
}
this
.
Toolbars
=
new
Array
()
;
for
(
var
x
=
0
;
x
<
ToolbarSet
.
length
;
x
++
)
{
var
oToolbarItems
=
ToolbarSet
[
x
]
;
var
oToolbar
;
if
(
typeof
(
oToolbarItems
)
==
'string'
)
{
if
(
oToolbarItems
==
'/'
)
oToolbar
=
new
FCKToolbarBreak
()
;
}
else
{
oToolbar
=
new
FCKToolbar
()
;
for
(
var
j
=
0
;
j
<
oToolbarItems
.
length
;
j
++
)
{
var
sItem
=
oToolbarItems
[
j
]
;
if
(
sItem
==
'-'
)
oToolbar
.
AddSeparator
()
;
else
{
var
oItem
=
FCKToolbarItems
.
GetItem
(
sItem
)
;
if
(
oItem
)
{
oToolbar
.
AddItem
(
oItem
)
;
this
.
Items
.
push
(
oItem
)
;
if
(
!
oItem
.
SourceView
)
this
.
ItemsWysiwygOnly
.
push
(
oItem
)
;
if
(
oItem
.
ContextSensitive
)
this
.
ItemsContextSensitive
.
push
(
oItem
)
;
}
}
}
// oToolbar.AddTerminator() ;
}
oToolbar
.
Create
(
this
.
_TargetElement
)
;
this
.
Toolbars
[
this
.
Toolbars
.
length
]
=
oToolbar
;
}
FCKTools
.
DisableSelection
(
this
.
_Document
.
getElementById
(
'xCollapseHandle'
).
parentNode
)
;
if
(
FCK
.
Status
!=
FCK_STATUS_COMPLETE
)
FCK
.
Events
.
AttachEvent
(
'OnStatusChange'
,
this
.
RefreshModeState
)
;
else
this
.
RefreshModeState
()
;
this
.
IsLoaded
=
true
;
this
.
IsEnabled
=
true
;
FCKTools
.
RunFunction
(
this
.
OnLoad
)
;
}
FCKToolbarSet
.
prototype
.
Enable
=
function
()
{
if
(
this
.
IsEnabled
)
return
;
this
.
IsEnabled
=
true
;
var
aItems
=
this
.
Items
;
for
(
var
i
=
0
;
i
<
aItems
.
length
;
i
++
)
aItems
[
i
].
RefreshState
()
;
}
FCKToolbarSet
.
prototype
.
Disable
=
function
()
{
if
(
!
this
.
IsEnabled
)
return
;
this
.
IsEnabled
=
false
;
var
aItems
=
this
.
Items
;
for
(
var
i
=
0
;
i
<
aItems
.
length
;
i
++
)
aItems
[
i
].
Disable
()
;
}
FCKToolbarSet
.
prototype
.
RefreshModeState
=
function
(
editorInstance
)
{
if
(
FCK
.
Status
!=
FCK_STATUS_COMPLETE
)
return
;
var
oToolbarSet
=
editorInstance
?
editorInstance
.
ToolbarSet
:
this
;
var
aItems
=
oToolbarSet
.
ItemsWysiwygOnly
;
if
(
FCK
.
EditMode
==
FCK_EDITMODE_WYSIWYG
)
{
// Enable all buttons that are available on WYSIWYG mode only.
for
(
var
i
=
0
;
i
<
aItems
.
length
;
i
++
)
aItems
[
i
].
Enable
()
;
// Refresh the buttons state.
oToolbarSet
.
RefreshItemsState
(
editorInstance
)
;
}
else
{
// Refresh the buttons state.
oToolbarSet
.
RefreshItemsState
(
editorInstance
)
;
// Disable all buttons that are available on WYSIWYG mode only.
for
(
var
j
=
0
;
j
<
aItems
.
length
;
j
++
)
aItems
[
j
].
Disable
()
;
}
}
FCKToolbarSet
.
prototype
.
RefreshItemsState
=
function
(
editorInstance
)
{
var
aItems
=
(
editorInstance
?
editorInstance
.
ToolbarSet
:
this
).
ItemsContextSensitive
;
for
(
var
i
=
0
;
i
<
aItems
.
length
;
i
++
)
aItems
[
i
].
RefreshState
()
;
}
File Metadata
Details
Attached
Mime Type
text/html
Expires
Sat, Feb 22, 20:21 (15 h, 55 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23745
Default Alt Text
fcktoolbarset.js (9 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment