Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 1687 → Rev 1688

/branches/livraison_aha/api/fckeditor/editor/dialog/fck_image/fck_image.js
New file
0,0 → 1,477
/*
* FCKeditor - The text editor for internet
* Copyright (C) 2003-2006 Frederico Caldeira Knabben
*
* Licensed under the terms of the GNU Lesser General Public License:
* http://www.opensource.org/licenses/lgpl-license.php
*
* For further information visit:
* http://www.fckeditor.net/
*
* "Support Open Source software. What about a donation today?"
*
* File Name: fck_image.js
* Scripts related to the Image dialog window (see fck_image.html).
*
* File Authors:
* Frederico Caldeira Knabben (fredck@fckeditor.net)
*/
 
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 aMatch = oImage.style.width.match( regexSize ) ;
if ( aMatch )
{
iWidth = aMatch[1] ;
oImage.style.width = '' ;
}
}
 
if ( oImage.style.height )
{
var aMatch = oImage.style.height.match( regexSize ) ;
if ( aMatch )
{
iHeight = aMatch[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('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
GetE('txtLongDesc').value = oImage.longDesc ;
 
if ( oEditor.FCKBrowserInfo.IsIE )
GetE('txtAttStyle').value = oImage.style.cssText ;
else
GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
 
if ( oLink )
{
var sUrl = oLink.getAttribute( '_fcksavedurl' ) ;
if ( sUrl == null )
sUrl = oLink.getAttribute('href',2) ;
GetE('txtLnkUrl').value = sUrl ;
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 ;
}