Вход Регистрация
Файл: public/js/3rd_party/ckeditor/plugins/placeholder/plugin.js
Строк: 136
<?php

/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

/**
 * @fileOverview The "placeholder" plugin.
 *
 */

(function()
{
    var 
placeholderReplaceRegex = /[[[^]]+]]/g;
    
CKEDITOR.plugins.add'placeholder',
    {
        
requires : [ 'dialog' ],
        
lang : [ 'en''he' ],
        
init : function( editor )
        {
            var 
lang editor.lang.placeholder;

            
editor.addCommand'createplaceholder', new CKEDITOR.dialogCommand'createplaceholder' ) );
            
editor.addCommand'editplaceholder', new CKEDITOR.dialogCommand'editplaceholder' ) );

            
editor.ui.addButton'CreatePlaceholder',
            {
                
label lang.toolbar,
                
command :'createplaceholder',
                
icon this.path 'placeholder.gif'
            
});

            if ( 
editor.addMenuItems )
            {
                
editor.addMenuGroup'placeholder'20 );
                
editor.addMenuItems(
                    {
                        
editplaceholder :
                        {
                            
label lang.edit,
                            
command 'editplaceholder',
                            
group 'placeholder',
                            
order 1,
                            
icon this.path 'placeholder.gif'
                        
}
                    } );

                if ( 
editor.contextMenu )
                {
                    
editor.contextMenu.addListener( function( elementselection )
                        {
                            if ( !
element || !element.data'cke-placeholder' ) )
                                return 
null;

                            return { 
editplaceholder CKEDITOR.TRISTATE_OFF };
                        } );
                }
            }

            
editor.on'doubleclick', function( evt )
                {
                    if ( 
CKEDITOR.plugins.placeholder.getSelectedPlaceHodereditor ) )
                        
evt.data.dialog 'editplaceholder';
                });

            
editor.addCss(
                
'.cke_placeholder' +
                
'{' +
                    
'background-color: #ffff00;' +
                    ( 
CKEDITOR.env.gecko 'cursor: default;' '' ) +
                
'}'
            
);

            
editor.on'contentDom', function()
                {
                    
editor.document.getBody().on'resizestart', function( evt )
                        {
                            if ( 
editor.getSelection().getSelectedElement().data'cke-placeholder' ) )
                                
evt.data.preventDefault();
                        });
                });

            
CKEDITOR.dialog.add'createplaceholder'this.path 'dialogs/placeholder.js' );
            
CKEDITOR.dialog.add'editplaceholder'this.path 'dialogs/placeholder.js' );
        },
        
afterInit : function( editor )
        {
            var 
dataProcessor editor.dataProcessor,
                
dataFilter dataProcessor && dataProcessor.dataFilter,
                
htmlFilter dataProcessor && dataProcessor.htmlFilter;

            if ( 
dataFilter )
            {
                
dataFilter.addRules(
                {
                    
text : function( text )
                    {
                        return 
text.replaceplaceholderReplaceRegex, function( match )
                            {
                                return 
CKEDITOR.plugins.placeholder.createPlaceholdereditornullmatch);
                            });
                    }
                });
            }

            if ( 
htmlFilter )
            {
                
htmlFilter.addRules(
                {
                    
elements :
                    {
                        
'span' : function( element )
                        {
                            if ( 
element.attributes && element.attributes'data-cke-placeholder' ] )
                                
delete element.name;
                        }
                    }
                });
            }
        }
    });
})();

CKEDITOR.plugins.placeholder =
{
    
createPlaceholder : function( editoroldElementtextisGet )
    {
        var 
element = new CKEDITOR.dom.element'span'editor.document );
        
element.setAttributes(
            {
                
contentEditable        'false',
                
'data-cke-placeholder'    1,
                
'class'            'cke_placeholder'
            
}
        );

        
text && element.setTexttext );

        if ( 
isGet )
            return 
element.getOuterHtml();

        if ( 
oldElement )
        {
            if ( 
CKEDITOR.env.ie )
            {
                
element.insertAfteroldElement );
                
// Some time is required for IE before the element is removed.
                
setTimeout( function()
                    {
                        
oldElement.remove();
                        
element.focus();
                    }, 
10 );
            }
            else
                
element.replaceoldElement );
        }
        else
            
editor.insertElementelement );

        return 
null;
    },

    
getSelectedPlaceHoder : function( editor )
    {
        var 
range editor.getSelection().getRanges()[ ];
        
range.shrinkCKEDITOR.SHRINK_TEXT );
        var 
node range.startContainer;
        while( 
node && !( node.type == CKEDITOR.NODE_ELEMENT && node.data'cke-placeholder' ) ) )
            
node node.getParent();
        return 
node;
    }
};
?>
Онлайн: 2
Реклама