Show
Ignore:
Timestamp:
02/21/08 19:58:16 (21 months ago)
Author:
bchoate
Message:

Fix for call to populate_archive_loop

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-30/lib/MT/CMS/Template.pm

    r1385 r1392  
    226226 
    227227            # Populate template maps for this template 
    228             require MT::CMS::Blog; 
    229             my $maps = MT::CMS::Blog::_populate_archive_loop( $app, $blog, $obj ); 
     228            my $maps = _populate_archive_loop( $app, $blog, $obj ); 
    230229            $param->{object_loop} = $param->{template_map_loop} = $maps 
    231230              if @$maps; 
     
    614613} 
    615614 
     615sub _generate_map_table { 
     616    my $app = shift; 
     617    my ( $blog_id, $template_id ) = @_; 
     618 
     619    require MT::Template; 
     620    require MT::Blog; 
     621    my $blog     = MT::Blog->load($blog_id); 
     622    my $template = MT::Template->load($template_id); 
     623    my $tmpl     = $app->load_tmpl('include/archive_maps.tmpl'); 
     624    my $maps     = _populate_archive_loop( $app, $blog, $template ); 
     625    $tmpl->param( { object_type => 'templatemap' } ); 
     626    $tmpl->param( { object_loop => $maps } ) if @$maps; 
     627    my $html = $tmpl->output(); 
     628 
     629    if ( $html =~ m/<__trans / ) { 
     630        $html = $app->translate_templatized($html); 
     631    } 
     632    $html; 
     633} 
     634 
     635sub _populate_archive_loop { 
     636    my $app = shift; 
     637    my ( $blog, $obj ) = @_; 
     638 
     639    my $index = $app->config('IndexBasename'); 
     640    my $ext = $blog->file_extension || ''; 
     641    $ext = '.' . $ext if $ext ne ''; 
     642 
     643    require MT::TemplateMap; 
     644    my @tmpl_maps = MT::TemplateMap->load( { template_id => $obj->id } ); 
     645    my @maps; 
     646    my %types; 
     647    foreach my $map_obj (@tmpl_maps) { 
     648        my $map = {}; 
     649        $map->{map_id}           = $map_obj->id; 
     650        $map->{map_is_preferred} = $map_obj->is_preferred; 
     651        my $at = $map->{archive_type} = $map_obj->archive_type; 
     652        $types{$at}++; 
     653        $map->{ 'archive_type_preferred_' . $blog->archive_type_preferred } = 1 
     654          if $blog->archive_type_preferred; 
     655        $map->{file_template} = $map_obj->file_template 
     656          if $map_obj->file_template; 
     657 
     658        my $archiver = $app->publisher->archiver($at); 
     659        next unless $archiver; 
     660        $map->{archive_label} = $archiver->archive_label; 
     661        my $tmpls     = $archiver->default_archive_templates; 
     662        my $tmpl_loop = []; 
     663        foreach (@$tmpls) { 
     664            my $name = $_->{label}; 
     665            $name =~ s/\.html$/$ext/; 
     666            $name =~ s/index$ext$/$index$ext/; 
     667            push @$tmpl_loop, 
     668              { 
     669                name    => $name, 
     670                value   => $_->{template}, 
     671                default => ( $_->{default} || 0 ) 
     672              }; 
     673        } 
     674 
     675        my $custom = 1; 
     676 
     677        foreach (@$tmpl_loop) { 
     678            if (   ( !$map->{file_template} && $_->{default} ) 
     679                || ( $map->{file_template} eq $_->{value} ) ) 
     680            { 
     681                $_->{selected}        = 1; 
     682                $custom               = 0; 
     683                $map->{file_template} = $_->{value} 
     684                  if !$map->{file_template}; 
     685            } 
     686        } 
     687        if ($custom) { 
     688            unshift @$tmpl_loop, 
     689              { 
     690                name     => $map->{file_template}, 
     691                value    => $map->{file_template}, 
     692                selected => 1, 
     693              }; 
     694        } 
     695 
     696        $map->{archive_tmpl_loop} = $tmpl_loop; 
     697        if ( 
     698            1 < MT::TemplateMap->count( 
     699                { archive_type => $at, blog_id => $obj->blog_id } 
     700            ) 
     701          ) 
     702        { 
     703            $map->{has_multiple_archives} = 1; 
     704        } 
     705 
     706        push @maps, $map; 
     707    } 
     708    @maps = sort { MT::App::CMS::archive_type_sorter( $a, $b ) } @maps; 
     709    return \@maps; 
     710} 
     711 
    616712sub delete_map { 
    617713    my $app = shift; 
     
    625721    MT::TemplateMap->remove( { id => $id } ); 
    626722    my $html = 
    627       $app->_generate_map_table( $q->param('blog_id'), 
     723      _generate_map_table( $app, $q->param('blog_id'), 
    628724        $q->param('template_id') ); 
    629725    $app->{no_print_body} = 1; 
     
    658754        $app->translate( "Saving map failed: [_1]", $map->errstr ) ); 
    659755    my $html = 
    660       $app->_generate_map_table( $blog_id, scalar $q->param('template_id') ); 
     756      _generate_map_table( $app, $blog_id, scalar $q->param('template_id') ); 
    661757    $app->rebuild( 
    662758        BlogID      => $blog_id, 
     
    682778    MT::TemplateMap->remove( { id => $id } ); 
    683779    my $html = 
    684       $app->_generate_map_table( $q->param('blog_id'), 
     780      _generate_map_table( $app, $q->param('blog_id'), 
    685781        $q->param('template_id') ); 
    686782    $app->{no_print_body} = 1; 
     
    715811        $app->translate( "Saving map failed: [_1]", $map->errstr ) ); 
    716812    my $html = 
    717       $app->_generate_map_table( $blog_id, scalar $q->param('template_id') ); 
     813      _generate_map_table( $app, $blog_id, scalar $q->param('template_id') ); 
    718814    $app->rebuild( 
    719815        BlogID      => $blog_id,