developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Ticket #865: 865-jFormsCompiler_jf_1_0.patch

File 865-jFormsCompiler_jf_1_0.patch, 2.5 KB (added by thomas, 12 years ago)
  • lib/jelix/forms/jFormsCompiler_jf_1_0.class.php

     
    8888        return $twocontrols;
    8989    }
    9090
    91     protected $allowedInputType = array('string','boolean','decimal','integer','hexadecimal',
     91    protected $allowedType = array('string','boolean','decimal','integer','hexadecimal',
    9292                                      'datetime','date','time','localedatetime','localedate','localetime',
    9393                                      'url','email','ipv4','ipv6');
    9494
    9595    protected function generateInput(&$source, $control, &$attributes) {
    96         $type='string';
    97         if(isset($attributes['type'])){
    98             $type = strtolower($attributes['type']);
    99             if(!in_array($type, $this->allowedInputType)){
    100                 throw new jException('jelix~formserr.datatype.unknow',array($type,'input',$this->sourceFile));
    101             }
    102 
    103             if($type != 'string')
    104                 $source[]='$ctrl->datatype= new jDatatype'.$type.'();';
    105             unset($attributes['type']);
    106         }
     96        $type = $this->attrType($source, $attributes);
    10797        $this->attrRequired($source, $attributes);
    10898        $this->attrDefaultvalue($source, $attributes);
    10999        if(isset($attributes['minlength'])){
     
    160150    }
    161151
    162152    protected function generateOutput(&$source, $control, &$attributes) {
     153        $type = $this->attrType($source, $attributes);
    163154        $this->attrDefaultvalue($source, $attributes);
    164155        $this->readLabel($source, $control, 'output');
    165156        //$this->readHelpHintAlert($source, $control);
     
    337328        }
    338329    }
    339330
     331    protected function attrType(&$source, &$attributes) {
     332        $type = 'string';
     333        if(isset($attributes['type'])){
     334            $type = strtolower($attributes['type']);
     335            if(!in_array($type, $this->allowedType)){
     336                throw new jException('jelix~formserr.datatype.unknow',array($type,'input',$this->sourceFile));
     337            }
     338           
     339            if($type != 'string')
     340                $source[]='$ctrl->datatype= new jDatatype'.$type.'();';
     341            unset($attributes['type']);
     342        }
     343        return $type;
     344    }
     345
    340346    protected function readLabel(&$source, $control, $controltype) {
    341347        if(!isset($control->label)){
    342348            throw new jException('jelix~formserr.tag.missing',array('label',$controltype,$this->sourceFile));