Changeset 1862

Show
Ignore:
Timestamp:
04/11/08 15:09:30 (15 months ago)
Author:
fumiakiy
Message:

Re-fixed mtif stomping on name and value variables. BugId:79027

Also fixed mtelseif tag did not work when tag argument was specified. BugId:69678

Location:
branches/release-34/lib/MT
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/release-34/lib/MT/Builder.pm

    r1859 r1862  
    401401                    local $vars->{__value__} = delete $vars->{__cond_value__}; 
    402402                    local $vars->{__name__}  = delete $vars->{__cond_name__}; 
     403                    delete $vars->{__cond_tag__}; 
    403404                    $out = $out ? $ctx->slurp(\%args, $cond) : $ctx->else(\%args, $cond); 
    404405                    return $build->error(MT->translate("Error in <mt[_1]> tag: [_2]", $t->[0], $ctx->errstr)) 
  • branches/release-34/lib/MT/Template/ContextHandlers.pm

    r1859 r1862  
    13491349    local $args->{'@'}; 
    13501350    delete $args->{'@'}; 
    1351     if  ((keys %$args) == 1) { 
    1352         my $name = $args->{name} || $args->{var} || $args->{tag} || undef; 
    1353         $name = ($ctx->var('__name__') || undef) unless $name; 
    1354         $args->{name} = $name if $name; 
     1351    if  ((keys %$args) >= 1) { 
     1352        unless ($args->{name} || $args->{var} || $args->{tag}) { 
     1353            if ( my $t = $ctx->var('__cond_tag__') ) { 
     1354                $args->{tag} = $t; 
     1355            } 
     1356            elsif ( my $n = $ctx->var('__cond_name__') ) { 
     1357                $args->{name} = $n; 
     1358            } 
     1359        } 
    13551360    } 
    13561361    if (%$args) { 
     
    13631368sub _hdlr_elseif { 
    13641369    my ($ctx, $args, $cond) = @_; 
    1365     $args->{name} = $ctx->var('__name__') 
    1366         unless ($args->{name} || $args->{var} || $args->{tag} || undef); 
     1370    unless ($args->{name} || $args->{var} || $args->{tag}) { 
     1371        if ( my $t = $ctx->var('__cond_tag__') ) { 
     1372            $args->{tag} = $t; 
     1373        } 
     1374        elsif ( my $n = $ctx->var('__cond_name__') ) { 
     1375            $args->{name} = $n; 
     1376        } 
     1377    } 
    13671378    return _hdlr_else($ctx, $args, $cond); 
    13681379} 
     
    14121423                $value = $ph->($ctx, $args, $value); 
    14131424            } 
     1425            $ctx->{__stash}{vars}{__cond_tag__} = $args->{tag}; 
    14141426        } 
    14151427        else { 
     
    14181430    } 
    14191431 
    1420     local $ctx->{__stash}{vars}{__cond_value__} = $value; 
    1421     local $ctx->{__stash}{vars}{__cond_name__} = $var; 
     1432    $ctx->{__stash}{vars}{__cond_value__} = $value; 
     1433    $ctx->{__stash}{vars}{__cond_name__} = $var; 
    14221434 
    14231435    if ( my $op = $args->{op} ) {