Вход Регистрация
Файл: 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 && 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 OnDialogTabChangetabCode )
{
    
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 
UpdateOriginalresetSize )
{
    if ( !
eImgPreview )
        return ;

    if ( 
GetE('txtUrl').value.length == )
    {
        
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.SetAutoSizetrue ) ;

    
// Activate the "OK" button.
    
dialog.SetOkButtontrue ) ;

    
SelectField'txtUrl' ) ;
}

function 
LoadSelection()
{
    if ( ! 
oImage ) return ;

    var 
sUrl oImage.getAttribute'_fcksavedurl' ) ;
    if ( 
sUrl == null )
        
sUrl GetAttributeoImage'src''' ) ;

    
GetE('txtUrl').value    sUrl ;
    
GetE('txtAlt').value    GetAttributeoImage'alt''' ) ;
    
GetE('txtVSpace').value    GetAttributeoImage'vspace''' ) ;
    
GetE('txtHSpace').value    GetAttributeoImage'hspace''' ) ;
    
GetE('txtBorder').value    GetAttributeoImage'border''' ) ;
    
GetE('cmbAlign').value    GetAttributeoImage'align''' ) ;

    var 
iWidthiHeight ;

    var 
regexSize = /^s*(d+)pxs*$/;

    if ( 
oImage.style.width )
    {
        var 
aMatchW  oImage.style.width.matchregexSize ) ;
        if ( 
aMatchW )
        {
            
iWidth aMatchW[1] ;
            
oImage.style.width '' ;
            
SetAttributeoImage'width' iWidth ) ;
        }
    }

    if ( 
oImage.style.height )
    {
        var 
aMatchH  oImage.style.height.matchregexSize ) ;
        if ( 
aMatchH )
        {
            
iHeight aMatchH[1] ;
            
oImage.style.height '' ;
            
SetAttributeoImage'height'iHeight ) ;
        }
    }

    
GetE('txtWidth').value    iWidth iWidth GetAttributeoImage"width"'' ) ;
    
GetE('txtHeight').value    iHeight iHeight GetAttributeoImage"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 == )
    {
        
dialog.SetSelectedTab'Info' ) ;
        
GetE('txtUrl').focus() ;

        
alertFCKLang.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.InsertElementoImage ) ;
        }
        else
            
oImage FCK.InsertElement'img' ) ;
    }

    
UpdateImageoImage ) ;

    var 
sLnkUrl GetE('txtLnkUrl').value.Trim() ;

    if ( 
sLnkUrl.length == )
    {
        if ( 
oLink )
            
FCK.ExecuteNamedCommand'Unlink' ) ;
    }
    else
    {
        if ( 
oLink )    // Modifying an existent link.
            
oLink.href sLnkUrl ;
        else            
// Creating a new link.
        
{
            if ( !
bHasImage )
                
oEditor.FCKSelection.SelectNodeoImage ) ;

            
oLink oEditor.FCK.CreateLinksLnkUrl )[0] ;

            if ( !
bHasImage )
            {
                
oEditor.FCKSelection.SelectNodeoLink ) ;
                
oEditor.FCKSelection.Collapsefalse ) ;
            }
        }

        
SetAttributeoLink'_fcksavedurl'sLnkUrl ) ;
        
SetAttributeoLink'target'GetE('cmbLnkTarget').value ) ;
    }

    return 
true ;
}

function 
UpdateImageeskipId )
{
    
e.src GetE('txtUrl').value ;
    
SetAttributee"_fcksavedurl"GetE('txtUrl').value ) ;
    
SetAttributee"alt"   GetE('txtAlt').value ) ;
    
SetAttributee"width" GetE('txtWidth').value ) ;
    
SetAttributee"height"GetE('txtHeight').value ) ;
    
SetAttributee"vspace"GetE('txtVSpace').value ) ;
    
SetAttributee"hspace"GetE('txtHSpace').value ) ;
    
SetAttributee"border"GetE('txtBorder').value ) ;
    
SetAttributee"align" GetE('cmbAlign').value ) ;

    
// Advances Attributes

    
if ( ! skipId )
        
SetAttributee'id'GetE('txtAttId').value ) ;

    
SetAttributee'dir'        GetE('cmbAttLangDir').value ) ;
    
SetAttributee'lang'        GetE('txtAttLangCode').value ) ;
    
SetAttributee'title'    GetE('txtAttTitle').value ) ;
    
SetAttributee'longDesc'    GetE('txtLongDesc').value ) ;

    if ( 
oEditor.FCKBrowserInfo.IsIE )
    {
        
e.className GetE('txtAttClasses').value ;
        
e.style.cssText GetE('txtAttStyle').value ;
    }
    else
    {
        
SetAttributee'class'    GetE('txtAttClasses').value ) ;
        
SetAttributee'style'GetE('txtAttStyle').value ) ;
    }
}

var 
eImgPreview ;
var 
eImgPreviewLink ;

function 
SetPreviewElementsimageElementlinkElement )
{
    
eImgPreview imageElement ;
    
eImgPreviewLink linkElement ;

    
UpdatePreview() ;
    
UpdateOriginal() ;

    
bPreviewInitialized true ;
}

function 
UpdatePreview()
{
    if ( !
eImgPreview || !eImgPreviewLink )
        return ;

    if ( 
GetE('txtUrl').value.length == )
        
eImgPreviewLink.style.display 'none' ;
    else
    {
        
UpdateImageeImgPreviewtrue ) ;

        if ( 
GetE('txtLnkUrl').value.Trim().length )
            
eImgPreviewLink.href 'javascript:void(null);' ;
        else
            
SetAttributeeImgPreviewLink'href''' ) ;

        
eImgPreviewLink.style.display '' ;
    }
}

var 
bLockRatio true ;

function 
SwitchLocklockButton )
{
    
bLockRatio = !bLockRatio ;
    
lockButton.className bLockRatio 'BtnLocked' 'BtnUnlocked' ;
    
lockButton.title bLockRatio 'Lock sizes' 'Unlock sizes' ;

    if ( 
bLockRatio )
    {
        if ( 
GetE('txtWidth').value.length )
            
OnSizeChanged'Width'GetE('txtWidth').value ) ;
        else
            
OnSizeChanged'Height'GetE('txtHeight').value ) ;
    }
}

// Fired when the width or height input texts change
function OnSizeChangeddimensionvalue )
{
    
// Verifies if the aspect ration has to be maintained
    
if ( oImageOriginal && bLockRatio )
    {
        var 
dimension == 'Width' GetE('txtHeight') : GetE('txtWidth') ;

        if ( 
value.length == || isNaNvalue ) )
        {
            
e.value '' ;
            return ;
        }

        if ( 
dimension == 'Width' )
            
value value == Math.roundoImageOriginal.height * ( value  oImageOriginal.width ) ) ;
        else
            
value value == Math.roundoImageOriginal.width  * ( value oImageOriginal.height ) ) ;

        if ( !
isNaNvalue ) )
            
e.value value ;
    }

    
UpdatePreview() ;
}

// Fired when the Reset Size button is clicked
function ResetSizes()
{
    if ( ! 
oImageOriginal ) return ;
    if ( 
oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
    {
        
setTimeoutResetSizes50 ) ;
        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 
OpenServerBrowsertypeurlwidthheight )
{
    
sActualBrowser type ;
    
OpenFileBrowserurlwidthheight ) ;
}

var 
sActualBrowser ;

function 
SetUrlurlwidthheightalt )
{
    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() ;
        
UpdateOriginaltrue ) ;
    }

    
dialog.SetSelectedTab'Info' ) ;
}

function 
OnUploadCompletederrorNumberfileUrlfileNamecustomMsg )
{
    
// Remove animation
    
window.parent.Throbber.Hide() ;
    
GetE'divUpload' ).style.display  '' ;

    switch ( 
errorNumber )
    {
        case 
:    // No errors
            
alert'Ваш файл был успешно загружен' ) ;
            break ;
        case 
:    // Custom error
            
alertcustomMsg ) ;
            return ;
        case 
101 :    // Custom warning
            
alertcustomMsg ) ;
            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 '' ;
    
SetUrlfileUrl ) ;
    
GetE('frmUpload').reset() ;
}

var 
oUploadAllowedExtRegex    = new RegExpFCKConfig.ImageUploadAllowedExtensions'i' ) ;
var 
oUploadDeniedExtRegex    = new RegExpFCKConfig.ImageUploadDeniedExtensions'i' ) ;

function 
CheckUpload()
{
    var 
sFile GetE('txtUploadFile').value ;

    if ( 
sFile.length == )
    {
        
alert'Please select a file to upload' ) ;
        return 
false ;
    }

    if ( ( 
FCKConfig.ImageUploadAllowedExtensions.length && !oUploadAllowedExtRegex.testsFile ) ) ||
        ( 
FCKConfig.ImageUploadDeniedExtensions.length && oUploadDeniedExtRegex.testsFile ) ) )
    {
        
OnUploadCompleted202 ) ;
        return 
false ;
    }

    
// Show animation
    
window.parent.Throbber.Show100 ) ;
    
GetE'divUpload' ).style.display  'none' ;

    return 
true ;
}
?>
Онлайн: 2
Реклама