Вход Регистрация
Файл: public/fck/editor/dialog/fck_link/fck_link.js
Строк: 440
<?php

/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2004 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 *         http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 *         http://www.fckeditor.net/
 * 
 * File Name: fck_link.js
 *     Scripts related to the Link dialog window (see fck_link.html).
 * 
 * Version:  2.0 RC3
 * Modified: 2005-02-09 13:53:13
 * 
 * File Authors:
 *         Frederico Caldeira Knabben (fredck@fckeditor.net)
 */

var oEditor window.parent.InnerDialogLoaded() ;
var 
FCK        oEditor.FCK ;
var 
FCKLang    oEditor.FCKLang ;

//#### Dialog Tabs

// Set the dialog tabs.
window.parent.AddTab'Info'FCKLang.DlgLnkInfoTab ) ;
window.parent.AddTab'Target'FCKLang.DlgLnkTargetTabtrue ) ;
// TODO : Enable File Upload (1/3).
//window.parent.AddTab( 'Upload', 'Upload', true ) ;
window.parent.AddTab'Advanced'FCKLang.DlgAdvancedTag ) ;

// Function called when a dialog tag is selected.
function OnDialogTabChangetabCode )
{
    
ShowE('divInfo'        , ( tabCode == 'Info' ) ) ;
    
ShowE('divTarget'    , ( tabCode == 'Target' ) ) ;
// TODO : Enable File Upload (2/3).
//    ShowE('divUpload'    , ( tabCode == 'Upload' ) ) ;
    
ShowE('divAttribs'    , ( tabCode == 'Advanced' ) ) ;
}

//#### Regular Expressions library.
var oRegex = new Object() ;

oRegex.UriProtocol = new RegExp('') ;
oRegex.UriProtocol.compile'^(((http|https|ftp|news)://)|mailto:)''gi' ) ;

oRegex.UrlOnChangeProtocol = new RegExp('') ;
oRegex.UrlOnChangeProtocol.compile'^(http|https|ftp|news)://(?=.)''gi' ) ;

oRegex.UrlOnChangeTestOther = new RegExp('') ;
oRegex.UrlOnChangeTestOther.compile'^(javascript:|#|/)''gi' ) ;

oRegex.ReserveTarget = new RegExp('') ;
oRegex.ReserveTarget.compile'^_(blank|self|top|parent)$''i' ) ;

oRegex.PopupUri = new RegExp('') ;
oRegex.PopupUri.compile"^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$" ) ;

oRegex.PopupFeatures = new RegExp('') ;
oRegex.PopupFeatures.compile'(?:^|,)([^=]+)=(\d+|yes|no)''gi' ) ;

//#### Parser Functions

var oParser = new Object() ;

oParser.ParseEMailUrl = function( emailUrl )
{
    
// Initializes the EMailInfo object.
    
var oEMailInfo = new Object() ;
    
oEMailInfo.Address    '' ;
    
oEMailInfo.Subject    '' ;
    
oEMailInfo.Body        '' ;

    var 
oParts emailUrl.match( /^([^?]+)??(.+)?/ ) ;
    if ( 
oParts )
    {
        
// Set the e-mail address.
        
oEMailInfo.Address oParts[1] ;

        
// Look for the optional e-mail parameters.
        
if ( oParts[2] )
        {
            var 
oMatch oParts[2].match( /(^|&)subject=([^&]+)/) ;
            if ( 
oMatch oEMailInfo.Subject unescapeoMatch[2] ) ;

            
oMatch oParts[2].match( /(^|&)body=([^&]+)/) ;
            if ( 
oMatch oEMailInfo.Body unescapeoMatch[2] ) ;
        }
    }

    return 
oEMailInfo ;
}

oParser.CreateEMailUri = function( addresssubjectbody )
{
    var 
sBaseUri 'mailto:' address ;

    var 
sParams '' ;

    if ( 
subject.length )
        
sParams '?subject=' escapesubject ) ;

    if ( 
body.length )
    {
        
sParams += ( sParams.length == '?' '&' ) ;
        
sParams += 'body=' escapebody ) ;
    }

    return 
sBaseUri sParams ;
}

//#### Initialization Code

// oLink: The actual selected link in the editor.
var oLink FCK.Selection.MoveToAncestorNode'A' ) ;
if ( 
oLink )
    
FCK.Selection.MoveToNodeoLink ) ;

window.onload = function()
{
    
// Translate the dialog box texts.
    
oEditor.FCKLanguageManager.TranslatePage(document) ;

    
// Fill the Anchor Names and Ids combos.
    
LoadAnchorNamesAndIds() ;

    
// Load the selected link information (if any).
    
LoadSelection() ;

    
// Update the dialog box.
    
SetLinkTypeGetE('cmbLinkType').value ) ;

    
// Show/Hide the "Browse Server" button.
    
GetE('divBrowseServer').style.display oEditor.FCKConfig.LinkBrowser '' 'none' ;

    
// Show the initial dialog content.
    
GetE('divInfo').style.display '' ;

    
// Activate the "OK" button.
    
window.parent.SetOkButtontrue ) ;
}

var 
bHasAnchors ;

function 
LoadAnchorNamesAndIds()
{
    var 
aAnchors    oEditor.FCK.EditorDocument.anchors ;
    var 
aIds        oEditor.FCKTools.GetAllChildrenIdsoEditor.FCK.EditorDocument.body ) ;

    
bHasAnchors = ( aAnchors.length || aIds.length ) ;

    for ( var 
aAnchors.length i++ )
    {
        var 
sName aAnchors[i].name ;
        if ( 
sName && sName.length )
            
oEditor.FCKTools.AddSelectOptiondocumentGetE('cmbAnchorName'), sNamesName ) ;
    }

    for ( var 
aIds.length i++ )
    {
        
oEditor.FCKTools.AddSelectOptiondocumentGetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
    }

    
ShowE'divSelAnchor'    bHasAnchors ) ;
    
ShowE'divNoAnchor'    , !bHasAnchors ) ;
}

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

    var 
sType 'url' ;

    
// Get the actual Link href.
    
var sHRef oLink.getAttribute('href',2) + '' ;

    
// TODO: Wait stable version and remove the following commented lines.
//    if ( sHRef.startsWith( FCK.BaseUrl ) )
//        sHRef = sHRef.remove( 0, FCK.BaseUrl.length ) ;

    // Look for a popup javascript link.
    
var oPopupMatch oRegex.PopupUri.execsHRef ) ;
    if( 
oPopupMatch )
    {
        
GetE('cmbTarget').value 'popup' ;
        
sHRef oPopupMatch[1] ;
        
FillPopupFieldsoPopupMatch[2], oPopupMatch[3] ) ;
        
SetTarget'popup' ) ;
    }

    
// Search for the protocol.
    
var sProtocol oRegex.UriProtocol.execsHRef ) ;

    if ( 
sProtocol )
    {
        
sProtocol sProtocol[0].toLowerCase() ;
        
GetE('cmbLinkProtocol').value sProtocol ;

        
// Remove the protocol and get the remainig URL.
        
var sUrl sHRef.replaceoRegex.UriProtocol'' ) ;

        if ( 
sProtocol == 'mailto:' )    // It is an e-mail link.
        
{
            
sType 'email' ;

            var 
oEMailInfo oParser.ParseEMailUrlsUrl ) ;
            
GetE('txtEMailAddress').value    oEMailInfo.Address ;
            
GetE('txtEMailSubject').value    oEMailInfo.Subject ;
            
GetE('txtEMailBody').value        oEMailInfo.Body ;
        }
        else                
// It is a normal link.
        
{
            
sType 'url' ;
            
GetE('txtUrl').value sUrl ;
        }
    }
    else if ( 
sHRef.substr(0,1) == '#' && sHRef.length )    // It is an anchor link.
    
{
        
sType 'anchor' ;
        
GetE('cmbAnchorName').value GetE('cmbAnchorId').value sHRef.substr(1) ;
    }
    else                    
// It is another type of link.
    
{
        
sType 'url' ;

        
GetE('cmbLinkProtocol').value '' ;
        
GetE('txtUrl').value sHRef ;
    }

    if ( !
oPopupMatch )
    {
        
// Get the target.
        
var sTarget oLink.target ;

        if ( 
sTarget && sTarget.length )
        {
            if ( 
oRegex.ReserveTarget.testsTarget ) )
            {
                
sTarget sTarget.toLowerCase() ;
                
GetE('cmbTarget').value sTarget ;
            }
            else
                
GetE('cmbTarget').value 'frame' ;
            
GetE('txtTargetFrame').value sTarget ;
        }
    }

    
// Get Advances Attributes
    
GetE('txtAttId').value            oLink.id ;
    
GetE('txtAttName').value        oLink.name ;
    
GetE('cmbAttLangDir').value        oLink.dir ;
    
GetE('txtAttLangCode').value    oLink.lang ;
    
GetE('txtAttAccessKey').value    oLink.accessKey ;
    
GetE('txtAttTabIndex').value    oLink.tabIndex <= '' oLink.tabIndex ;
    
GetE('txtAttTitle').value        oLink.title ;
    
GetE('txtAttContentType').value    oLink.type ;
    
GetE('txtAttCharSet').value        oLink.charset ;

    if ( 
oEditor.FCKBrowserInfo.IsIE )
    {
        
GetE('txtAttClasses').value    oLink.getAttribute('className',2) || '' ;
        
GetE('txtAttStyle').value    oLink.style.cssText ;
    }
    else
    {
        
GetE('txtAttClasses').value    oLink.getAttribute('class',2) || '' ;
        
GetE('txtAttStyle').value    oLink.getAttribute('style',2) ;
    }

    
// Update the Link type combo.
    
GetE('cmbLinkType').value sType ;
}

//#### Link type selection.
function SetLinkTypelinkType )
{
    
ShowE('divLinkTypeUrl'        , (linkType == 'url') ) ;
    
ShowE('divLinkTypeAnchor'    , (linkType == 'anchor') ) ;
    
ShowE('divLinkTypeEMail'    , (linkType == 'email') ) ;

    
window.parent.SetTabVisibility'Target'    , (linkType == 'url') ) ;
// TODO : Enable File Upload (3/3).
//    window.parent.SetTabVisibility( 'Upload'    , (linkType == 'url') ) ;
    
window.parent.SetTabVisibility'Advanced'    , (linkType != 'anchor' || bHasAnchors) ) ;

    if ( 
linkType == 'email' )
        
window.parent.SetAutoSizetrue ) ;
}

//#### Target type selection.
function SetTargettargetType )
{
    
GetE('tdTargetFrame').style.display    = ( targetType == 'popup' 'none' '' ) ;
    
GetE('tdPopupName').style.display    =
        
GetE('tablePopupFeatures').style.display = ( targetType == 'popup' '' 'none' ) ;

    switch ( 
targetType )
    {
        case 
"_blank" :
        case 
"_self" :
        case 
"_parent" :
        case 
"_top" :
            
GetE('txtTargetFrame').value targetType ;
            break ;
        case 
"" :
            
GetE('txtTargetFrame').value '' ;
            break ;
    }

    if ( 
targetType == 'popup' )
        
window.parent.SetAutoSizetrue ) ;
}

//#### Called while the user types the URL.
function OnUrlChange()
{
    var 
sUrl GetE('txtUrl').value ;
    var 
sProtocol oRegex.UrlOnChangeProtocol.execsUrl ) ;

    if ( 
sProtocol )
    {
        
sUrl sUrl.substrsProtocol[0].length ) ;
        
GetE('txtUrl').value sUrl ;
        
GetE('cmbLinkProtocol').value sProtocol[0].toLowerCase() ;
    }
    else if ( 
oRegex.UrlOnChangeTestOther.testsUrl ) )
    {
        
GetE('cmbLinkProtocol').value '' ;
    }
}

//#### Called while the user types the target name.
function OnTargetNameChange()
{
    var 
sFrame GetE('txtTargetFrame').value ;

    if ( 
sFrame.length == )
        
GetE('cmbTarget').value '' ;
    else if ( 
oRegex.ReserveTarget.testsFrame ) )
        
GetE('cmbTarget').value sFrame.toLowerCase() ;
    else
        
GetE('cmbTarget').value 'frame' ;
}

//#### Builds the javascript URI to open a popup to the specified URI.
function BuildPopupUriuri )
{
    var 
oReg = new RegExp"'""g" ) ;
    var 
sWindowName "'" GetE('txtPopupName').value.replace(oReg"\'") + "'" ;

    var 
sFeatures '' ;
    var 
aChkFeatures document.getElementsByName('chkFeature') ;
    for ( var 
aChkFeatures.length i++ )
    {
        if ( 
sFeatures += ',' ;
        
sFeatures += aChkFeatures[i].value '=' + ( aChkFeatures[i].checked 'yes' 'no' ) ;
    }

    if ( 
GetE('txtPopupWidth').value.length )    sFeatures += ',width=' GetE('txtPopupWidth').value ;
    if ( 
GetE('txtPopupHeight').value.length )    sFeatures += ',height=' GetE('txtPopupHeight').value ;
    if ( 
GetE('txtPopupLeft').value.length )    sFeatures += ',left=' GetE('txtPopupLeft').value ;
    if ( 
GetE('txtPopupTop').value.length )        sFeatures += ',top=' GetE('txtPopupTop').value ;

    return ( 
"javascript:void(window.open('" uri "'," sWindowName ",'" sFeatures "'))" ) ;
}

//#### Fills all Popup related fields.
function FillPopupFieldswindowNamefeatures )
{
    if ( 
windowName )
        
GetE('txtPopupName').value windowName ;

    var 
oFeatures = new Object() ;
    var 
oFeaturesMatch ;
    while( ( 
oFeaturesMatch oRegex.PopupFeatures.execfeatures ) ) != null )
    {
        var 
sValue oFeaturesMatch[2] ;
        if ( 
sValue == ( 'yes' || '1' ) )
            
oFeaturesoFeaturesMatch[1] ] = true ;
        else if ( ! 
isNaNsValue ) && sValue != )
            
oFeaturesoFeaturesMatch[1] ] = sValue ;
    }

    
// Update all features check boxes.
    
var aChkFeatures document.getElementsByName('chkFeature') ;
    for ( var 
aChkFeatures.length i++ )
    {
        if ( 
oFeaturesaChkFeatures[i].value ] )
            
aChkFeatures[i].checked true ;
    }

    
// Update position and size text boxes.
    
if ( oFeatures['width'] )    GetE('txtPopupWidth').value        oFeatures['width'] ;
    if ( 
oFeatures['height'] )    GetE('txtPopupHeight').value    oFeatures['height'] ;
    if ( 
oFeatures['left'] )    GetE('txtPopupLeft').value        oFeatures['left'] ;
    if ( 
oFeatures['top'] )        GetE('txtPopupTop').value        oFeatures['top'] ;
}

//#### The OK button was hit.
function Ok()
{
    var 
sUri ;

    switch ( 
GetE('cmbLinkType').value )
    {
        case 
'url' :
            
sUri GetE('txtUrl').value ;

            if ( 
sUri.length == )
            {
                
alertFCKLang.DlnLnkMsgNoUrl ) ;
                return 
false ;
            }

            
sUri GetE('cmbLinkProtocol').value sUri ;

            if( 
GetE('cmbTarget').value == 'popup' )
                
sUri BuildPopupUrisUri ) ;

            break ;

        case 
'email' :
            
sUri GetE('txtEMailAddress').value ;

            if ( 
sUri.length == )
            {
                
alertFCKLang.DlnLnkMsgNoEMail ) ;
                return 
false ;
            }

            
sUri oParser.CreateEMailUri(
                
sUri,
                
GetE('txtEMailSubject').value,
                
GetE('txtEMailBody').value ) ;
            break ;

        case 
'anchor' :
            var 
sAnchor GetE('cmbAnchorName').value ;
            if ( 
sAnchor.length == sAnchor GetE('cmbAnchorId').value ;

            if ( 
sAnchor.length == )
            {
                
alertFCKLang.DlnLnkMsgNoAnchor ) ;
                return 
false ;
            }

            
sUri '#' sAnchor ;
            break ;
    }

    if ( 
oLink )    // Modifying an existent link.
        
oLink.href sUri ;
    else            
// Creating a new link.
    
{
        
oLink oEditor.FCK.CreateLinksUri ) ;
        if ( ! 
oLink )
            return 
true ;
    }

    
// Target
    
if( GetE('cmbTarget').value != 'popup' )
        
SetAttributeoLink'target'GetE('txtTargetFrame').value ) ;
    else
        
SetAttributeoLink'target'null ) ;

    
// Advances Attributes
    
SetAttributeoLink'id'        GetE('txtAttId').value ) ;
    
SetAttributeoLink'name'        GetE('txtAttName').value ) ;        // No IE. Set but doesnt't update the outerHTML.
    
SetAttributeoLink'dir'        GetE('cmbAttLangDir').value ) ;
    
SetAttributeoLink'lang'        GetE('txtAttLangCode').value ) ;
    
SetAttributeoLink'accesskey'GetE('txtAttAccessKey').value ) ;
    
SetAttributeoLink'tabindex'    , ( GetE('txtAttTabIndex').value GetE('txtAttTabIndex').value null ) ) ;
    
SetAttributeoLink'title'    GetE('txtAttTitle').value ) ;
    
SetAttributeoLink'class'    GetE('txtAttClasses').value ) ;
    
SetAttributeoLink'type'        GetE('txtAttContentType').value ) ;
    
SetAttributeoLink'charset'    GetE('txtAttCharSet').value ) ;

    if ( 
oEditor.FCKBrowserInfo.IsIE )
        
oLink.style.cssText GetE('txtAttStyle').value ;
    else
        
SetAttributeoLink'style'GetE('txtAttStyle').value ) ;

    return 
true ;
}

function 
BrowseServer()
{
    
// Set the browser window feature.
    
var iWidth    oEditor.FCKConfig.LinkBrowserWindowWidth ;
    var 
iHeight    oEditor.FCKConfig.LinkBrowserWindowHeight ;

    var 
iLeft = (screen.width  iWidth) / ;
    var 
iTop  = (screen.height iHeight) / ;

    var 
sOptions "toolbar=no,status=no,resizable=yes,dependent=yes" ;
    
sOptions += ",width=" iWidth ;
    
sOptions += ",height=" iHeight ;
    
sOptions += ",left=" iLeft ;
    
sOptions += ",top=" iTop ;

    
// Open the browser window.
    
var oWindow window.openoEditor.FCKConfig.LinkBrowserURL"FCKBrowseWindow"sOptions ) ;
}

function 
SetUrlurl )
{
    
document.getElementById('txtUrl').value url ;
    
OnUrlChange() ;
}
?>
Онлайн: 1
Реклама