Changeset 1860
- Timestamp:
- 2008-04-01 00:07:18 (6 months ago)
- Files:
-
- 1 modified
-
MediaWiki/trunk/plugins/mediawiki/fckplugin.js (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
MediaWiki/trunk/plugins/mediawiki/fckplugin.js
r1859 r1860 96 96 97 97 var stringBuilder = new Array() ; 98 this._AppendNode( rootNode, stringBuilder ) ;98 this._AppendNode( rootNode, stringBuilder, '' ) ; 99 99 return stringBuilder.join( '' ).Trim() ; 100 100 }, … … 132 132 133 133 // This function is based on FCKXHtml._AppendNode. 134 _AppendNode : function( htmlNode, stringBuilder )134 _AppendNode : function( htmlNode, stringBuilder, prefix ) 135 135 { 136 136 if ( !htmlNode ) … … 223 223 224 224 if ( !basicElement[2] ) 225 this._AppendChildNodes( htmlNode, stringBuilder ) ;225 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 226 226 227 227 if ( basic1 ) … … 236 236 var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li' ) ; 237 237 238 this._AppendChildNodes( htmlNode, stringBuilder ) ;239 240 if ( isFirstLevel ) 238 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 239 240 if ( isFirstLevel ) { 241 241 stringBuilder.push( '\n' ) ; 242 } 242 243 243 244 break ; … … 245 246 case 'li' : 246 247 247 stringBuilder.push( '\n' ) ; 248 if ( stringBuilder.length > 1 && stringBuilder[ stringBuilder.length - 1 ] != "*" && stringBuilder[ stringBuilder.length - 1 ] != "#") { 249 stringBuilder.push( '\n' ) ; 250 } 248 251 249 252 var listPrefix = '' ; … … 256 259 else if ( parent.nodeName.toLowerCase() == 'ol' ) 257 260 listPrefix = '#' + listPrefix ; 261 else if ( parent.nodeName.toLowerCase() == 'dt' ) 262 listPrefix = ';' + listPrefix ; 263 else if ( parent.nodeName.toLowerCase() == 'dd' ) 264 listPrefix = ':' + listPrefix ; 258 265 else if ( parent.nodeName.toLowerCase() != 'li' ) 259 266 break ; … … 264 271 stringBuilder.push( listPrefix ) ; 265 272 stringBuilder.push( ' ' ) ; 266 this._AppendChildNodes( htmlNode, stringBuilder ) ;273 this._AppendChildNodes( htmlNode, stringBuilder, listPrefix ) ; 267 274 268 275 break ; … … 292 299 { 293 300 stringBuilder.push( isWikiUrl? '|' : ' ' ) ; 294 this._AppendChildNodes( htmlNode, stringBuilder ) ;301 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 295 302 } 296 303 stringBuilder.push( isWikiUrl ? ']]' : ']' ) ; … … 299 306 300 307 case 'dl' : 301 stringBuilder.push( '\n') ;302 this._AppendChildNodes( htmlNode, stringBuilder) ;303 if ( stringBuilder.length > 0 && !stringBuilder[ stringBuilder.length - 1 ].EndsWith( '\n' ))304 stringBuilder.push( '\n' ) ;308 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 309 var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dd' ) ; 310 if (isFirstLevel) 311 stringBuilder.push( '\n') ; 305 312 break ; 306 313 307 314 case 'dt' : 315 if( stringBuilder.length > 1 && stringBuilder[ stringBuilder.length - 1 ] != ";" && stringBuilder[ stringBuilder.length - 1 ] != ":" ) 316 { 317 stringBuilder.push( '\n' + prefix ) ; 318 } 308 319 stringBuilder.push( ';' ) ; 309 this._AppendChildNodes( htmlNode, stringBuilder ) ;320 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 310 321 break ; 311 322 312 323 case 'dd' : 324 if ( stringBuilder.length > 1 && stringBuilder[ stringBuilder.length - 1 ] != ":" ) 325 { 326 stringBuilder.push( '\n' + prefix ) ; 327 } 313 328 stringBuilder.push( ':' ) ; 314 this._AppendChildNodes( htmlNode, stringBuilder ) ; 315 stringBuilder.push( '\n' ) ; 329 this._AppendChildNodes( htmlNode, stringBuilder, prefix + ":" ) ; 316 330 break ; 317 331 … … 328 342 { 329 343 stringBuilder.push( '|+ ' ) ; 330 this._AppendChildNodes( htmlNode.caption, stringBuilder ) ;344 this._AppendChildNodes( htmlNode.caption, stringBuilder, prefix ) ; 331 345 stringBuilder.push( '\n' ) ; 332 346 } … … 356 370 357 371 this._IsInsideCell = true ; 358 this._AppendChildNodes( htmlNode.rows[r].cells[c], stringBuilder ) ;372 this._AppendChildNodes( htmlNode.rows[r].cells[c], stringBuilder, prefix ) ; 359 373 this._IsInsideCell = false ; 360 374 … … 478 492 stringBuilder.push( "\n " ) ; 479 493 this._inLSpace = true ; 480 this._AppendChildNodes( htmlNode, stringBuilder ) ;494 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 481 495 this._inLSpace = false ; 482 496 if ( stringBuilder[stringBuilder.length-2] == "\n" && stringBuilder[stringBuilder.length-1] == " " ) … … 495 509 stringBuilder.push( '>' ) ; 496 510 this._inPre = true ; 497 this._AppendChildNodes( htmlNode, stringBuilder ) ;511 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 498 512 this._inPre = false ; 499 513 stringBuilder.push( '<\/' ) ; … … 513 527 514 528 stringBuilder.push( '>' ) ; 515 this._AppendChildNodes( htmlNode, stringBuilder ) ;529 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 516 530 stringBuilder.push( '<\/' ) ; 517 531 stringBuilder.push( sNodeName ) ; … … 578 592 }, 579 593 580 _AppendChildNodes : function( htmlNode, stringBuilder, isBlockElement)594 _AppendChildNodes : function( htmlNode, stringBuilder, listPrefix ) 581 595 { 582 596 var child = htmlNode.firstChild ; … … 584 598 while ( child ) 585 599 { 586 this._AppendNode( child, stringBuilder ) ;600 this._AppendNode( child, stringBuilder, listPrefix ) ; 587 601 child = child.nextSibling ; 588 602 }