Вход Регистрация
Файл: fckeditor/editor/_source/internals/fck_contextmenu.js
Строк: 467
<?php

/*
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2008 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 ==
 *
 * Defines the FCK.ContextMenu object that is responsible for all
 * Context Menu operations in the editing area.
 */

FCK.ContextMenu = new Object() ;
FCK.ContextMenu.Listeners = new Array() ;

FCK.ContextMenu.RegisterListener = function( listener )
{
    if ( 
listener )
        
this.Listeners.pushlistener ) ;
}

function 
FCK_ContextMenu_Init()
{
    var 
oInnerContextMenu FCK.ContextMenu._InnerContextMenu = new FCKContextMenuFCKBrowserInfo.IsIE window window.parentFCKLang.Dir ) ;
    
oInnerContextMenu.CtrlDisable    FCKConfig.BrowserContextMenuOnCtrl ;
    
oInnerContextMenu.OnBeforeOpen    FCK_ContextMenu_OnBeforeOpen ;
    
oInnerContextMenu.OnItemClick    FCK_ContextMenu_OnItemClick ;

    
// Get the registering function.
    
var oMenu FCK.ContextMenu ;

    
// Register all configured context menu listeners.
    
for ( var FCKConfig.ContextMenu.length i++ )
        
oMenu.RegisterListenerFCK_ContextMenu_GetListenerFCKConfig.ContextMenu[i] ) ) ;
}

function 
FCK_ContextMenu_GetListenerlistenerName )
{
    switch ( 
listenerName )
    {
        case 
'Generic' :
            return {
            
AddItems : function( menutagtagName )
            {
                
menu.AddItem'Cut'        FCKLang.Cut    7FCKCommands.GetCommand'Cut' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                
menu.AddItem'Copy'    FCKLang.Copy    8FCKCommands.GetCommand'Copy' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                
menu.AddItem'Paste'    FCKLang.Paste    9FCKCommands.GetCommand'Paste' ).GetState() == FCK_TRISTATE_DISABLED ) ;
            }} ;

        case 
'Table' :
            return {
            
AddItems : function( menutagtagName )
            {
                var 
bIsTable    = ( tagName == 'TABLE' ) ;
                var 
bIsCell        = ( !bIsTable && FCKSelection.HasAncestorNode'TABLE' ) ) ;

                if ( 
bIsCell )
                {
                    
menu.AddSeparator() ;
                    var 
oItem menu.AddItem'Cell'    FCKLang.CellCM ) ;
                    
oItem.AddItem'TableInsertCellBefore'    FCKLang.InsertCellBefore69 ) ;
                    
oItem.AddItem'TableInsertCellAfter'    FCKLang.InsertCellAfter58 ) ;
                    
oItem.AddItem'TableDeleteCells'    FCKLang.DeleteCells59 ) ;
                    if ( 
FCKBrowserInfo.IsGecko )
                        
oItem.AddItem'TableMergeCells'    FCKLang.MergeCells60,
                            
FCKCommands.GetCommand'TableMergeCells' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                    else
                    {
                        
oItem.AddItem'TableMergeRight'    FCKLang.MergeRight60,
                            
FCKCommands.GetCommand'TableMergeRight' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                        
oItem.AddItem'TableMergeDown'        FCKLang.MergeDown60,
                            
FCKCommands.GetCommand'TableMergeDown' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                    }
                    
oItem.AddItem'TableHorizontalSplitCell'    FCKLang.HorizontalSplitCell61,
                        
FCKCommands.GetCommand'TableHorizontalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                    
oItem.AddItem'TableVerticalSplitCell'    FCKLang.VerticalSplitCell61,
                        
FCKCommands.GetCommand'TableVerticalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
                    
oItem.AddSeparator() ;
                    
oItem.AddItem'TableCellProp'        FCKLang.CellProperties57,
                        
FCKCommands.GetCommand'TableCellProp' ).GetState() == FCK_TRISTATE_DISABLED ) ;

                    
menu.AddSeparator() ;
                    
oItem menu.AddItem'Row'            FCKLang.RowCM ) ;
                    
oItem.AddItem'TableInsertRowBefore'        FCKLang.InsertRowBefore70 ) ;
                    
oItem.AddItem'TableInsertRowAfter'        FCKLang.InsertRowAfter62 ) ;
                    
oItem.AddItem'TableDeleteRows'    FCKLang.DeleteRows63 ) ;

                    
menu.AddSeparator() ;
                    
oItem menu.AddItem'Column'        FCKLang.ColumnCM ) ;
                    
oItem.AddItem'TableInsertColumnBefore'FCKLang.InsertColumnBefore71 ) ;
                    
oItem.AddItem'TableInsertColumnAfter'    FCKLang.InsertColumnAfter64 ) ;
                    
oItem.AddItem'TableDeleteColumns'    FCKLang.DeleteColumns65 ) ;
                }

                if ( 
bIsTable || bIsCell )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'TableDelete'            FCKLang.TableDelete ) ;
                    
menu.AddItem'TableProp'            FCKLang.TableProperties39 ) ;
                }
            }} ;

        case 
'Link' :
            return {
            
AddItems : function( menutagtagName )
            {
                var 
bInsideLink = ( tagName == 'A' || FCKSelection.HasAncestorNode'A' ) ) ;

                if ( 
bInsideLink || FCK.GetNamedCommandState'Unlink' ) != FCK_TRISTATE_DISABLED )
                {
                    
// Go up to the anchor to test its properties
                    
var oLink FCKSelection.MoveToAncestorNode'A' ) ;
                    var 
bIsAnchor = ( oLink && oLink.name.length && oLink.href.length == ) ;
                    
// If it isn't a link then don't add the Link context menu
                    
if ( bIsAnchor )
                        return ;

                    
menu.AddSeparator() ;
                    
menu.AddItem'VisitLink'FCKLang.VisitLink ) ;
                    
menu.AddSeparator() ;
                    if ( 
bInsideLink )
                        
menu.AddItem'Link'FCKLang.EditLink        34 ) ;
                    
menu.AddItem'Unlink'    FCKLang.RemoveLink    35 ) ;
                }
            }} ;

        case 
'Image' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'IMG' && !tag.getAttribute'_fckfakelement' ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Image'FCKLang.ImageProperties37 ) ;
                }
            }} ;

        case 
'Anchor' :
            return {
            
AddItems : function( menutagtagName )
            {
                
// Go up to the anchor to test its properties
                
var oLink FCKSelection.MoveToAncestorNode'A' ) ;
                var 
bIsAnchor = ( oLink && oLink.name.length ) ;

                if ( 
bIsAnchor || ( tagName == 'IMG' && tag.getAttribute'_fckanchor' ) ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Anchor'FCKLang.AnchorProp36 ) ;
                    
menu.AddItem'AnchorDelete'FCKLang.AnchorDelete ) ;
                }
            }} ;

        case 
'Flash' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'IMG' && tag.getAttribute'_fckflash' ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Flash'FCKLang.FlashProperties38 ) ;
                }
            }} ;

        case 
'Form' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
FCKSelection.HasAncestorNode('FORM') )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Form'FCKLang.FormProp48 ) ;
                }
            }} ;

        case 
'Checkbox' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'INPUT' && tag.type == 'checkbox' )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Checkbox'FCKLang.CheckboxProp49 ) ;
                }
            }} ;

        case 
'Radio' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'INPUT' && tag.type == 'radio' )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Radio'FCKLang.RadioButtonProp50 ) ;
                }
            }} ;

        case 
'TextField' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'INPUT' && ( tag.type == 'text' || tag.type == 'password' ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'TextField'FCKLang.TextFieldProp51 ) ;
                }
            }} ;

        case 
'HiddenField' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'IMG' && tag.getAttribute'_fckinputhidden' ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'HiddenField'FCKLang.HiddenFieldProp56 ) ;
                }
            }} ;

        case 
'ImageButton' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'INPUT' && tag.type == 'image' )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'ImageButton'FCKLang.ImageButtonProp55 ) ;
                }
            }} ;

        case 
'Button' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'INPUT' && ( tag.type == 'button' || tag.type == 'submit' || tag.type == 'reset' ) )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Button'FCKLang.ButtonProp54 ) ;
                }
            }} ;

        case 
'Select' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'SELECT' )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Select'FCKLang.SelectionFieldProp53 ) ;
                }
            }} ;

        case 
'Textarea' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
tagName == 'TEXTAREA' )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'Textarea'FCKLang.TextareaProp52 ) ;
                }
            }} ;

        case 
'BulletedList' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
FCKSelection.HasAncestorNode('UL') )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'BulletedList'FCKLang.BulletedListProp27 ) ;
                }
            }} ;

        case 
'NumberedList' :
            return {
            
AddItems : function( menutagtagName )
            {
                if ( 
FCKSelection.HasAncestorNode('OL') )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'NumberedList'FCKLang.NumberedListProp26 ) ;
                }
            }} ;

        case 
'DivContainer':
            return {
            
AddItems : function( menutagtagName )
            {
                var 
currentBlocks FCKDomTools.GetSelectedDivContainers() ;

                if ( 
currentBlocks.length )
                {
                    
menu.AddSeparator() ;
                    
menu.AddItem'EditDiv'FCKLang.EditDiv75 ) ;
                    
menu.AddItem'DeleteDiv'FCKLang.DeleteDiv76 ) ;
                }
            }} ;

    }
    return 
null ;
}

function 
FCK_ContextMenu_OnBeforeOpen()
{
    
// Update the UI.
    
FCK.Events.FireEvent'OnSelectionChange' ) ;

    
// Get the actual selected tag (if any).
    
var oTagsTagName ;

    
// The extra () is to avoid a warning with strict error checking. This is ok.
    
if ( (oTag FCKSelection.GetSelectedElement()) )
        
sTagName oTag.tagName ;

    
// Cleanup the current menu items.
    
var oMenu FCK.ContextMenu._InnerContextMenu ;
    
oMenu.RemoveAllItems() ;

    
// Loop through the listeners.
    
var aListeners FCK.ContextMenu.Listeners ;
    for ( var 
aListeners.length i++ )
        
aListeners[i].AddItemsoMenuoTagsTagName ) ;
}

function 
FCK_ContextMenu_OnItemClickitem )
{
    
FCK.Focus() ;
    
FCKCommands.GetCommanditem.Name ).Executeitem.CustomData ) ;
}
?>
Онлайн: 3
Реклама