+++ /dev/null
-/*\r
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben\r
- *\r
- * == BEGIN LICENSE ==\r
- *\r
- * Licensed under the terms of any of the following licenses at your\r
- * choice:\r
- *\r
- * - GNU General Public License Version 2 or later (the "GPL")\r
- * http://www.gnu.org/licenses/gpl.html\r
- *\r
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
- * http://www.gnu.org/licenses/lgpl.html\r
- *\r
- * - Mozilla Public License Version 1.1 or later (the "MPL")\r
- * http://www.mozilla.org/MPL/MPL-1.1.html\r
- *\r
- * == END LICENSE ==\r
- *\r
- * Scripts related to the Image dialog window (see fck_image.html).\r
- */\r
-\r
-var dialog = window.parent ;\r
-var oEditor = dialog.InnerDialogLoaded() ;\r
-var FCK = oEditor.FCK ;\r
-var FCKLang = oEditor.FCKLang ;\r
-var FCKConfig = oEditor.FCKConfig ;\r
-var FCKDebug = oEditor.FCKDebug ;\r
-var FCKTools = oEditor.FCKTools ;\r
-\r
-var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;\r
-\r
-//#### Dialog Tabs\r
-\r
-// Set the dialog tabs.\r
-dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;\r
-\r
-if ( !bImageButton && !FCKConfig.ImageDlgHideLink )\r
- dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;\r
-\r
-if ( FCKConfig.ImageUpload )\r
- dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;\r
-\r
-if ( !FCKConfig.ImageDlgHideAdvanced )\r
- dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;\r
-\r
-// Function called when a dialog tag is selected.\r
-function OnDialogTabChange( tabCode )\r
-{\r
- ShowE('divInfo' , ( tabCode == 'Info' ) ) ;\r
- ShowE('divLink' , ( tabCode == 'Link' ) ) ;\r
- ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;\r
- ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;\r
-}\r
-\r
-// Get the selected image (if available).\r
-var oImage = dialog.Selection.GetSelectedElement() ;\r
-\r
-if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )\r
- oImage = null ;\r
-\r
-// Get the active link.\r
-var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;\r
-\r
-var oImageOriginal ;\r
-\r
-function UpdateOriginal( resetSize )\r
-{\r
- if ( !eImgPreview )\r
- return ;\r
-\r
- if ( GetE('txtUrl').value.length == 0 )\r
- {\r
- oImageOriginal = null ;\r
- return ;\r
- }\r
-\r
- oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;\r
-\r
- if ( resetSize )\r
- {\r
- oImageOriginal.onload = function()\r
- {\r
- this.onload = null ;\r
- ResetSizes() ;\r
- }\r
- }\r
-\r
- oImageOriginal.src = eImgPreview.src ;\r
-}\r
-\r
-var bPreviewInitialized ;\r
-\r
-window.onload = function()\r
-{\r
- // Translate the dialog box texts.\r
- oEditor.FCKLanguageManager.TranslatePage(document) ;\r
-\r
- GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;\r
- GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;\r
-\r
- // Load the selected element information (if any).\r
- LoadSelection() ;\r
-\r
- // Show/Hide the "Browse Server" button.\r
- GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;\r
- GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;\r
-\r
- UpdateOriginal() ;\r
-\r
- // Set the actual uploader URL.\r
- if ( FCKConfig.ImageUpload )\r
- GetE('frmUpload').action = FCKConfig.ImageUploadURL ;\r
-\r
- dialog.SetAutoSize( true ) ;\r
-\r
- // Activate the "OK" button.\r
- dialog.SetOkButton( true ) ;\r
-\r
- SelectField( 'txtUrl' ) ;\r
-}\r
-\r
-function LoadSelection()\r
-{\r
- if ( ! oImage ) return ;\r
-\r
- var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;\r
- if ( sUrl == null )\r
- sUrl = GetAttribute( oImage, 'src', '' ) ;\r
-\r
- GetE('txtUrl').value = sUrl ;\r
- GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;\r
- GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;\r
- GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;\r
- GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;\r
- GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;\r
-\r
- var iWidth, iHeight ;\r
-\r
- var regexSize = /^\s*(\d+)px\s*$/i ;\r
-\r
- if ( oImage.style.width )\r
- {\r
- var aMatchW = oImage.style.width.match( regexSize ) ;\r
- if ( aMatchW )\r
- {\r
- iWidth = aMatchW[1] ;\r
- oImage.style.width = '' ;\r
- SetAttribute( oImage, 'width' , iWidth ) ;\r
- }\r
- }\r
-\r
- if ( oImage.style.height )\r
- {\r
- var aMatchH = oImage.style.height.match( regexSize ) ;\r
- if ( aMatchH )\r
- {\r
- iHeight = aMatchH[1] ;\r
- oImage.style.height = '' ;\r
- SetAttribute( oImage, 'height', iHeight ) ;\r
- }\r
- }\r
-\r
- GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;\r
- GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;\r
-\r
- // Get Advances Attributes\r
- GetE('txtAttId').value = oImage.id ;\r
- GetE('cmbAttLangDir').value = oImage.dir ;\r
- GetE('txtAttLangCode').value = oImage.lang ;\r
- GetE('txtAttTitle').value = oImage.title ;\r
- GetE('txtLongDesc').value = oImage.longDesc ;\r
-\r
- if ( oEditor.FCKBrowserInfo.IsIE )\r
- {\r
- GetE('txtAttClasses').value = oImage.className || '' ;\r
- GetE('txtAttStyle').value = oImage.style.cssText ;\r
- }\r
- else\r
- {\r
- GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;\r
- GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;\r
- }\r
-\r
- if ( oLink )\r
- {\r
- var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;\r
- if ( sLinkUrl == null )\r
- sLinkUrl = oLink.getAttribute('href',2) ;\r
-\r
- GetE('txtLnkUrl').value = sLinkUrl ;\r
- GetE('cmbLnkTarget').value = oLink.target ;\r
- }\r
-\r
- UpdatePreview() ;\r
-}\r
-\r
-//#### The OK button was hit.\r
-function Ok()\r
-{\r
- if ( GetE('txtUrl').value.length == 0 )\r
- {\r
- dialog.SetSelectedTab( 'Info' ) ;\r
- GetE('txtUrl').focus() ;\r
-\r
- alert( FCKLang.DlgImgAlertUrl ) ;\r
-\r
- return false ;\r
- }\r
-\r
- var bHasImage = ( oImage != null ) ;\r
-\r
- if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )\r
- {\r
- if ( confirm( 'Do you want to transform the selected image on a image button?' ) )\r
- oImage = null ;\r
- }\r
- else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )\r
- {\r
- if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )\r
- oImage = null ;\r
- }\r
-\r
- oEditor.FCKUndo.SaveUndoStep() ;\r
- if ( !bHasImage )\r
- {\r
- if ( bImageButton )\r
- {\r
- oImage = FCK.EditorDocument.createElement( 'input' ) ;\r
- oImage.type = 'image' ;\r
- oImage = FCK.InsertElement( oImage ) ;\r
- }\r
- else\r
- oImage = FCK.InsertElement( 'img' ) ;\r
- }\r
-\r
- UpdateImage( oImage ) ;\r
-\r
- var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;\r
-\r
- if ( sLnkUrl.length == 0 )\r
- {\r
- if ( oLink )\r
- FCK.ExecuteNamedCommand( 'Unlink' ) ;\r
- }\r
- else\r
- {\r
- if ( oLink ) // Modifying an existent link.\r
- oLink.href = sLnkUrl ;\r
- else // Creating a new link.\r
- {\r
- if ( !bHasImage )\r
- oEditor.FCKSelection.SelectNode( oImage ) ;\r
-\r
- oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;\r
-\r
- if ( !bHasImage )\r
- {\r
- oEditor.FCKSelection.SelectNode( oLink ) ;\r
- oEditor.FCKSelection.Collapse( false ) ;\r
- }\r
- }\r
-\r
- SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;\r
- SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;\r
- }\r
-\r
- return true ;\r
-}\r
-\r
-function UpdateImage( e, skipId )\r
-{\r
- e.src = GetE('txtUrl').value ;\r
- SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;\r
- SetAttribute( e, "alt" , GetE('txtAlt').value ) ;\r
- SetAttribute( e, "width" , GetE('txtWidth').value ) ;\r
- SetAttribute( e, "height", GetE('txtHeight').value ) ;\r
- SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;\r
- SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;\r
- SetAttribute( e, "border", GetE('txtBorder').value ) ;\r
- SetAttribute( e, "align" , GetE('cmbAlign').value ) ;\r
-\r
- // Advances Attributes\r
-\r
- if ( ! skipId )\r
- SetAttribute( e, 'id', GetE('txtAttId').value ) ;\r
-\r
- SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;\r
- SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;\r
- SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;\r
- SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;\r
-\r
- if ( oEditor.FCKBrowserInfo.IsIE )\r
- {\r
- e.className = GetE('txtAttClasses').value ;\r
- e.style.cssText = GetE('txtAttStyle').value ;\r
- }\r
- else\r
- {\r
- SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;\r
- SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;\r
- }\r
-}\r
-\r
-var eImgPreview ;\r
-var eImgPreviewLink ;\r
-\r
-function SetPreviewElements( imageElement, linkElement )\r
-{\r
- eImgPreview = imageElement ;\r
- eImgPreviewLink = linkElement ;\r
-\r
- UpdatePreview() ;\r
- UpdateOriginal() ;\r
-\r
- bPreviewInitialized = true ;\r
-}\r
-\r
-function UpdatePreview()\r
-{\r
- if ( !eImgPreview || !eImgPreviewLink )\r
- return ;\r
-\r
- if ( GetE('txtUrl').value.length == 0 )\r
- eImgPreviewLink.style.display = 'none' ;\r
- else\r
- {\r
- UpdateImage( eImgPreview, true ) ;\r
-\r
- if ( GetE('txtLnkUrl').value.Trim().length > 0 )\r
- eImgPreviewLink.href = 'javascript:void(null);' ;\r
- else\r
- SetAttribute( eImgPreviewLink, 'href', '' ) ;\r
-\r
- eImgPreviewLink.style.display = '' ;\r
- }\r
-}\r
-\r
-var bLockRatio = true ;\r
-\r
-function SwitchLock( lockButton )\r
-{\r
- bLockRatio = !bLockRatio ;\r
- lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;\r
- lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;\r
-\r
- if ( bLockRatio )\r
- {\r
- if ( GetE('txtWidth').value.length > 0 )\r
- OnSizeChanged( 'Width', GetE('txtWidth').value ) ;\r
- else\r
- OnSizeChanged( 'Height', GetE('txtHeight').value ) ;\r
- }\r
-}\r
-\r
-// Fired when the width or height input texts change\r
-function OnSizeChanged( dimension, value )\r
-{\r
- // Verifies if the aspect ration has to be maintained\r
- if ( oImageOriginal && bLockRatio )\r
- {\r
- var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;\r
-\r
- if ( value.length == 0 || isNaN( value ) )\r
- {\r
- e.value = '' ;\r
- return ;\r
- }\r
-\r
- if ( dimension == 'Width' )\r
- value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ;\r
- else\r
- value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ;\r
-\r
- if ( !isNaN( value ) )\r
- e.value = value ;\r
- }\r
-\r
- UpdatePreview() ;\r
-}\r
-\r
-// Fired when the Reset Size button is clicked\r
-function ResetSizes()\r
-{\r
- if ( ! oImageOriginal ) return ;\r
- if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )\r
- {\r
- setTimeout( ResetSizes, 50 ) ;\r
- return ;\r
- }\r
-\r
- GetE('txtWidth').value = oImageOriginal.width ;\r
- GetE('txtHeight').value = oImageOriginal.height ;\r
-\r
- UpdatePreview() ;\r
-}\r
-\r
-function BrowseServer()\r
-{\r
- OpenServerBrowser(\r
- 'Image',\r
- FCKConfig.ImageBrowserURL,\r
- FCKConfig.ImageBrowserWindowWidth,\r
- FCKConfig.ImageBrowserWindowHeight ) ;\r
-}\r
-\r
-function LnkBrowseServer()\r
-{\r
- OpenServerBrowser(\r
- 'Link',\r
- FCKConfig.LinkBrowserURL,\r
- FCKConfig.LinkBrowserWindowWidth,\r
- FCKConfig.LinkBrowserWindowHeight ) ;\r
-}\r
-\r
-function OpenServerBrowser( type, url, width, height )\r
-{\r
- sActualBrowser = type ;\r
- OpenFileBrowser( url, width, height ) ;\r
-}\r
-\r
-var sActualBrowser ;\r
-\r
-function SetUrl( url, width, height, alt )\r
-{\r
- if ( sActualBrowser == 'Link' )\r
- {\r
- GetE('txtLnkUrl').value = url ;\r
- UpdatePreview() ;\r
- }\r
- else\r
- {\r
- GetE('txtUrl').value = url ;\r
- GetE('txtWidth').value = width ? width : '' ;\r
- GetE('txtHeight').value = height ? height : '' ;\r
-\r
- if ( alt )\r
- GetE('txtAlt').value = alt;\r
-\r
- UpdatePreview() ;\r
- UpdateOriginal( true ) ;\r
- }\r
-\r
- dialog.SetSelectedTab( 'Info' ) ;\r
-}\r
-\r
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )\r
-{\r
- // Remove animation\r
- window.parent.Throbber.Hide() ;\r
- GetE( 'divUpload' ).style.display = '' ;\r
-\r
- switch ( errorNumber )\r
- {\r
- case 0 : // No errors\r
- alert( 'Your file has been successfully uploaded' ) ;\r
- break ;\r
- case 1 : // Custom error\r
- alert( customMsg ) ;\r
- return ;\r
- case 101 : // Custom warning\r
- alert( customMsg ) ;\r
- break ;\r
- case 201 :\r
- alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;\r
- break ;\r
- case 202 :\r
- alert( 'Invalid file type' ) ;\r
- return ;\r
- case 203 :\r
- alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;\r
- return ;\r
- case 500 :\r
- alert( 'The connector is disabled' ) ;\r
- break ;\r
- default :\r
- alert( 'Error on file upload. Error number: ' + errorNumber ) ;\r
- return ;\r
- }\r
-\r
- sActualBrowser = '' ;\r
- SetUrl( fileUrl ) ;\r
- GetE('frmUpload').reset() ;\r
-}\r
-\r
-var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;\r
-var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;\r
-\r
-function CheckUpload()\r
-{\r
- var sFile = GetE('txtUploadFile').value ;\r
-\r
- if ( sFile.length == 0 )\r
- {\r
- alert( 'Please select a file to upload' ) ;\r
- return false ;\r
- }\r
-\r
- if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||\r
- ( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )\r
- {\r
- OnUploadCompleted( 202 ) ;\r
- return false ;\r
- }\r
-\r
- // Show animation\r
- window.parent.Throbber.Show( 100 ) ;\r
- GetE( 'divUpload' ).style.display = 'none' ;\r
-\r
- return true ;\r
-}\r