Вход Регистрация
Файл: plugins/p_fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js
Строк: 386
<?php
/*
 * 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+)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( 'Ваш файл был успешно загружен' ) ;
            break ;
        case 
1 :    // Custom error
            
alert( customMsg ) ;
            return ;
        case 
101 :    // Custom warning
            
alert( customMsg ) ;
            break ;
        case 
201 :
            
alert( 'Файл с таким именем уже имеется в наличии. Загруженный файл был переименован в"' + fileName + '"' ) ;
            break ;
        case 
202 :
            
alert( 'Неверный тип файла' ) ;
            return ;
        case 
203 :
            
alert( "Ошибка безопасности. Вам, возможно, не хватает разрешения для загрузки. Пожалуйста, проверьте настройки сервера" ) ;
            return ;
        case 
500 :
            
alert( 'The connector is disabled' ) ;
            break ;
        default :
            
alert( 'Ошибка при загрузке файла. Ошибка номер: ' + 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 ;
}
?>
Онлайн: 3
Реклама