Changeset 2198 for FCKeditor/branches

Show
Ignore:
Timestamp:
2008-07-09 06:41:00 (5 months ago)
Author:
martinkou
Message:

Made the edit/delete div commands to appear in context menu when multiple div containers are selected.

Location:
FCKeditor/branches/features/div_container/editor
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • FCKeditor/branches/features/div_container/editor/dialog/fck_div.html

    r2197 r2198  
    3939var FCKDomTools = oEditor.FCKDomTools ; 
    4040var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ; 
     41var FCKListsLib = oEditor.FCKListsLib ; 
    4142var AlwaysCreate = dialog.Args().CustomValue ; 
    4243 
     
    6869        var startNode = range.StartNode ; 
    6970        var endNode = range.EndNode ; 
     71        var elementMarkers = {} ; 
     72 
     73        var startPath = new FCKElementPath( startNode ) ; 
     74        if ( startPath.BlockLimit && startPath.BlockLimit.nodeName.IEquals( 'div' ) ) 
     75                startNode = startPath.BlockLimit ; 
    7076        var currentNode = startNode ; 
    71         var elementMarkers = {} ; 
    7277 
    7378        do 
    7479        { 
    7580                if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild && 
    76                                 oEditor.FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] ) 
     81                                FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] ) 
    7782                { 
    7883                        CurrentContainers.push( currentNode ) ; 
    7984                        if ( currentNode.parentNode.nodeName.IEquals( 'div' ) ) 
    80                                 FCKDomTools.SetElementMarker( elementMarkers, currentNode, '_fckignorethisnode', true ) ; 
     85                                FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode, 
     86                                                '_fckignorethisnode', true ) ; 
    8187                } 
    8288        } 
     
    8995                        CurrentContainers.splice( i, 1 ) ; 
    9096        } 
     97 
     98        FCKDomTools.ClearAllMarkers( elementMarkers ) ; 
    9199} 
    92100 
  • FCKeditor/branches/features/div_container/editor/_source/internals/fck_contextmenu.js

    r2171 r2198  
    298298                        AddItems : function( menu, tag, tagName ) 
    299299                        { 
    300                                 var path = new FCKElementPath( FCKSelection.GetSelectedElement() || FCKSelection.GetParentElement() ) ; 
    301                                 if ( path.BlockLimit && path.BlockLimit.nodeName.IEquals( 'div' ) ) 
     300                                var currentBlocks = [] ; 
     301                                var range = new FCKDomRange( FCK.EditorWindow ) ; 
     302                                range.MoveToSelection() ; 
     303 
     304                                var startNode = range.StartNode ; 
     305                                var endNode = range.EndNode ; 
     306                                var elementMarkers = {} ; 
     307 
     308                                var startPath = new FCKElementPath( startNode ) ; 
     309                                if ( startPath.BlockLimit && startPath.BlockLimit.nodeName.IEquals( 'div' ) ) 
     310                                        startNode = startPath.BlockLimit ; 
     311                                var currentNode = startNode ; 
     312 
     313                                do 
     314                                { 
     315                                        if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild && 
     316                                                        FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] ) 
     317                                        { 
     318                                                currentBlocks.push( currentNode ) ; 
     319                                                if ( currentNode.parentNode.nodeName.IEquals( 'div' ) ) 
     320                                                        FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode, 
     321                                                                        '_fckignorethisnode', true ) ; 
     322                                        } 
     323                                } 
     324                                while ( ( currentNode = FCKDomTools.GetNextSourceElement( currentNode ) ) && currentNode != endNode 
     325                                                && currentNode != endNode.parentNode ) ; 
     326 
     327                                for ( var i = currentBlocks.length - 1 ; i >= 0 ; i-- ) 
     328                                { 
     329                                        if ( currentBlocks[i]['_fckignorethisnode'] ) 
     330                                                currentBlocks.splice( i, 1 ) ; 
     331                                } 
     332 
     333                                FCKDomTools.ClearAllMarkers( elementMarkers ) ; 
     334 
     335                                if ( currentBlocks.length > 0 ) 
    302336                                { 
    303337                                        menu.AddSeparator() ;