Index: /branches/release-38/lib/MT/TemplateMap.pm
===================================================================
--- /branches/release-38/lib/MT/TemplateMap.pm (revision 1957)
+++ /branches/release-38/lib/MT/TemplateMap.pm (revision 2396)
@@ -70,5 +70,5 @@
     $map->remove_children({ key => 'templatemap_id' });
     my $result = $map->SUPER::remove(@_);
-    
+
     if (ref $map) {
         my $remaining = MT::TemplateMap->load(
@@ -99,6 +99,12 @@
     }
     else {
+        my $blog_id;
+        if ( $_[0] && $_[0]->{template_id} ) {
+            my $tmpl = MT::Template->load( $_[0]->{template_id} );
+            $blog_id = $tmpl->blog_id if $tmpl;
+        }
+
         my $maps_iter = MT::TemplateMap->count_group_by(
-            undef,
+            { ( defined $blog_id ? ( blog_id => $blog_id ) : () ) },
             { group => [ 'blog_id', 'archive_type' ] }
         );
@@ -109,5 +115,11 @@
             $ats{$blog_id} = $ats;
         }
-        my $iter = MT::Blog->load_iter();
+        my $iter;
+        if ( $blog_id ) {
+            my $blog = MT::Blog->load( $blog_id );
+            $iter = sub { my $ret = $blog; $blog = undef; $ret; }
+        } else {
+            $iter = MT::Blog->load_iter();
+        }
         while ( my $blog = $iter->() ) {
             $blog->archive_type( $ats{ $blog->id } ? join ',', @{ $ats{ $blog->id } } : '' );
Index: /branches/release-38/lib/MT/Template.pm
===================================================================
--- /branches/release-38/lib/MT/Template.pm (revision 2361)
+++ /branches/release-38/lib/MT/Template.pm (revision 2396)
@@ -355,6 +355,8 @@
         my @maps = MT::TemplateMap->load({ template_id => $tmpl->id });
         foreach my $map (@maps) {
-            $map->build_type($tmpl->build_type);
-            $map->save or die $map->errstr;
+            if ( ($map->build_type || 0) != ($tmpl->build_type || 0) ) {
+                $map->build_type($tmpl->build_type);
+                $map->save or die $map->errstr;
+            }
         }
     }
@@ -364,20 +366,4 @@
     }
     $tmpl->{needs_db_sync} = 0;
-
-    # if ((!$tmpl->id) && (my $blog = $tmpl->blog)) {
-    #     my $dcty = $blog->custom_dynamic_templates;
-    #     if ($dcty eq 'all') {
-    #         if (('index' eq $tmpl->type) || ('archive' eq $tmpl->type) ||
-    #             ('individual' eq $tmpl->type) || ('page' eq $tmpl->type) ||
-    #                 ('category' eq $tmpl->type)) {
-    #             $tmpl->build_dynamic(1);
-    #         }
-    #     } elsif ($dcty eq 'archives') {
-    #         if (('archive' eq $tmpl->type) || ('page' eq $tmpl->type) ||
-    #             ('individual' eq $tmpl->type) || ('category' eq $tmpl->type)) {
-    #             $tmpl->build_dynamic(1);
-    #         }
-    #     }
-    # }
 
     $tmpl->SUPER::save;
