Changeset 692
- Timestamp:
- 2007-08-20 19:20:39 (17 months ago)
- Location:
- FCKeditor/trunk/editor/_source
- Files:
-
- 3 modified
-
commandclasses/fcktablecommand.js (modified) (4 diffs)
-
internals/fck_contextmenu.js (modified) (2 diffs)
-
internals/fcktablehandler.js (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/trunk/editor/_source/commandclasses/fcktablecommand.js
r691 r692 32 32 FCKUndo.SaveUndoStep() ; 33 33 34 if ( FCKBrowserInfo.IsIE)34 if ( ! FCKBrowserInfo.IsGecko ) 35 35 { 36 36 switch ( this.Name ) … … 97 97 case 'TableHorizontalSplitCell' : 98 98 case 'TableVerticalSplitCell' : 99 case 'TableMergeRight' :100 99 case 'TableMergeDown' : 101 100 if ( FCKTableHandler.GetSelectedCells().length == 1 ) … … 103 102 else 104 103 return FCK_TRISTATE_DISABLED ; 105 break ;106 104 case 'TableMergeCells' : 107 105 if ( FCKTableHandler.CheckIsSelectionRectangular() … … 110 108 else 111 109 return FCK_TRISTATE_DISABLED ; 110 case 'TableMergeRight' : 111 return FCKTableHandler.GetMergeRightTarget() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; 112 112 default : 113 113 return FCK_TRISTATE_OFF ; -
FCKeditor/trunk/editor/_source/internals/fck_contextmenu.js
r691 r692 74 74 oItem.AddItem( 'TableInsertCellAfter' , FCKLang.InsertCellAfter, 58 ) ; 75 75 oItem.AddItem( 'TableDeleteCells' , FCKLang.DeleteCells, 59 ) ; 76 if ( FCKBrowserInfo.IsIE ) 76 if ( FCKBrowserInfo.IsGecko ) 77 oItem.AddItem( 'TableMergeCells' , FCKLang.MergeCells, 60, 78 FCKCommands.GetCommand( 'TableMergeCells' ).GetState() == FCK_TRISTATE_DISABLED ) ; 79 else 77 80 { 78 81 oItem.AddItem( 'TableMergeRight' , FCKLang.MergeRight, 60, … … 81 84 FCKCommands.GetCommand( 'TableMergeDown' ).GetState() == FCK_TRISTATE_DISABLED ) ; 82 85 } 83 else84 oItem.AddItem( 'TableMergeCells' , FCKLang.MergeCells, 60,85 FCKCommands.GetCommand( 'TableMergeCells' ).GetState() == FCK_TRISTATE_DISABLED ) ;86 86 oItem.AddItem( 'TableHorizontalSplitCell' , FCKLang.HorizontalSplitCell, 61, 87 87 FCKCommands.GetCommand( 'TableHorizontalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ; -
FCKeditor/trunk/editor/_source/internals/fcktablehandler.js
r691 r692 255 255 } 256 256 257 FCKTableHandler._ReplaceCellsByMarker = function( tableMap, marker, substitute ) 258 { 259 for ( var i = 0 ; i < tableMap.length ; i++ ) 260 { 261 for ( var j = 0 ; j < tableMap[i].length ; j++ ) 262 { 263 if ( tableMap[i][j][marker] ) 264 tableMap[i][j] = substitute ; 265 } 266 } 267 } 268 257 269 FCKTableHandler._GetMarkerGeometry = function( tableMap, rowIdx, colIdx, markerName ) 258 270 { … … 352 364 FCKTableHandler.MergeRight = function() 353 365 { 354 if ( ! FCKBrowserInfo.IsIE ) 355 { 356 alert( 'This method should be called in IE only.' ) ; 366 var target = this.GetMergeRightTarget() ; 367 if ( target == null ) 357 368 return ; 358 } 359 var cells = FCKTableHandler.GetSelectedCells() ; 360 if ( cells.length != 1 ) 361 return ; 362 363 var currentCell = cells[0] ; 364 var nextCell = currentCell.parentNode.cells[currentCell.cellIndex + 1] ; 365 var nextColSpan = nextCell.colSpan ; 366 if ( isNaN( nextColSpan ) ) 367 nextColSpan = 1 ; 368 369 if ( ! nextCell ) 370 return ; 369 var refCell = target.refCell ; 370 var tableMap = target.tableMap ; 371 var nextCell = target.nextCell ; 371 372 372 373 var cellContents = FCK.EditorDocument.createDocumentFragment() ; … … 375 376 376 377 nextCell.parentNode.removeChild( nextCell ) ; 377 if ( isNaN( currentCell.colSpan ) ) 378 currentCell.colSpan = 1 ; 379 currentCell.colSpan += nextColSpan ; 380 381 currentCell.appendChild( cellContents ) ; 378 refCell.appendChild( cellContents ) ; 379 this._MarkCells( [nextCell], '_Replace' ) ; 380 this._ReplaceCellsByMarker( tableMap, '_Replace', refCell ) ; 381 this._InstallTableMap( tableMap, refCell.parentNode.parentNode ) ; 382 382 } 383 383 384 384 FCKTableHandler.MergeDown = function() 385 385 { 386 if ( ! FCKBrowserInfo.IsIE )387 {388 alert( 'This method should be called in IE only.' ) ;389 return ;390 }391 386 var cells = FCKTableHandler.GetSelectedCells() ; 392 387 if ( cells.length != 1 ) … … 686 681 { 687 682 var cell = tableMap[i][j] ; 688 if ( FCKBrowser .IsIE )683 if ( FCKBrowserInfo.IsIE ) 689 684 { 690 685 cell.removeAttribute( '_colScanned' ) ; … … 744 739 return FCK_TRISTATE_DISABLED ; 745 740 } 741 742 FCKTableHandler.GetMergeRightTarget = function() 743 { 744 var cells = this.GetSelectedCells() ; 745 if ( cells.length != 1 ) 746 return null ; 747 748 var refCell = cells[0] ; 749 var tableMap = this._CreateTableMap( refCell.parentNode.parentNode ) ; 750 var rowIdx = refCell.parentNode.rowIndex ; 751 var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ; 752 var nextColIdx = colIdx + ( isNaN( refCell.colSpan ) ? 1 : refCell.colSpan ) ; 753 var nextCell = tableMap[rowIdx][nextColIdx] ; 754 755 if ( ! nextCell ) 756 return null ; 757 758 // The two cells must have the same vertical geometry, otherwise merging does not make sense. 759 this._MarkCells( [refCell, nextCell], '_SizeTest' ) ; 760 var refGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SizeTest' ) ; 761 var nextGeometry = this._GetMarkerGeometry( tableMap, rowIdx, nextColIdx, '_SizeTest' ) ; 762 this._UnmarkCells( [refCell, nextCell], '_SizeTest' ) ; 763 764 if ( refGeometry.height != nextGeometry.height || refGeometry.y != nextGeometry.y ) 765 return null ; 766 767 return { refCell : refCell, nextCell : nextCell, tableMap : tableMap } ; 768 }