Changeset 1876

Show
Ignore:
Timestamp:
04/13/08 07:01:19 (15 months ago)
Author:
fumiakiy
Message:

Fixed the issue in which MTElse and MTElseIf did not work correctly when "name" or "tag" argument was omitted both in static and in dynamic. BugId:69678

Also fixed the bug case filed as BugId:79027 in PHP tag handlers.

Location:
branches/release-34
Files:
3 modified

Legend:

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

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

    r1861 r1876  
    249249        } 
    250250        if ((count($args) > 0) && (!isset($args['name']) && !isset($args['var']) && !isset($args['tag']))) { 
    251             require_once("function.mtgetvar.php"); 
    252             $var = smarty_function_mtgetvar(array('name' => '__name__'), $ctx); 
    253             if (isset($var) && $var != '') 
    254                 $args['name'] = $var; 
     251            $vars =& $ctx->__stash['vars']; 
     252            if ( array_key_exists('__cond_tag__', $vars) ) { 
     253                $tag = $vars['__cond_tag__']; 
     254                unset($vars['__cond_tag__']); 
     255                if ( isset($tag) && $tag ) 
     256                    $args['tag'] = $tag; 
     257            } 
     258            else if ( array_key_exists('__cond_name__', $vars) ) { 
     259                $name = $vars['__cond_name__']; 
     260                unset($vars['__cond_name__']); 
     261                if ( isset($name) && $name ) 
     262                    $args['name'] = $name; 
     263            } 
     264            if ( array_key_exists('__cond_value__', $vars) ) { 
     265                $value = $vars['__cond_value__']; 
     266                unset($vars['__cond_value__']); 
     267                if ( isset($value) && $value ) 
     268                    $args['value'] = $value; 
     269            } 
     270            $ctx->__stash['vars'] =& $vars; 
    255271        } 
    256272        if (count($args) >= 1) { # else-if case 
  • branches/release-34/php/lib/block.mtif.php

    r1187 r1876  
    7878        } 
    7979 
    80         if (isset($args['name'])) 
    81             $var_key = $args['name']; 
    82         else if(isset($args['var'])) 
    83             $var_key = $args['var']; 
    84         else if(isset($args['tag'])) 
    85             $var_key = $args['tag']; 
    8680        require_once("function.mtsetvar.php"); 
    87         smarty_function_mtsetvar(array('name' => '__name__', 'value' => $var_key), $ctx); 
    88         smarty_function_mtsetvar(array('name' => '__value__', 'value' => $val), $ctx); 
     81        if(isset($args['tag'])) { 
     82            smarty_function_mtsetvar(array('name' => '__cond_tag__', 'value' => $args['tag']), $ctx); 
     83        } 
     84        else { 
     85            if (isset($args['name'])) 
     86                $var_key = $args['name']; 
     87            else if(isset($args['var'])) 
     88                $var_key = $args['var']; 
     89            smarty_function_mtsetvar(array('name' => '__cond_name__', 'value' => $var_key), $ctx); 
     90        } 
     91        smarty_function_mtsetvar(array('name' => '__cond_value__', 'value' => $val), $ctx); 
    8992 
    9093        if ( array_key_exists('op', $args) ) { 
     
    140143    } else { 
    141144        $vars =& $ctx->__stash['vars']; 
    142         unset($vars['__name__']); 
    143         unset($vars['__value__']); 
    144145        return $ctx->_hdlr_if($args, $content, $ctx, $repeat); 
    145146    }