Changeset 2199

Show
Ignore:
Timestamp:
2008-07-09 06:54:25 (6 months ago)
Author:
martinkou
Message:

Made the remove div container menu item to be able to remove multiple div containers.

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

Legend:

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

    r2198 r2199  
    6464{ 
    6565        dialog.Selection.EnsureSelection() ; 
    66         var range = new FCKDomRange( FCK.EditorWindow ) ; 
    67         range.MoveToSelection() ; 
    68  
    69         var startNode = range.StartNode ; 
    70         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 ; 
    76         var currentNode = startNode ; 
    77  
    78         do 
    79         { 
    80                 if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild && 
    81                                 FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] ) 
    82                 { 
    83                         CurrentContainers.push( currentNode ) ; 
    84                         if ( currentNode.parentNode.nodeName.IEquals( 'div' ) ) 
    85                                 FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode, 
    86                                                 '_fckignorethisnode', true ) ; 
    87                 } 
    88         } 
    89         while ( ( currentNode = FCKDomTools.GetNextSourceElement( currentNode ) ) && currentNode != endNode 
    90                         && currentNode != endNode.parentNode ) ; 
    91  
    92         for ( var i = CurrentContainers.length - 1 ; i >= 0 ; i-- ) 
    93         { 
    94                 if ( CurrentContainers[i]['_fckignorethisnode'] ) 
    95                         CurrentContainers.splice( i, 1 ) ; 
    96         } 
    97  
    98         FCKDomTools.ClearAllMarkers( elementMarkers ) ; 
     66        CurrentContainers = FCKDomTools.GetSelectedDivContainers() ; 
    9967} 
    10068 
  • FCKeditor/branches/features/div_container/editor/_source/commandclasses/fck_othercommands.js

    r2118 r2199  
    538538                FCKUndo.SaveUndoStep() ; 
    539539 
    540                 // Find out the node to delete. 
    541                 var node = FCKSelection.GetParentElement() ; 
    542                 var path = new FCKElementPath( node ) ; 
    543                 node = path.BlockLimit ; 
     540                // Find out the nodes to delete. 
     541                var nodes = FCKDomTools.GetSelectedDivContainers() ; 
    544542                 
    545543                // Remember the current selection position. 
     
    549547 
    550548                // Delete the container DIV node. 
    551                 FCKDomTools.RemoveNode( node, true ) ; 
     549                for ( var i = 0 ; i < nodes.length ; i++) 
     550                        FCKDomTools.RemoveNode( nodes[i], true ) ; 
    552551 
    553552                // Restore selection. 
  • FCKeditor/branches/features/div_container/editor/_source/internals/fck_contextmenu.js

    r2198 r2199  
    298298                        AddItems : function( menu, tag, tagName ) 
    299299                        { 
    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 ) ; 
     300                                var currentBlocks = FCKDomTools.GetSelectedDivContainers() ; 
    334301 
    335302                                if ( currentBlocks.length > 0 ) 
  • FCKeditor/branches/features/div_container/editor/_source/internals/fckdomtools.js

    r2187 r2199  
    10221022                // In the DTD # == text node. 
    10231023                return ( childDTD['#'] && !FCKListsLib.NonEditableElements[ nodeName ] ) ; 
     1024        }, 
     1025 
     1026        GetSelectedDivContainers : function() 
     1027        { 
     1028                var currentBlocks = [] ; 
     1029                var range = new FCKDomRange( FCK.EditorWindow ) ; 
     1030                range.MoveToSelection() ; 
     1031 
     1032                var startNode = range.StartNode ; 
     1033                var endNode = range.EndNode ; 
     1034                var elementMarkers = {} ; 
     1035 
     1036                var startPath = new FCKElementPath( startNode ) ; 
     1037                if ( startPath.BlockLimit && startPath.BlockLimit.nodeName.IEquals( 'div' ) ) 
     1038                        startNode = startPath.BlockLimit ; 
     1039                var currentNode = startNode ; 
     1040 
     1041                do 
     1042                { 
     1043                        if ( currentNode.nodeName.IEquals( 'div' ) && currentNode.firstChild && 
     1044                                        FCKListsLib.BlockElements[ currentNode.firstChild.nodeName.toLowerCase() ] ) 
     1045                        { 
     1046                                currentBlocks.push( currentNode ) ; 
     1047                                if ( currentNode.parentNode.nodeName.IEquals( 'div' ) ) 
     1048                                        FCKDomTools.SetElementMarker( elementMarkers, currentNode.parentNode, 
     1049                                                        '_fckignorethisnode', true ) ; 
     1050                        } 
     1051                } 
     1052                while ( ( currentNode = FCKDomTools.GetNextSourceElement( currentNode ) ) && currentNode != endNode 
     1053                                && currentNode != endNode.parentNode ) ; 
     1054 
     1055                for ( var i = currentBlocks.length - 1 ; i >= 0 ; i-- ) 
     1056                { 
     1057                        if ( currentBlocks[i]['_fckignorethisnode'] ) 
     1058                                currentBlocks.splice( i, 1 ) ; 
     1059                } 
     1060 
     1061                FCKDomTools.ClearAllMarkers( elementMarkers ) ; 
     1062 
     1063                return currentBlocks ; 
    10241064        } 
    10251065} ;