Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F884420
fck_image.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
12 KB
Subscribers
None
fck_image.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 ==
*
* Scripts related to the Image dialog window (see fck_image.html).
*/
var
oEditor
=
window
.
parent
.
InnerDialogLoaded
()
;
var
FCK
=
oEditor
.
FCK
;
var
FCKLang
=
oEditor
.
FCKLang
;
var
FCKConfig
=
oEditor
.
FCKConfig
;
var
FCKDebug
=
oEditor
.
FCKDebug
;
var
bImageButton
=
(
document
.
location
.
search
.
length
>
0
&&
document
.
location
.
search
.
substr
(
1
)
==
'ImageButton'
)
;
//#### Dialog Tabs
// Set the dialog tabs.
window
.
parent
.
AddTab
(
'Info'
,
FCKLang
.
DlgImgInfoTab
)
;
if
(
!
bImageButton
&&
!
FCKConfig
.
ImageDlgHideLink
)
window
.
parent
.
AddTab
(
'Link'
,
FCKLang
.
DlgImgLinkTab
)
;
if
(
FCKConfig
.
ImageUpload
)
window
.
parent
.
AddTab
(
'Upload'
,
FCKLang
.
DlgLnkUpload
)
;
if
(
!
FCKConfig
.
ImageDlgHideAdvanced
)
window
.
parent
.
AddTab
(
'Advanced'
,
FCKLang
.
DlgAdvancedTag
)
;
// Function called when a dialog tag is selected.
function
OnDialogTabChange
(
tabCode
)
{
ShowE
(
'divInfo'
,
(
tabCode
==
'Info'
)
)
;
ShowE
(
'divLink'
,
(
tabCode
==
'Link'
)
)
;
ShowE
(
'divUpload'
,
(
tabCode
==
'Upload'
)
)
;
ShowE
(
'divAdvanced'
,
(
tabCode
==
'Advanced'
)
)
;
}
// Get the selected image (if available).
var
oImage
=
FCK
.
Selection
.
GetSelectedElement
()
;
if
(
oImage
&&
oImage
.
tagName
!=
'IMG'
&&
!
(
oImage
.
tagName
==
'INPUT'
&&
oImage
.
type
==
'image'
)
)
oImage
=
null
;
// Get the active link.
var
oLink
=
FCK
.
Selection
.
MoveToAncestorNode
(
'A'
)
;
var
oImageOriginal
;
function
UpdateOriginal
(
resetSize
)
{
if
(
!
eImgPreview
)
return
;
if
(
GetE
(
'txtUrl'
).
value
.
length
==
0
)
{
oImageOriginal
=
null
;
return
;
}
oImageOriginal
=
document
.
createElement
(
'IMG'
)
;
// new Image() ;
if
(
resetSize
)
{
oImageOriginal
.
onload
=
function
()
{
this
.
onload
=
null
;
ResetSizes
()
;
}
}
oImageOriginal
.
src
=
eImgPreview
.
src
;
}
var
bPreviewInitialized
;
window
.
onload
=
function
()
{
// Translate the dialog box texts.
oEditor
.
FCKLanguageManager
.
TranslatePage
(
document
)
;
GetE
(
'btnLockSizes'
).
title
=
FCKLang
.
DlgImgLockRatio
;
GetE
(
'btnResetSize'
).
title
=
FCKLang
.
DlgBtnResetSize
;
// Load the selected element information (if any).
LoadSelection
()
;
// Show/Hide the "Browse Server" button.
GetE
(
'tdBrowse'
).
style
.
display
=
FCKConfig
.
ImageBrowser
?
''
:
'none'
;
GetE
(
'divLnkBrowseServer'
).
style
.
display
=
FCKConfig
.
LinkBrowser
?
''
:
'none'
;
UpdateOriginal
()
;
// Set the actual uploader URL.
if
(
FCKConfig
.
ImageUpload
)
GetE
(
'frmUpload'
).
action
=
FCKConfig
.
ImageUploadURL
;
window
.
parent
.
SetAutoSize
(
true
)
;
// Activate the "OK" button.
window
.
parent
.
SetOkButton
(
true
)
;
}
function
LoadSelection
()
{
if
(
!
oImage
)
return
;
var
sUrl
=
oImage
.
getAttribute
(
'_fcksavedurl'
)
;
if
(
sUrl
==
null
)
sUrl
=
GetAttribute
(
oImage
,
'src'
,
''
)
;
GetE
(
'txtUrl'
).
value
=
sUrl
;
GetE
(
'txtAlt'
).
value
=
GetAttribute
(
oImage
,
'alt'
,
''
)
;
GetE
(
'txtVSpace'
).
value
=
GetAttribute
(
oImage
,
'vspace'
,
''
)
;
GetE
(
'txtHSpace'
).
value
=
GetAttribute
(
oImage
,
'hspace'
,
''
)
;
GetE
(
'txtBorder'
).
value
=
GetAttribute
(
oImage
,
'border'
,
''
)
;
GetE
(
'cmbAlign'
).
value
=
GetAttribute
(
oImage
,
'align'
,
''
)
;
var
iWidth
,
iHeight
;
var
regexSize
=
/^\s*(\d+)px\s*$/i
;
if
(
oImage
.
style
.
width
)
{
var
aMatchW
=
oImage
.
style
.
width
.
match
(
regexSize
)
;
if
(
aMatchW
)
{
iWidth
=
aMatchW
[
1
]
;
oImage
.
style
.
width
=
''
;
}
}
if
(
oImage
.
style
.
height
)
{
var
aMatchH
=
oImage
.
style
.
height
.
match
(
regexSize
)
;
if
(
aMatchH
)
{
iHeight
=
aMatchH
[
1
]
;
oImage
.
style
.
height
=
''
;
}
}
GetE
(
'txtWidth'
).
value
=
iWidth
?
iWidth
:
GetAttribute
(
oImage
,
"width"
,
''
)
;
GetE
(
'txtHeight'
).
value
=
iHeight
?
iHeight
:
GetAttribute
(
oImage
,
"height"
,
''
)
;
// Get Advances Attributes
GetE
(
'txtAttId'
).
value
=
oImage
.
id
;
GetE
(
'cmbAttLangDir'
).
value
=
oImage
.
dir
;
GetE
(
'txtAttLangCode'
).
value
=
oImage
.
lang
;
GetE
(
'txtAttTitle'
).
value
=
oImage
.
title
;
GetE
(
'txtLongDesc'
).
value
=
oImage
.
longDesc
;
if
(
oEditor
.
FCKBrowserInfo
.
IsIE
)
{
GetE
(
'txtAttClasses'
).
value
=
oImage
.
getAttribute
(
'className'
)
||
''
;
GetE
(
'txtAttStyle'
).
value
=
oImage
.
style
.
cssText
;
}
else
{
GetE
(
'txtAttClasses'
).
value
=
oImage
.
getAttribute
(
'class'
,
2
)
||
''
;
GetE
(
'txtAttStyle'
).
value
=
oImage
.
getAttribute
(
'style'
,
2
)
;
}
if
(
oLink
)
{
var
sLinkUrl
=
oLink
.
getAttribute
(
'_fcksavedurl'
)
;
if
(
sLinkUrl
==
null
)
sLinkUrl
=
oLink
.
getAttribute
(
'href'
,
2
)
;
GetE
(
'txtLnkUrl'
).
value
=
sLinkUrl
;
GetE
(
'cmbLnkTarget'
).
value
=
oLink
.
target
;
}
UpdatePreview
()
;
}
//#### The OK button was hit.
function
Ok
()
{
if
(
GetE
(
'txtUrl'
).
value
.
length
==
0
)
{
window
.
parent
.
SetSelectedTab
(
'Info'
)
;
GetE
(
'txtUrl'
).
focus
()
;
alert
(
FCKLang
.
DlgImgAlertUrl
)
;
return
false
;
}
var
bHasImage
=
(
oImage
!=
null
)
;
if
(
bHasImage
&&
bImageButton
&&
oImage
.
tagName
==
'IMG'
)
{
if
(
confirm
(
'Do you want to transform the selected image on a image button?'
)
)
oImage
=
null
;
}
else
if
(
bHasImage
&&
!
bImageButton
&&
oImage
.
tagName
==
'INPUT'
)
{
if
(
confirm
(
'Do you want to transform the selected image button on a simple image?'
)
)
oImage
=
null
;
}
if
(
!
bHasImage
)
{
if
(
bImageButton
)
{
oImage
=
FCK
.
EditorDocument
.
createElement
(
'INPUT'
)
;
oImage
.
type
=
'image'
;
oImage
=
FCK
.
InsertElementAndGetIt
(
oImage
)
;
}
else
oImage
=
FCK
.
CreateElement
(
'IMG'
)
;
}
else
oEditor
.
FCKUndo
.
SaveUndoStep
()
;
UpdateImage
(
oImage
)
;
var
sLnkUrl
=
GetE
(
'txtLnkUrl'
).
value
.
Trim
()
;
if
(
sLnkUrl
.
length
==
0
)
{
if
(
oLink
)
FCK
.
ExecuteNamedCommand
(
'Unlink'
)
;
}
else
{
if
(
oLink
)
// Modifying an existent link.
oLink
.
href
=
sLnkUrl
;
else
// Creating a new link.
{
if
(
!
bHasImage
)
oEditor
.
FCKSelection
.
SelectNode
(
oImage
)
;
oLink
=
oEditor
.
FCK
.
CreateLink
(
sLnkUrl
)
;
if
(
!
bHasImage
)
{
oEditor
.
FCKSelection
.
SelectNode
(
oLink
)
;
oEditor
.
FCKSelection
.
Collapse
(
false
)
;
}
}
SetAttribute
(
oLink
,
'_fcksavedurl'
,
sLnkUrl
)
;
SetAttribute
(
oLink
,
'target'
,
GetE
(
'cmbLnkTarget'
).
value
)
;
}
return
true
;
}
function
UpdateImage
(
e
,
skipId
)
{
e
.
src
=
GetE
(
'txtUrl'
).
value
;
SetAttribute
(
e
,
"_fcksavedurl"
,
GetE
(
'txtUrl'
).
value
)
;
SetAttribute
(
e
,
"alt"
,
GetE
(
'txtAlt'
).
value
)
;
SetAttribute
(
e
,
"width"
,
GetE
(
'txtWidth'
).
value
)
;
SetAttribute
(
e
,
"height"
,
GetE
(
'txtHeight'
).
value
)
;
SetAttribute
(
e
,
"vspace"
,
GetE
(
'txtVSpace'
).
value
)
;
SetAttribute
(
e
,
"hspace"
,
GetE
(
'txtHSpace'
).
value
)
;
SetAttribute
(
e
,
"border"
,
GetE
(
'txtBorder'
).
value
)
;
SetAttribute
(
e
,
"align"
,
GetE
(
'cmbAlign'
).
value
)
;
// Advances Attributes
if
(
!
skipId
)
SetAttribute
(
e
,
'id'
,
GetE
(
'txtAttId'
).
value
)
;
SetAttribute
(
e
,
'dir'
,
GetE
(
'cmbAttLangDir'
).
value
)
;
SetAttribute
(
e
,
'lang'
,
GetE
(
'txtAttLangCode'
).
value
)
;
SetAttribute
(
e
,
'title'
,
GetE
(
'txtAttTitle'
).
value
)
;
SetAttribute
(
e
,
'class'
,
GetE
(
'txtAttClasses'
).
value
)
;
SetAttribute
(
e
,
'longDesc'
,
GetE
(
'txtLongDesc'
).
value
)
;
if
(
oEditor
.
FCKBrowserInfo
.
IsIE
)
e
.
style
.
cssText
=
GetE
(
'txtAttStyle'
).
value
;
else
SetAttribute
(
e
,
'style'
,
GetE
(
'txtAttStyle'
).
value
)
;
}
var
eImgPreview
;
var
eImgPreviewLink
;
function
SetPreviewElements
(
imageElement
,
linkElement
)
{
eImgPreview
=
imageElement
;
eImgPreviewLink
=
linkElement
;
UpdatePreview
()
;
UpdateOriginal
()
;
bPreviewInitialized
=
true
;
}
function
UpdatePreview
()
{
if
(
!
eImgPreview
||
!
eImgPreviewLink
)
return
;
if
(
GetE
(
'txtUrl'
).
value
.
length
==
0
)
eImgPreviewLink
.
style
.
display
=
'none'
;
else
{
UpdateImage
(
eImgPreview
,
true
)
;
if
(
GetE
(
'txtLnkUrl'
).
value
.
Trim
().
length
>
0
)
eImgPreviewLink
.
href
=
'javascript:void(null);'
;
else
SetAttribute
(
eImgPreviewLink
,
'href'
,
''
)
;
eImgPreviewLink
.
style
.
display
=
''
;
}
}
var
bLockRatio
=
true
;
function
SwitchLock
(
lockButton
)
{
bLockRatio
=
!
bLockRatio
;
lockButton
.
className
=
bLockRatio
?
'BtnLocked'
:
'BtnUnlocked'
;
lockButton
.
title
=
bLockRatio
?
'Lock sizes'
:
'Unlock sizes'
;
if
(
bLockRatio
)
{
if
(
GetE
(
'txtWidth'
).
value
.
length
>
0
)
OnSizeChanged
(
'Width'
,
GetE
(
'txtWidth'
).
value
)
;
else
OnSizeChanged
(
'Height'
,
GetE
(
'txtHeight'
).
value
)
;
}
}
// Fired when the width or height input texts change
function
OnSizeChanged
(
dimension
,
value
)
{
// Verifies if the aspect ration has to be mantained
if
(
oImageOriginal
&&
bLockRatio
)
{
var
e
=
dimension
==
'Width'
?
GetE
(
'txtHeight'
)
:
GetE
(
'txtWidth'
)
;
if
(
value
.
length
==
0
||
isNaN
(
value
)
)
{
e
.
value
=
''
;
return
;
}
if
(
dimension
==
'Width'
)
value
=
value
==
0
?
0
:
Math
.
round
(
oImageOriginal
.
height
*
(
value
/
oImageOriginal
.
width
)
)
;
else
value
=
value
==
0
?
0
:
Math
.
round
(
oImageOriginal
.
width
*
(
value
/
oImageOriginal
.
height
)
)
;
if
(
!
isNaN
(
value
)
)
e
.
value
=
value
;
}
UpdatePreview
()
;
}
// Fired when the Reset Size button is clicked
function
ResetSizes
()
{
if
(
!
oImageOriginal
)
return
;
GetE
(
'txtWidth'
).
value
=
oImageOriginal
.
width
;
GetE
(
'txtHeight'
).
value
=
oImageOriginal
.
height
;
UpdatePreview
()
;
}
function
BrowseServer
()
{
OpenServerBrowser
(
'Image'
,
FCKConfig
.
ImageBrowserURL
,
FCKConfig
.
ImageBrowserWindowWidth
,
FCKConfig
.
ImageBrowserWindowHeight
)
;
}
function
LnkBrowseServer
()
{
OpenServerBrowser
(
'Link'
,
FCKConfig
.
LinkBrowserURL
,
FCKConfig
.
LinkBrowserWindowWidth
,
FCKConfig
.
LinkBrowserWindowHeight
)
;
}
function
OpenServerBrowser
(
type
,
url
,
width
,
height
)
{
sActualBrowser
=
type
;
OpenFileBrowser
(
url
,
width
,
height
)
;
}
var
sActualBrowser
;
function
SetUrl
(
url
,
width
,
height
,
alt
)
{
if
(
sActualBrowser
==
'Link'
)
{
GetE
(
'txtLnkUrl'
).
value
=
url
;
UpdatePreview
()
;
}
else
{
GetE
(
'txtUrl'
).
value
=
url
;
GetE
(
'txtWidth'
).
value
=
width
?
width
:
''
;
GetE
(
'txtHeight'
).
value
=
height
?
height
:
''
;
if
(
alt
)
GetE
(
'txtAlt'
).
value
=
alt
;
UpdatePreview
()
;
UpdateOriginal
(
true
)
;
}
window
.
parent
.
SetSelectedTab
(
'Info'
)
;
}
function
OnUploadCompleted
(
errorNumber
,
fileUrl
,
fileName
,
customMsg
)
{
switch
(
errorNumber
)
{
case
0
:
// No errors
alert
(
'Your file has been successfully uploaded'
)
;
break
;
case
1
:
// Custom error
alert
(
customMsg
)
;
return
;
case
101
:
// Custom warning
alert
(
customMsg
)
;
break
;
case
201
:
alert
(
'A file with the same name is already available. The uploaded file has been renamed to "'
+
fileName
+
'"'
)
;
break
;
case
202
:
alert
(
'Invalid file type'
)
;
return
;
case
203
:
alert
(
"Security error. You probably don't have enough permissions to upload. Please check your server."
)
;
return
;
default
:
alert
(
'Error on file upload. Error number: '
+
errorNumber
)
;
return
;
}
sActualBrowser
=
''
;
SetUrl
(
fileUrl
)
;
GetE
(
'frmUpload'
).
reset
()
;
}
var
oUploadAllowedExtRegex
=
new
RegExp
(
FCKConfig
.
ImageUploadAllowedExtensions
,
'i'
)
;
var
oUploadDeniedExtRegex
=
new
RegExp
(
FCKConfig
.
ImageUploadDeniedExtensions
,
'i'
)
;
function
CheckUpload
()
{
var
sFile
=
GetE
(
'txtUploadFile'
).
value
;
if
(
sFile
.
length
==
0
)
{
alert
(
'Please select a file to upload'
)
;
return
false
;
}
if
(
(
FCKConfig
.
ImageUploadAllowedExtensions
.
length
>
0
&&
!
oUploadAllowedExtRegex
.
test
(
sFile
)
)
||
(
FCKConfig
.
ImageUploadDeniedExtensions
.
length
>
0
&&
oUploadDeniedExtRegex
.
test
(
sFile
)
)
)
{
OnUploadCompleted
(
202
)
;
return
false
;
}
return
true
;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 10:25 (2 w, 3 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23519
Default Alt Text
fck_image.js (12 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment