Changeset 224

Show
Ignore:
Timestamp:
12/24/2005 09:26:35 PM (3 years ago)
Author:
xue
Message:

Fixed HTML encoding problem.

Location:
trunk/framework/Web
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/framework/Web/THttpRequest.php

    r209 r224  
    336336         * @param string service parameter 
    337337         * @param array GET parameters, null if not needed 
     338         * @param boolean whether to encode the ampersand in URL, defaults to false. 
    338339         * @return string URL 
    339340         */ 
    340         public function constructUrl($serviceID,$serviceParam,$getItems=null) 
     341        public function constructUrl($serviceID,$serviceParam,$getItems=null,$encodeAmpersand=false) 
    341342        { 
    342343                $url=$this->getApplicationPath(); 
     
    344345                if(!empty($serviceParam)) 
    345346                        $url.=$serviceParam; 
     347                $amp=$encodeAmpersand?'&':'&'; 
    346348                if(is_array($getItems) || $getItems instanceof Traversable) 
    347349                { 
    348350                        foreach($getItems as $name=>$value) 
    349                                 $url.='&'.urlencode($name).'='.urlencode($value); 
     351                                $url.=$amp.urlencode($name).'='.urlencode($value); 
    350352                } 
    351353                if(defined('SID') && SID != '') 
    352                         $url.='&'.SID; 
     354                        $url.=$amp.SID; 
    353355                return $url; 
    354356        } 
  • trunk/framework/Web/UI/THtmlWriter.php

    r136 r224  
    114114                'abbr'=>true, 
    115115                'accesskey'=>true, 
    116                 'align'=>false, 
    117116                'alt'=>true, 
    118                 'autocomplete'=>false, 
    119117                'axis'=>true, 
    120118                'background'=>true, 
    121                 'bgcolor'=>false, 
    122                 'border'=>false, 
    123                 'bordercolor'=>false, 
    124                 'cellpadding'=>false, 
    125                 'cellspacing'=>false, 
    126                 'checked'=>false, 
    127119                'class'=>true, 
    128                 'cols'=>false, 
    129                 'colspan'=>false, 
    130120                'content'=>true, 
    131                 'coords'=>false, 
    132                 'dir'=>false, 
    133                 'disabled'=>false, 
    134                 'for'=>false, 
    135121                'headers'=>true, 
    136                 'height'=>false, 
    137122                'href'=>true, 
    138                 'id'=>false, 
    139123                'longdesc'=>true, 
    140                 'maxlength'=>false, 
    141                 'multiple'=>false, 
    142                 'name'=>false, 
    143                 'nowrap'=>false, 
    144124                'onclick'=>true, 
    145125                'onchange'=>true, 
    146                 'readonly'=>false, 
    147                 'rel'=>false, 
    148                 'rows'=>false, 
    149                 'rowspan'=>false, 
    150                 'rules'=>false, 
    151                 'scope'=>false, 
    152                 'selected'=>false, 
    153                 'shape'=>false, 
    154                 'size'=>false, 
    155126                'src'=>true, 
    156                 'style'=>false, 
    157                 'tabindex'=>false, 
    158                 'target'=>false, 
    159127                'title'=>true, 
    160                 'type'=>false, 
    161                 'usemap'=>false, 
    162                 'valign'=>false, 
    163                 'value'=>true, 
    164                 'vcard_name'=>false, 
    165                 'width'=>false, 
    166                 'wrap'=>false 
     128                'value'=>true 
    167129        ); 
    168130        private static $_styleEncode=array( 
    169131                'background-image'=>true, 
    170                 'font-family'=>false, 
    171132                'list-style-image'=>true 
    172133        ); 
     
    199160        public function addStyleAttribute($name,$value) 
    200161        { 
    201                 if(isset(self::$_styleEncode[$name])) 
    202                         $this->_styles[$name]=THttpUtility::htmlEncode($value); 
    203                 else 
    204                         $this->_styles[$name]=$value; 
     162                $this->_styles[$name]=isset(self::$_styleEncode[$name])?THttpUtility::htmlEncode($value):$value; 
    205163        } 
    206164 
  • trunk/framework/Web/UI/TTemplateManager.php

    r212 r224  
    318318        protected function configureEvent($component,$name,$value) 
    319319        { 
     320                $value=THttpUtility::htmlDecode($value); 
    320321                if(strpos($value,'.')===false) 
    321322                        $component->attachEventHandler($name,array($component,'TemplateControl.'.$value)); 
     
    337338                        if(is_array($value)) 
    338339                        { 
     340                                $v=THttpUtility::htmlDecode($value[1]); 
    339341                                switch($value[0]) 
    340342                                { 
    341343                                        case self::CONFIG_DATABIND: 
    342                                                 $component->bindProperty($name,$value[1]); 
     344                                                $component->bindProperty($name,$v); 
    343345                                                break; 
    344346                                        case self::CONFIG_EXPRESSION: 
    345                                                 $component->$setter($component->evaluateExpression($value[1])); 
     347                                                $component->$setter($component->evaluateExpression($v)); 
    346348                                                break; 
    347349                                        case self::CONFIG_ASSET:                // asset URL 
    348                                                 $url=$this->_assetManager->publishFilePath($this->_contextPath.'/'.$value[1]); 
     350                                                $url=$this->_assetManager->publishFilePath($this->_contextPath.'/'.$v); 
    349351                                                $component->$setter($url); 
    350352                                                break; 
    351353                                        case self::CONFIG_PARAMETER:            // application parameter 
    352                                                 $component->$setter(Prado::getApplication()->getParameters()->itemAt($value[1])); 
     354                                                $component->$setter(Prado::getApplication()->getParameters()->itemAt($v)); 
    353355                                                break; 
    354356                                        default:        // an error if reaching here 
     
    357359                        } 
    358360                        else 
    359                                 $component->$setter($value); 
     361                                $component->$setter(THttpUtility::htmlDecode($value)); 
    360362                } 
    361363                else 
     
    373375                if(is_array($value)) 
    374376                { 
     377                        $v=THttpUtility::htmlDecode($value[1]); 
    375378                        switch($value[0]) 
    376379                        { 
    377380                                case self::CONFIG_DATABIND:             // databinding 
    378                                         $component->bindProperty($name,$value[1]); 
     381                                        $component->bindProperty($name,$v); 
    379382                                        break; 
    380383                                case self::CONFIG_EXPRESSION:           // expression 
    381                                         $component->setSubProperty($name,$component->evaluateExpression($value[1])); 
     384                                        $component->setSubProperty($name,$component->evaluateExpression($v)); 
    382385                                        break; 
    383386                                case self::CONFIG_ASSET:                // asset URL 
    384                                         $url=$this->_assetManager->publishFilePath($this->_contextPath.'/'.$value[1]); 
     387                                        $url=$this->_assetManager->publishFilePath($this->_contextPath.'/'.$v); 
    385388                                        $component->setSubProperty($name,$url); 
    386389                                        break; 
    387390                                case self::CONFIG_PARAMETER:            // application parameter 
    388                                         $component->setSubProperty($name,Prado::getApplication()->getParameters()->itemAt($value[1])); 
     391                                        $component->setSubProperty($name,Prado::getApplication()->getParameters()->itemAt($v)); 
    389392                                        break; 
    390393                                default:        // an error if reaching here 
     
    393396                } 
    394397                else 
    395                         $component->setSubProperty($name,$value); 
     398                        $component->setSubProperty($name,THttpUtility::htmlDecode($value)); 
    396399        } 
    397400