summaryrefslogtreecommitdiff
path: root/httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js')
-rw-r--r--httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js512
1 files changed, 512 insertions, 0 deletions
diff --git a/httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js b/httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js
new file mode 100644
index 0000000..c341faa
--- /dev/null
+++ b/httemplate/elements/fckeditor/editor/dialog/fck_image/fck_image.js
@@ -0,0 +1,512 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 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+)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 )
+ {
+ 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 ;
+}