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

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

CKEDITOR.dialog.add'specialchar', function( editor )
{
    
/**
     * Simulate "this" of a dialog for non-dialog events.
     * @type {CKEDITOR.dialog}
     */
    
var dialog,
        
lang editor.lang.specialChar;

    var 
onChoice = function( evt )
    {
        var 
targetvalue;
        if ( 
evt.data )
            
target evt.data.getTarget();
        else
            
target = new CKEDITOR.dom.elementevt );

        if ( 
target.getName() == 'a' && ( value target.getChild).getHtml() ) )
        {
            
target.removeClass"cke_light_background" );
            
dialog.hide();

            
// We must use "insertText" here to keep text styled.
            
var span editor.document.createElement'span' );
            
span.setHtmlvalue );
            
editor.insertTextspan.getText() );
        }
    };

    var 
onClick CKEDITOR.tools.addFunctiononChoice );

    var 
focusedNode;

    var 
onFocus = function( evttarget )
    {
        var 
value;
        
target target || evt.data.getTarget();

        if ( 
target.getName() == 'span' )
            
target target.getParent();

        if ( 
target.getName() == 'a' && ( value target.getChild).getHtml() ) )
        {
            
// Trigger blur manually if there is focused node.
            
if ( focusedNode )
                
onBlurnullfocusedNode );

            var 
htmlPreview dialog.getContentElement'info''htmlPreview' ).getElement();

            
dialog.getContentElement'info''charPreview' ).getElement().setHtmlvalue );
            
htmlPreview.setHtmlCKEDITOR.tools.htmlEncodevalue ) );
            
target.getParent().addClass"cke_light_background" );

            
// Memorize focused node.
            
focusedNode target;
        }
    };

    var 
onBlur = function( evttarget )
    {
        
target target || evt.data.getTarget();

        if ( 
target.getName() == 'span' )
            
target target.getParent();

        if ( 
target.getName() == 'a' )
        {
            
dialog.getContentElement'info''charPreview' ).getElement().setHtml'&nbsp;' );
            
dialog.getContentElement'info''htmlPreview' ).getElement().setHtml'&nbsp;' );
            
target.getParent().removeClass"cke_light_background" );

            
focusedNode undefined;
        }
    };

    var 
onKeydown CKEDITOR.tools.addFunction( function( ev )
    {
        
ev = new CKEDITOR.dom.eventev );

        
// Get an Anchor element.
        
var element ev.getTarget();
        var 
relativenodeToMove;
        var 
keystroke ev.getKeystroke(),
            
rtl editor.lang.dir == 'rtl';

        switch ( 
keystroke )
        {
            
// UP-ARROW
            
case 38 :
                
// relative is TR
                
if ( ( relative element.getParent().getParent().getPrevious() ) )
                {
                    
nodeToMove relative.getChild( [element.getParent().getIndex(), 0] );
                    
nodeToMove.focus();
                    
onBlurnullelement );
                    
onFocusnullnodeToMove );
                }
                
ev.preventDefault();
                break;
            
// DOWN-ARROW
            
case 40 :
                
// relative is TR
                
if ( ( relative element.getParent().getParent().getNext() ) )
                {
                    
nodeToMove relative.getChild( [ element.getParent().getIndex(), ] );
                    if ( 
nodeToMove && nodeToMove.type == )
                    {
                        
nodeToMove.focus();
                        
onBlurnullelement );
                        
onFocusnullnodeToMove );
                    }
                }
                
ev.preventDefault();
                break;
            
// SPACE
            // ENTER is already handled as onClick
            
case 32 :
                
onChoice( { dataev } );
                
ev.preventDefault();
                break;

            
// RIGHT-ARROW
            
case rtl 37 39 :
            
// TAB
            
case :
                
// relative is TD
                
if ( ( relative element.getParent().getNext() ) )
                {
                    
nodeToMove relative.getChild);
                    if ( 
nodeToMove.type == )
                    {
                        
nodeToMove.focus();
                        
onBlurnullelement );
                        
onFocusnullnodeToMove );
                        
ev.preventDefaulttrue );
                    }
                    else
                        
onBlurnullelement );
                }
                
// relative is TR
                
else if ( ( relative element.getParent().getParent().getNext() ) )
                {
                    
nodeToMove relative.getChild( [ 0] );
                    if ( 
nodeToMove && nodeToMove.type == )
                    {
                        
nodeToMove.focus();
                        
onBlurnullelement );
                        
onFocusnullnodeToMove );
                        
ev.preventDefaulttrue );
                    }
                    else
                        
onBlurnullelement );
                }
                break;

            
// LEFT-ARROW
            
case rtl 39 37 :
            
// SHIFT + TAB
            
case CKEDITOR.SHIFT :
                
// relative is TD
                
if ( ( relative element.getParent().getPrevious() ) )
                {
                    
nodeToMove relative.getChild);
                    
nodeToMove.focus();
                    
onBlurnullelement );
                    
onFocusnullnodeToMove );
                    
ev.preventDefaulttrue );
                }
                
// relative is TR
                
else if ( ( relative element.getParent().getParent().getPrevious() ) )
                {
                    
nodeToMove relative.getLast().getChild);
                    
nodeToMove.focus();
                    
onBlurnullelement );
                    
onFocusnullnodeToMove );
                    
ev.preventDefaulttrue );
                }
                else
                    
onBlurnullelement );
                break;
            default :
                
// Do not stop not handled events.
                
return;
        }
    });

    return {
        
title lang.title,
        
minWidth 430,
        
minHeight 280,
        
buttons : [ CKEDITOR.dialog.cancelButton ],
        
charColumns 17,
        
onLoad :  function()
        {
            var 
columns this.definition.charColumns,
                
extraChars editor.config.extraSpecialChars,
                
chars editor.config.specialChars;

            var 
charsTableLabel =  CKEDITOR.tools.getNextId() + '_specialchar_table_label';
            var 
html = [ '<table role="listbox" aria-labelledby="' charsTableLabel '"' +
                                     
' style="width: 320px; height: 100%; border-collapse: separate;"' +
                                     
' align="center" cellspacing="2" cellpadding="2" border="0">' ];

            var 
0,
                
size chars.length,
                
character,
                
charDesc;

            while ( 
size )
            {
                
html.push'<tr>' ) ;

                for ( var 
columns j++, i++ )
                {
                    if ( ( 
character chars] ) )
                    {
                        
charDesc '';

                        if ( 
character instanceof Array )
                        {
                            
charDesc character];
                            
character character];
                        }
                        else
                        {
                            var 
_tmpName character.replace'&''' ).replace';''' ).replace'#''' );

                            
// Use character in case description unavailable.
                            
charDesc lang_tmpName ] || character;
                        }

                        var 
charLabelId =  'cke_specialchar_label_' '_' CKEDITOR.tools.getNextNumber();

                        
html.push(
                            
'<td class="cke_dark_background" style="cursor: default" role="presentation">' +
                            
'<a href="javascript: void(0);" role="option"' +
                            
' aria-posinset="' + ( +) + '"',
                            
' aria-setsize="' size '"',
                            
' aria-labelledby="' charLabelId '"',
                            
' style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="'CKEDITOR.tools.htmlEncodecharDesc ), '"' +
                            
' onkeydown="CKEDITOR.tools.callFunction( ' onKeydown ', event, this )"' +
                            
' onclick="CKEDITOR.tools.callFunction(' onClick ', this); return false;"' +
                            
' tabindex="-1">' +
                            
'<span style="margin: 0 auto;cursor: inherit">' +
                            
character +
                            
'</span>' +
                            
'<span class="cke_voice_label" id="' charLabelId '">' +
                            
charDesc +
                            
'</span></a>');
                    }
                    else
                        
html.push'<td class="cke_dark_background">&nbsp;' );

                    
html.push'</td>' );
                }
                
html.push'</tr>' );
            }

            
html.push'</tbody></table>''<span id="' charsTableLabel '" class="cke_voice_label">' lang.options +'</span>' );

            
this.getContentElement'info''charContainer' ).getElement().setHtmlhtml.join'' ) );
        },
        
contents : [
            {
                
id 'info',
                
label editor.lang.common.generalTab,
                
title editor.lang.common.generalTab,
                
padding 0,
                
align 'top',
                
elements : [
                    {
                        
type 'hbox',
                        
align 'top',
                        
widths : [ '320px''90px' ],
                        
children :
                        [
                            {
                                
type 'html',
                                
id 'charContainer',
                                
html '',
                                
onMouseover onFocus,
                                
onMouseout onBlur,
                                
focus : function()
                                {
                                    var 
firstChar this.getElement().getElementsByTag'a' ).getItem);
                                    
setTimeout( function()
                                    {
                                        
firstChar.focus();
                                        
onFocusnullfirstChar );
                                    }, 
);
                                },
                                
onShow : function()
                                {
                                    var 
firstChar this.getElement().getChild( [ 0000] );
                                    
setTimeout( function()
                                        {
                                            
firstChar.focus();
                                            
onFocusnullfirstChar );
                                        }, 
);
                                },
                                
onLoad : function( event )
                                {
                                    
dialog event.sender;
                                }
                            },
                            {
                                
type 'hbox',
                                
align 'top',
                                
widths : [ '100%' ],
                                
children :
                                [
                                    {
                                        
type 'vbox',
                                        
align 'top',
                                        
children :
                                        [
                                            {
                                                
type 'html',
                                                
html '<div></div>'
                                            
},
                                            {
                                                
type 'html',
                                                
id 'charPreview',
                                                
className 'cke_dark_background',
                                                
style 'border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;',
                                                
html '<div>&nbsp;</div>'
                                            
},
                                            {
                                                
type 'html',
                                                
id 'htmlPreview',
                                                
className 'cke_dark_background',
                                                
style 'border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;',
                                                
html '<div>&nbsp;</div>'
                                            
}
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    };
} );
?>
Онлайн: 1
Реклама