Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F390921
fckeditor.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
fckeditor.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 ==
*
* This is the integration file for JavaScript.
*
* It defines the FCKeditor class that can be used to create editor
* instances in a HTML page in the client side. For server side
* operations, use the specific integration system.
*/
// FCKeditor Class
var
FCKeditor
=
function
(
instanceName
,
width
,
height
,
toolbarSet
,
value
)
{
// Properties
this
.
InstanceName
=
instanceName
;
this
.
Width
=
width
||
'100%'
;
this
.
Height
=
height
||
'200'
;
this
.
ToolbarSet
=
toolbarSet
||
'Default'
;
this
.
Value
=
value
||
''
;
this
.
BasePath
=
'/fckeditor/'
;
this
.
CheckBrowser
=
true
;
this
.
DisplayErrors
=
true
;
this
.
EnableSafari
=
false
;
// This is a temporary property, while Safari support is under development.
this
.
EnableOpera
=
false
;
// This is a temporary property, while Opera support is under development.
this
.
Config
=
new
Object
()
;
// Events
this
.
OnError
=
null
;
// function( source, errorNumber, errorDescription )
}
FCKeditor
.
prototype
.
Version
=
'2.4.2'
;
FCKeditor
.
prototype
.
VersionBuild
=
'14978'
;
FCKeditor
.
prototype
.
Create
=
function
()
{
document
.
write
(
this
.
CreateHtml
()
)
;
}
FCKeditor
.
prototype
.
CreateHtml
=
function
()
{
// Check for errors
if
(
!
this
.
InstanceName
||
this
.
InstanceName
.
length
==
0
)
{
this
.
_ThrowError
(
701
,
'You must specify an instance name.'
)
;
return
''
;
}
var
sHtml
=
'<div>'
;
if
(
!
this
.
CheckBrowser
||
this
.
_IsCompatibleBrowser
()
)
{
sHtml
+=
'<input type="hidden" id="'
+
this
.
InstanceName
+
'" name="'
+
this
.
InstanceName
+
'" value="'
+
this
.
_HTMLEncode
(
this
.
Value
)
+
'" style="display:none" />'
;
sHtml
+=
this
.
_GetConfigHtml
()
;
sHtml
+=
this
.
_GetIFrameHtml
()
;
}
else
{
var
sWidth
=
this
.
Width
.
toString
().
indexOf
(
'%'
)
>
0
?
this
.
Width
:
this
.
Width
+
'px'
;
var
sHeight
=
this
.
Height
.
toString
().
indexOf
(
'%'
)
>
0
?
this
.
Height
:
this
.
Height
+
'px'
;
sHtml
+=
'<textarea name="'
+
this
.
InstanceName
+
'" rows="4" cols="40" style="width:'
+
sWidth
+
';height:'
+
sHeight
+
'">'
+
this
.
_HTMLEncode
(
this
.
Value
)
+
'<\/textarea>'
;
}
sHtml
+=
'</div>'
;
return
sHtml
;
}
FCKeditor
.
prototype
.
ReplaceTextarea
=
function
()
{
if
(
!
this
.
CheckBrowser
||
this
.
_IsCompatibleBrowser
()
)
{
// We must check the elements firstly using the Id and then the name.
var
oTextarea
=
document
.
getElementById
(
this
.
InstanceName
)
;
var
colElementsByName
=
document
.
getElementsByName
(
this
.
InstanceName
)
;
var
i
=
0
;
while
(
oTextarea
||
i
==
0
)
{
if
(
oTextarea
&&
oTextarea
.
tagName
.
toLowerCase
()
==
'textarea'
)
break
;
oTextarea
=
colElementsByName
[
i
++
]
;
}
if
(
!
oTextarea
)
{
alert
(
'Error: The TEXTAREA with id or name set to "'
+
this
.
InstanceName
+
'" was not found'
)
;
return
;
}
oTextarea
.
style
.
display
=
'none'
;
this
.
_InsertHtmlBefore
(
this
.
_GetConfigHtml
(),
oTextarea
)
;
this
.
_InsertHtmlBefore
(
this
.
_GetIFrameHtml
(),
oTextarea
)
;
}
}
FCKeditor
.
prototype
.
_InsertHtmlBefore
=
function
(
html
,
element
)
{
if
(
element
.
insertAdjacentHTML
)
// IE
element
.
insertAdjacentHTML
(
'beforeBegin'
,
html
)
;
else
// Gecko
{
var
oRange
=
document
.
createRange
()
;
oRange
.
setStartBefore
(
element
)
;
var
oFragment
=
oRange
.
createContextualFragment
(
html
);
element
.
parentNode
.
insertBefore
(
oFragment
,
element
)
;
}
}
FCKeditor
.
prototype
.
_GetConfigHtml
=
function
()
{
var
sConfig
=
''
;
for
(
var
o
in
this
.
Config
)
{
if
(
sConfig
.
length
>
0
)
sConfig
+=
'&'
;
sConfig
+=
encodeURIComponent
(
o
)
+
'='
+
encodeURIComponent
(
this
.
Config
[
o
]
)
;
}
return
'<input type="hidden" id="'
+
this
.
InstanceName
+
'___Config" value="'
+
sConfig
+
'" style="display:none" />'
;
}
FCKeditor
.
prototype
.
_GetIFrameHtml
=
function
()
{
var
sFile
=
'fckeditor.html'
;
try
{
if
(
(
/fcksource=true/i
).
test
(
window
.
top
.
location
.
search
)
)
sFile
=
'fckeditor.original.html'
;
}
catch
(
e
)
{
/* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */
}
var
sLink
=
this
.
BasePath
+
'editor/'
+
sFile
+
'?InstanceName='
+
encodeURIComponent
(
this
.
InstanceName
)
;
if
(
this
.
ToolbarSet
)
sLink
+=
'&Toolbar='
+
this
.
ToolbarSet
;
return
'<iframe id="'
+
this
.
InstanceName
+
'___Frame" src="'
+
sLink
+
'" width="'
+
this
.
Width
+
'" height="'
+
this
.
Height
+
'" frameborder="0" scrolling="no"></iframe>'
;
}
FCKeditor
.
prototype
.
_IsCompatibleBrowser
=
function
()
{
return
FCKeditor_IsCompatibleBrowser
(
this
.
EnableSafari
,
this
.
EnableOpera
)
;
}
FCKeditor
.
prototype
.
_ThrowError
=
function
(
errorNumber
,
errorDescription
)
{
this
.
ErrorNumber
=
errorNumber
;
this
.
ErrorDescription
=
errorDescription
;
if
(
this
.
DisplayErrors
)
{
document
.
write
(
'<div style="COLOR: #ff0000">'
)
;
document
.
write
(
'[ FCKeditor Error '
+
this
.
ErrorNumber
+
': '
+
this
.
ErrorDescription
+
' ]'
)
;
document
.
write
(
'</div>'
)
;
}
if
(
typeof
(
this
.
OnError
)
==
'function'
)
this
.
OnError
(
this
,
errorNumber
,
errorDescription
)
;
}
FCKeditor
.
prototype
.
_HTMLEncode
=
function
(
text
)
{
if
(
typeof
(
text
)
!=
"string"
)
text
=
text
.
toString
()
;
text
=
text
.
replace
(
/&/g
,
"&"
).
replace
(
/"/g
,
"""
).
replace
(
/</g
,
"<"
).
replace
(
/>/g
,
">"
)
;
return
text
;
}
function
FCKeditor_IsCompatibleBrowser
(
enableSafari
,
enableOpera
)
{
var
sAgent
=
navigator
.
userAgent
.
toLowerCase
()
;
// Internet Explorer
if
(
sAgent
.
indexOf
(
"msie"
)
!=
-
1
&&
sAgent
.
indexOf
(
"mac"
)
==
-
1
&&
sAgent
.
indexOf
(
"opera"
)
==
-
1
)
{
var
sBrowserVersion
=
navigator
.
appVersion
.
match
(
/MSIE (.\..)/
)[
1
]
;
return
(
sBrowserVersion
>=
5.5
)
;
}
// Gecko (Opera 9 tries to behave like Gecko at this point).
if
(
navigator
.
product
==
"Gecko"
&&
navigator
.
productSub
>=
20030210
&&
!
(
typeof
(
opera
)
==
'object'
&&
opera
.
postError
)
)
return
true
;
// Opera
if
(
enableOpera
&&
navigator
.
appName
==
'Opera'
&&
parseInt
(
navigator
.
appVersion
,
10
)
>=
9
)
return
true
;
// Safari
if
(
enableSafari
&&
sAgent
.
indexOf
(
'safari'
)
!=
-
1
)
return
(
sAgent
.
match
(
/safari\/(\d+)/
)[
1
]
>=
312
)
;
// Build must be at least 312 (1.3)
return
false
;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 20:21 (2 h, 33 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
22334
Default Alt Text
fckeditor.js (6 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment