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

// Register the related command.
FCKCommands.RegisterCommand'Placeholder', new FCKDialogCommand'Placeholder'FCKLang.PlaceholderDlgTitleFCKPlugins.Items['placeholder'].Path 'fck_placeholder.html'340170 ) ) ;

// Create the "Plaholder" toolbar button.
var oPlaceholderItem = new FCKToolbarButton'Placeholder'FCKLang.PlaceholderBtn ) ;
oPlaceholderItem.IconPath FCKPlugins.Items['placeholder'].Path 'placeholder.gif' ;
FCKToolbarItems.RegisterItem'Placeholder'oPlaceholderItem ) ;


// The object used for all Placeholder operations.
var FCKPlaceholders = new Object() ;

// Add a new placeholder at the actual selection.
FCKPlaceholders.Add = function( name )
{
    var 
oSpan FCK.CreateElement'SPAN' ) ;
    
this.SetupSpanoSpanname ) ;
}

FCKPlaceholders.SetupSpan = function( spanname )
{
    
span.innerHTML '[[ ' name ' ]]' ;

    
span.style.backgroundColor '#ffff00' ;
    
span.style.color '#000000' ;

    if ( 
FCKBrowserInfo.IsGecko )
        
span.style.cursor 'default' ;

    
span._fckplaceholder name ;
    
span.contentEditable false ;

    
// To avoid it to be resized.
    
span.onresizestart = function()
    {
        
FCK.EditorWindow.event.returnValue false ;
        return 
false ;
    }
}

// On Gecko we must do this trick so the user select all the SPAN when clicking on it.
FCKPlaceholders._SetupClickListener = function()
{
    
FCKPlaceholders._ClickListener = function( )
    {
        if ( 
e.target.tagName == 'SPAN' && e.target._fckplaceholder )
            
FCKSelection.SelectElemente.target ) ;
    }

    
FCK.EditorDocument.addEventListener'click'FCKPlaceholders._ClickListenertrue ) ;
}

// Open the Placeholder dialog on double click.
FCKPlaceholders.OnDoubleClick = function( span )
{
    if ( 
span.tagName == 'SPAN' && span._fckplaceholder )
        
FCKCommands.GetCommand'Placeholder' ).Execute() ;
}

FCK.RegisterDoubleClickHandlerFCKPlaceholders.OnDoubleClick'SPAN' ) ;

// Check if a Placholder name is already in use.
FCKPlaceholders.Exist = function( name )
{
    var 
aSpans FCK.EditorDocument.getElementsByTagName'SPAN' )

    for ( var 
aSpans.length i++ )
    {
        if ( 
aSpans[i]._fckplaceholder == name )
            return 
true ;
    }
}

if ( 
FCKBrowserInfo.IsIE )
{
    
FCKPlaceholders.Redraw = function()
    {
        var 
aPlaholders FCK.EditorDocument.body.innerText.match( /[[[^[]]+]]/) ;
        if ( !
aPlaholders )
            return ;

        var 
oRange FCK.EditorDocument.body.createTextRange() ;

        for ( var 
aPlaholders.length i++ )
        {
            if ( 
oRange.findTextaPlaholders[i] ) )
            {
                var 
sName aPlaholders[i].match( /[[s*([^]]*?)s*]]/ )[1] ;
                
oRange.pasteHTML'<span style="color: #000000; background-color: #ffff00" contenteditable="false" _fckplaceholder="' sName '">' aPlaholders[i] + '</span>' ) ;
            }
        }
    }
}
else
{
    
FCKPlaceholders.Redraw = function()
    {
        var 
oInteractor FCK.EditorDocument.createTreeWalkerFCK.EditorDocument.bodyNodeFilter.SHOW_TEXTFCKPlaceholders._AcceptNodetrue ) ;

        var    
aNodes = new Array() ;

        while ( 
oNode oInteractor.nextNode() )
        {
            
aNodesaNodes.length ] = oNode ;
        }

        for ( var 
aNodes.length n++ )
        {
            var 
aPieces aNodes[n].nodeValue.split( /([[[^[]]+]])/) ;

            for ( var 
aPieces.length i++ )
            {
                if ( 
aPieces[i].length )
                {
                    if ( 
aPieces[i].indexOf'[[' ) == )
                    {
                        var 
sName aPieces[i].match( /[[s*([^]]*?)s*]]/ )[1] ;

                        var 
oSpan FCK.EditorDocument.createElement'span' ) ;
                        
FCKPlaceholders.SetupSpanoSpansName ) ;

                        
aNodes[n].parentNode.insertBeforeoSpanaNodes[n] ) ;
                    }
                    else
                        
aNodes[n].parentNode.insertBeforeFCK.EditorDocument.createTextNodeaPieces[i] ) , aNodes[n] ) ;
                }
            }

            
aNodes[n].parentNode.removeChildaNodes[n] ) ;
        }
        
        
FCKPlaceholders._SetupClickListener() ;
    }

    
FCKPlaceholders._AcceptNode = function( node )
    {
        if ( /[[[^[]]+]]/.
testnode.nodeValue ) )
            return 
NodeFilter.FILTER_ACCEPT ;
        else
            return 
NodeFilter.FILTER_SKIP ;
    }
}

FCK.Events.AttachEvent'OnAfterSetHTML'FCKPlaceholders.Redraw ) ;

// The "Redraw" method must be called on startup.
FCKPlaceholders.Redraw() ;

// We must process the SPAN tags to replace then with the real resulting value of the placeholder.
FCKXHtml.TagProcessors['span'] = function( nodehtmlNode )
{
    if ( 
htmlNode._fckplaceholder )
        
node FCKXHtml.XML.createTextNode'[[' htmlNode._fckplaceholder ']]' ) ;
    else
        
FCKXHtml._AppendChildNodesnodehtmlNodefalse ) ;

    return 
node ;
}
?>
Онлайн: 1
Реклама