http://www.mediawiki.org/wiki/Special:Code/MediaWiki/94203

Revision: 94203
Author:   inez
Date:     2011-08-10 21:54:27 +0000 (Wed, 10 Aug 2011)
Log Message:
-----------
Deleting content across multiple items in lists with adopting orphaned items

Modified Paths:
--------------
    trunk/parsers/wikidom/lib/es/es.ListBlock.js

Modified: trunk/parsers/wikidom/lib/es/es.ListBlock.js
===================================================================
--- trunk/parsers/wikidom/lib/es/es.ListBlock.js        2011-08-10 21:20:00 UTC 
(rev 94202)
+++ trunk/parsers/wikidom/lib/es/es.ListBlock.js        2011-08-10 21:54:27 UTC 
(rev 94203)
@@ -109,14 +109,23 @@
                        toAdopt = [],
                        newParents = [],
                        toDeleteCollecting = false,
-                       toAdoptCollecting = false;
+                       toAdoptCollecting = false,
+                       itemLevel,
+                       toAdoptLevel,
+                       newParent,
+                       startItemLevel = locationStart.item.getLevel();
 
                this.traverseItems( function( item, index ) {
+                       itemLevel = item.getLevel();
 
                        if ( toDeleteCollecting === false && toDelete.length 
=== 0 ) {
-                               newParents[ item.getLevel() ] = item;
+                               newParents[ itemLevel ] = {
+                                       item: item,
+                                       firstChild: item.lists[0] ? 
item.lists[0].first() : null
+                               };
+                               newParents = newParents.slice( 0, itemLevel + 1 
);
                        }
-                       
+
                        if ( toDeleteCollecting ) {
                                toDelete.push( item );
                        }
@@ -139,17 +148,23 @@
 
                } );
 
-               var toAdoptLevel,
-                       newParent;
-
-               for ( var i = toAdopt.length - 1; i >= 0; i-- ) {
+               for ( var i = 0; i < toAdopt.length; i++ ) {
                        toAdoptLevel = toAdopt[i].getLevel();
-                       newParent = newParents[ toAdoptLevel ] ? newParents[ 
toAdoptLevel ] : newParents[ newParents.length - 1 ];
-                       newParent.lists[0].prepend( toAdopt[i] );
+                       newParent = newParents[ toAdoptLevel - 1 ] ? 
newParents[ toAdoptLevel -1 ] : newParents[ newParents.length - 1 ];
+                       
+                       if( newParent.firstChild && toAdoptLevel > 
startItemLevel ) {
+                               newParent.item.lists[0].insertBefore( 
toAdopt[i], newParent.firstChild );
+                       } else {
+                               if ( newParent.item.lists[0] ) {
+                                       newParent.item.lists[0].append( 
toAdopt[i] );
+                               } else {
+                                       newParent.item.append( new 
es.ListBlockList( toAdopt[i].list.style, [ toAdopt[i] ] ) );
+                               }
+                       }
                }
-               
+
                for ( var i = toDelete.length - 1; i >= 0; i-- ) {
-                       toDelete[i].list.remove(toDelete[i]);
+                       toDelete[i].list.remove( toDelete[i] );
                }
        }
 };


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to