[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