Index: /branches/release-38/lib/MT/Blog.pm
===================================================================
--- /branches/release-38/lib/MT/Blog.pm (revision 2090)
+++ /branches/release-38/lib/MT/Blog.pm (revision 2351)
@@ -833,11 +833,13 @@
         $callback->($state, "tmpls");
         require MT::Template;
-        $iter = MT::Template->load_iter({ blog_id => $old_blog_id });
-        $counter = 0;
-        while (my $tmpl = $iter->()) {
-            $callback->($state . " " . MT->translate("[_1] records processed...", $counter), 'tmpls')
-                if $counter && ($counter % 100 == 0);
+        $iter = MT::Template->load_iter(
+            { blog_id => $old_blog_id, type => { not => 'widgetset' } }
+        );
+        my $tmpl_processor = sub {
+            my ( $new_blog_id, $counter, $tmpl, $tmpl_map ) = @_;
+            $callback->($state . " " . MT->translate("[_1] records processed...", $$counter), 'tmpls')
+                if $counter && ($$counter % 100 == 0);
             my $tmpl_id = $tmpl->id;
-            $counter++;
+            $$counter++;
             delete $tmpl->{column_values}->{id};
             delete $tmpl->{changed_cols}->{id};
@@ -849,5 +851,21 @@
             $tmpl->blog_id($new_blog_id);
             $tmpl->save or die $tmpl->errstr;
-            $tmpl_map{$tmpl_id} = $tmpl->id;
+            $tmpl_map->{$tmpl_id} = $tmpl->id;
+        };
+        $counter = 0;
+        while (my $tmpl = $iter->()) {
+            $tmpl_processor->($new_blog_id, \$counter, $tmpl, \%tmpl_map);
+        }
+        $iter = MT::Template->load_iter(
+            { blog_id => $old_blog_id, type => 'widgetset' }
+        );
+        while (my $tmpl = $iter->()) {
+            $tmpl_processor->($new_blog_id, \$counter, $tmpl, \%tmpl_map);
+            my @old_widgets = split /,/, $tmpl->modulesets;
+            my @new_widgets;
+            push @new_widgets, $tmpl_map{$_}
+                foreach @old_widgets;
+            $tmpl->modulesets( join(',', @new_widgets) );
+            $tmpl->save;
         }
         $callback->($state . " " . MT->translate("[_1] records processed.", $counter), 'tmpls');
