Page MenuHomeIn-Portal Phabricator

fck_image.js
No OneTemporary

File Metadata

Created
Sun, Mar 9, 7:42 PM

fck_image.js

/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2008 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 dialog = window.parent ;
var oEditor = dialog.InnerDialogLoaded() ;
var FCK = oEditor.FCK ;
var FCKLang = oEditor.FCKLang ;
var FCKConfig = oEditor.FCKConfig ;
var FCKDebug = oEditor.FCKDebug ;
var FCKTools = oEditor.FCKTools ;
var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
//#### Dialog Tabs
// Set the dialog tabs.
dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
if ( !bImageButton && !FCKConfig.ImageDlgHideLink ) {
dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
}
/*if ( FCKConfig.ImageUpload )
dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
if ( !FCKConfig.ImageDlgHideAdvanced )
dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
*/
// Function called when a dialog tag is selected.
function OnDialogTabChange( tabCode )
{
ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
if (tabCode == 'Link') {
if (ValidateUrl()) {
if (!window.parent.parentData) {
window.parent.parentData = new Array();
}
window.parent.parentData['imageTxtUrl'] = GetE('txtUrl').value;
window.parent.parentData['imageTxtAlt'] = GetE('txtAlt').value;
window.parent.parentData['imageTxtVSpace'] = GetE('txtVSpace').value;
window.parent.parentData['imageTxtHSpace'] = GetE('txtHSpace').value;
window.parent.parentData['imageTxtBorder'] = GetE('txtBorder').value;
window.parent.parentData['imageCmbAlign'] = GetE('cmbAlign').value;
window.parent.parentData['imageTxtWidth'] = GetE('txtWidth').value;
window.parent.parentData['imageTxtHeight'] = GetE('txtHeight').value;
window.parent.document.getElementById('TitleArea').innerHTML = oEditor.FCKLang.DlgLnkWindowTitle;
window.location.href = '../editor/plugins/MyLink/fck_link.html?from';
} else {
window.parent.document.getElementById('TitleArea').innerHTML = oEditor.FCKLang.DlgImgTitle;
}
//ShowE('divLink' , ( tabCode == 'Link' ) ) ;
} else {
window.location.href = '../editor/plugins/MyImage/fck_image.html?from';
}
// ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
// ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
}
function ValidateUrl()
{
if ( GetE('txtUrl').value.length == 0 )
{
window.parent.SetSelectedTab( 'Info' ) ;
GetE('txtUrl').focus() ;
alert( oEditor.FCKLang.DlgImgAlertUrl ) ;
return false ;
} else
return true;
}
// Get the selected image (if available).
var oImage = dialog.Selection.GetSelectedElement() ;
if (window.location.search.substr(1) == 'from' || window.location.search.substr(1) == 'create') {
oImage = dialog.Selection.GetSelection().MoveToAncestorNode( 'IMG' ) ;
}
if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
oImage = null ;
// Get the active link.
var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
//alert('oLink -> ' + oLink);
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 ;
dialog.SetAutoSize( true ) ;
// Activate the "OK" button.
dialog.SetOkButton( true ) ;
SelectField( 'txtUrl' ) ;
if (window.location.search.substr(1) == 'create') {
window.parent.Ok()
window.parent.close()
}
}
function CreateMyLink()
{
var txtAlt = '';
var sHRef = window.parent.parentData['linkTxtUrl'];
if (window.parent.parentData['linkTxtAlt'])
txtAlt = window.parent.parentData['linkTxtAlt'];
var sType = window.parent.parentData['linkType'];
var sTarget = window.parent.parentData['linkCmbTarget'];
var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
if ( oLink ) {
FCK.Selection.MoveToNode( oLink ) ;
if ( oLink )
oLink.href = sHRef ;
else
{
oLink = oEditor.FCK.CreateLink( sHRef ) ;
if ( ! oLink ) {
return true ;
}
}
if( sTarget != 'popup' )
SetAttribute( oLink, 'target', sTarget) ;
else
SetAttribute( oLink, 'target', null ) ;
if (txtAlt) {
SetAttribute( oLink, 'alt', txtAlt) ;
SetAttribute( oLink, 'title', txtAlt) ;
}
SetAttribute( oLink, 'label', sType);
return true;
} else {
var insert = '<a label="'+sType+'" alt="'+txtAlt+'" title="'+txtAlt+'" href="'+sHRef+'"><img src="'+GetE('imgPreview').src+'" '+GetData('alt','txtAlt')+' '+GetData('width','txtWidth')+' '+GetData('height','txtHeight')+' '+GetData('vspace','txtVSpace')+' '+GetData('hspace','txtHSpace')+' '+GetData('border','txtBorder')+' '+GetData('align','cmbAlign')+' label="'+label+'"></a>';
oEditor.FCK.InsertHtml(insert);
}
}
function LoadSelection()
{
var sUrl = '';
if (window.parent.parentData)
{
if (window.parent.parentData['imageTxtUrl'])
{
sUrl = window.parent.parentData['imageTxtUrl'];
GetE('txtUrl').value = window.parent.parentData['imageTxtUrl'];
GetE('txtAlt').value = window.parent.parentData['imageTxtAlt'];
GetE('txtVSpace').value = window.parent.parentData['imageTxtVSpace'];
GetE('txtHSpace').value = window.parent.parentData['imageTxtHSpace'];
GetE('txtBorder').value = window.parent.parentData['imageTxtBorder'];
GetE('cmbAlign').value = window.parent.parentData['imageCmbAlign'];
GetE('txtWidth').value = window.parent.parentData['imageTxtWidth'];
GetE('txtHeight').value = window.parent.parentData['imageTxtHeight'];
UpdatePreview() ;
}
}
if ( ! oImage ) return ;
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 = '' ;
SetAttribute( oImage, 'width' , iWidth ) ;
}
}
if ( oImage.style.height )
{
var aMatchH = oImage.style.height.match( regexSize ) ;
if ( aMatchH )
{
iHeight = aMatchH[1] ;
oImage.style.height = '' ;
SetAttribute( oImage, 'height', iHeight ) ;
}
}
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.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 )
{
dialog.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 ;
}
*/
oEditor.FCKUndo.SaveUndoStep() ;
if ( !bHasImage )
{
oImage = FCK.InsertElement( 'img' ) ;
}
UpdateImage( oImage ) ;
/* if (window.location.search.substr(1) == 'create') {
return CreateMyLink();
} else
return true ;
*/
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 )[0] ;
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, 'longDesc' , GetE('txtLongDesc').value ) ;
if ( oEditor.FCKBrowserInfo.IsIE )
{
e.className = GetE('txtAttClasses').value ;
e.style.cssText = GetE('txtAttStyle').value ;
}
else
{
SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
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 maintained
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 ;
if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
{
setTimeout( ResetSizes, 50 ) ;
return ;
}
GetE('txtWidth').value = oImageOriginal.width ;
GetE('txtHeight').value = oImageOriginal.height ;
UpdatePreview() ;
}
function BrowseServer()
{
OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
}
function LnkBrowseServer()
{
alert('LnkBrowseServer');
}
function OpenServerBrowser( type, url, width, height )
{
sActualBrowser = type ;
OpenFileBrowser( url, width, height ) ;
}
var sActualBrowser ;
function SetUrl( url, width, height, alt, size )
{
if ( sActualBrowser == 'Link' )
{
GetE('txtLnkUrl').value = url ;
UpdatePreview() ;
}
else
{
GetE('txtUrl').value = url ;
GetE('txtWidth').value = width ? width : '' ;
GetE('txtHeight').value = height ? height : '' ;
GetE('txtBorder').value = 0 ;
if ( alt )
GetE('txtAlt').value = alt;
UpdatePreview() ;
UpdateOriginal( true ) ;
}
// dialog.SetSelectedTab( 'Info' ) ;
}
function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
{
// Remove animation
window.parent.Throbber.Hide() ;
GetE( 'divUpload' ).style.display = '' ;
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 ;
case 500 :
alert( 'The connector is disabled' ) ;
break ;
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 ;
}
// Show animation
window.parent.Throbber.Show( 100 ) ;
GetE( 'divUpload' ).style.display = 'none' ;
return true ;
}

Event Timeline