Changeset 2606

Show
Ignore:
Timestamp:
06/19/08 05:52:32 (6 months ago)
Author:
takayama
Message:

Fixed BugId:80147
* The archive type without a mapping was disabled.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/release-40/lib/MT/Blog.pm

    r2559 r2606  
    486486    my ($type) = @_; 
    487487    my %at = map { lc $_ => 1 } split(/,/, $blog->archive_type); 
    488     return exists $at{lc $type} ? 1 : 0; 
     488    my $has = exists $at{lc $type} ? 1 : 0; 
     489    if ($has) { 
     490        my $map_class = MT->model('templatemap'); 
     491        my $map = $map_class->load({ archive_type => $type, blog_id => $blog->id }); 
     492        $has = defined $map ? 1 : 0; 
     493    } 
     494    return $has; 
    489495} 
    490496 
  • branches/release-40/lib/MT/Template/ContextHandlers.pm

    r2602 r2606  
    43004300    my ($ctx, $args) = @_; 
    43014301    my $blog = $ctx->stash('blog'); 
    4302     my $at = lc ($args->{type} || $args->{archive_type}); 
     4302    my $at = ($args->{type} || $args->{archive_type}); 
    43034303    return $blog->has_archive_type($at); 
    43044304} 
     
    1170011700    my $archiver = MT->publisher->archiver($at); 
    1170111701    return '' unless $archiver; 
     11702    my $map_class = MT->model('templatemap'); 
     11703    my $map = $map_class->load({ archive_type => $at, blog_id => $blog->id }); 
     11704    return '' unless $map; 
    1170211705 
    1170311706    my $save_stamps; 
    11704  
    1170511707    if ($ctx->{current_archive_type} && $arg_at && ($ctx->{current_archive_type} eq $arg_at)) { 
    1170611708        $save_stamps = 1; 
  • branches/release-40/php/lib/block.mtarchivelist.php

    r2294 r2606  
    2525          $repeat = false; 
    2626          return ''; 
     27        } 
     28        $map = $ctx->mt->db->fetch_templatemap( 
     29            array('type' => $at, 'blog_id' => $blog['blog_id'])); 
     30        if (empty($map)) { 
     31            $repeat = false; 
     32            return ''; 
    2733        } 
    2834        $ctx->localize($localvars); 
  • branches/release-40/php/lib/block.mtifarchivetypeenabled.php

    r1174 r2606  
    1515        $blog_at = ',' . $blog['blog_archive_type'] . ','; 
    1616        $enabled = preg_match("/,$at,/", $blog_at); 
     17        $map = $ctx->mt->db->fetch_templatemap( 
     18            array('type' => $at, 'blog_id' => $blog['blog_id'])); 
     19        if (empty($map)) 
     20            $enabled = 0; 
    1721        return $ctx->_hdlr_if($args, $content, $ctx, $repeat, $enabled); 
    1822    } else { 
  • branches/release-40/php/lib/mtdb_base.php

    r2589 r2606  
    150150                       $type_filter 
    151151              order by template_name"; 
     152        $result = $this->get_results($sql, ARRAY_A); 
     153        return $result; 
     154    } 
     155 
     156    function fetch_templatemap($args) { 
     157        if (isset($args['type'])) { 
     158            $type_filter = 'and templatemap_archive_type = \'' . $this->escape($args['type']) . '\''; 
     159        } 
     160        if (isset($args['blog_id'])) { 
     161            $blog_filter = 'and templatemap_blog_id = ' . intval($args['blog_id']); 
     162        } 
     163        $sql = "select * 
     164                  from mt_templatemap 
     165                 where 1 = 1 
     166                       $blog_filter 
     167                       $type_filter 
     168              order by templatemap_archive_type"; 
    152169        $result = $this->get_results($sql, ARRAY_A); 
    153170        return $result; 
  • branches/release-40/t/lib/MT/Test.pm

    r2601 r2606  
    682682    diag "Saved blog-name template"; 
    683683 
     684    my $tmpl_map = new MT::TemplateMap; 
     685    $tmpl_map->blog_id(1); 
     686    $tmpl_map->template_id($tmpl->id); 
     687    $tmpl_map->archive_type('Daily'); 
     688    $tmpl_map->is_preferred(1); 
     689    $tmpl_map->build_type(1); 
     690    $tmpl_map->save or die "Couldn't save template map record (Daily): ".$tmpl_map->errstr; 
     691 
     692    my $tmpl_map = new MT::TemplateMap; 
     693    $tmpl_map->blog_id(1); 
     694    $tmpl_map->template_id($tmpl->id); 
     695    $tmpl_map->archive_type('Weekly'); 
     696    $tmpl_map->is_preferred(1); 
     697    $tmpl_map->build_type(1); 
     698    $tmpl_map->save or die "Couldn't save template map record (Weekly): ".$tmpl_map->errstr; 
     699 
     700    # Revert into default for test... 
     701    $blog->archive_type('Individual,Monthly,Weekly,Daily,Category,Page'); 
     702    $blog->save; 
     703 
    684704    ### Asset 
    685705    use MT::Asset;