fck_image.js
上传用户:dbstep
上传日期:2022-08-06
资源大小:2803k
文件大小:13k
- /*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 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' ) ) ;
- ShowE('divLink' , ( tabCode == 'Link' ) ) ;
- ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
- ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
- }
- // Get the selected image (if available).
- var oImage = dialog.Selection.GetSelectedElement() ;
- if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
- oImage = null ;
- // Get the active link.
- var oLink = dialog.Selection.GetSelection().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 ;
- dialog.SetAutoSize( true ) ;
- // Activate the "OK" button.
- dialog.SetOkButton( true ) ;
- SelectField( 'txtUrl' ) ;
- }
- 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+)pxs*$/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 )
- {
- if ( bImageButton )
- {
- oImage = FCK.EditorDocument.createElement( 'input' ) ;
- oImage.type = 'image' ;
- oImage = FCK.InsertElement( oImage ) ;
- }
- else
- oImage = FCK.InsertElement( 'img' ) ;
- }
- 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 )[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()
- {
- 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 ) ;
- }
- 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 ;
- }