[MTOS-dev] [movabletype] fumiakiy, r1862: Re-fixed mtif stomping on __name__ and _...

Hirotaka Ogawa hirotaka.ogawa at gmail.com
Fri Apr 11 08:54:52 PDT 2008


On Sat, Apr 12, 2008 at 12:09 AM,  <commits at code.sixapart.com> wrote:
> 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
>
>
>  U   branches/release-34/lib/MT/Builder.pm
>  U   branches/release-34/lib/MT/Template/ContextHandlers.pm
>
>
>  Modified: branches/release-34/lib/MT/Builder.pm
>  ===================================================================
>  --- branches/release-34/lib/MT/Builder.pm       2008-04-11 14:40:20 UTC (rev 1861)
>  +++ branches/release-34/lib/MT/Builder.pm       2008-04-11 15:09:30 UTC (rev 1862)
>  @@ -400,6 +400,7 @@
>                      my $vars = $ctx->{__stash}{vars};
>                      local $vars->{__value__} = delete $vars->{__cond_value__};
>                      local $vars->{__name__}  = delete $vars->{__cond_name__};
>  +                    delete $vars->{__cond_tag__};
>                      $out = $out ? $ctx->slurp(\%args, $cond) : $ctx->else(\%args, $cond);
>                      return $build->error(MT->translate("Error in <mt[_1]> tag: [_2]", $t->[0], $ctx->errstr))
>                          unless defined $out;
>

I can't figure out what you want to do by this modification.  Perhaps,
you need to do as like follows:

--- branches/release-34/lib/MT/Builder.pm       2008-04-11 14:40:20
UTC (rev 1861)
+++ branches/release-34/lib/MT/Builder.pm       2008-04-11 15:09:30
UTC (rev 1862)
@@ -400,6 +400,7 @@
                    my $vars = $ctx->{__stash}{vars};
                    local $vars->{__value__} = delete $vars->{__cond_value__};
                    local $vars->{__name__}  = delete $vars->{__cond_name__};
                    $out = $out ? $ctx->slurp(\%args, $cond) :
$ctx->else(\%args, $cond);
+                    delete $vars->{__cond_tag__};
                    return $build->error(MT->translate("Error in
<mt[_1]> tag: [_2]", $t->[0], $ctx->errstr))
                        unless defined $out;



>  Modified: branches/release-34/lib/MT/Template/ContextHandlers.pm
>  ===================================================================
>  --- branches/release-34/lib/MT/Template/ContextHandlers.pm      2008-04-11 14:40:20 UTC (rev 1861)
>  +++ branches/release-34/lib/MT/Template/ContextHandlers.pm      2008-04-11 15:09:30 UTC (rev 1862)
>  @@ -1348,10 +1348,15 @@
>      my ($ctx, $args, $cond) = @_;
>      local $args->{'@'};
>      delete $args->{'@'};
>  -    if  ((keys %$args) == 1) {
>  -        my $name = $args->{name} || $args->{var} || $args->{tag} || undef;
>  -        $name = ($ctx->var('__name__') || undef) unless $name;
>  -        $args->{name} = $name if $name;
>  +    if  ((keys %$args) >= 1) {
>  +        unless ($args->{name} || $args->{var} || $args->{tag}) {
>  +            if ( my $t = $ctx->var('__cond_tag__') ) {
>  +                $args->{tag} = $t;
>  +            }
>  +            elsif ( my $n = $ctx->var('__cond_name__') ) {
>  +                $args->{name} = $n;
>  +            }
>  +        }
>      }
>      if (%$args) {
>          defined(my $res = _hdlr_if(@_)) or return;
>  @@ -1362,8 +1367,14 @@
>
>   sub _hdlr_elseif {
>      my ($ctx, $args, $cond) = @_;
>  -    $args->{name} = $ctx->var('__name__')
>  -        unless ($args->{name} || $args->{var} || $args->{tag} || undef);
>  +    unless ($args->{name} || $args->{var} || $args->{tag}) {
>  +        if ( my $t = $ctx->var('__cond_tag__') ) {
>  +            $args->{tag} = $t;
>  +        }
>  +        elsif ( my $n = $ctx->var('__cond_name__') ) {
>  +            $args->{name} = $n;
>  +        }
>  +    }
>      return _hdlr_else($ctx, $args, $cond);
>   }
>
>  @@ -1411,14 +1422,15 @@
>              if (my $ph = $ctx->post_process_handler) {
>                  $value = $ph->($ctx, $args, $value);
>              }
>  +            $ctx->{__stash}{vars}{__cond_tag__} = $args->{tag};
>          }
>          else {
>              return $ctx->error(MT->translate("Invalid tag [_1] specified.", $tag));
>          }
>      }
>
>  -    local $ctx->{__stash}{vars}{__cond_value__} = $value;
>  -    local $ctx->{__stash}{vars}{__cond_name__} = $var;
>  +    $ctx->{__stash}{vars}{__cond_value__} = $value;
>  +    $ctx->{__stash}{vars}{__cond_name__} = $var;
>
>      if ( my $op = $args->{op} ) {
>          my $rvalue = $args->{'value'};
>
>
>  _______________________________________________
>  MTOS-commits mailing list
>  MTOS-commits at sixapart.com
>  http://www.sixapart.com/mailman/listinfo/mtos-commits
>



-- 
Hirotaka Ogawa
http://twitter.com/ogawa
http://as-is.net/blog/


More information about the MTOS-dev mailing list