Changeset 530
- Timestamp:
- 08/08/07 22:52:22 (1 year ago)
- Files:
-
- trunk/lib/jelix-www/js/jforms.js (modified) (5 diffs)
- trunk/lib/jelix-www/js/jforms.js (modified) (5 diffs)
- trunk/lib/jelix/forms/jFormsBase.class.php (modified) (3 diffs)
- trunk/lib/jelix/forms/jFormsBase.class.php (modified) (3 diffs)
- trunk/lib/jelix/forms/jFormsCompiler.class.php (modified) (1 diff)
- trunk/lib/jelix/forms/jFormsCompiler.class.php (modified) (1 diff)
- trunk/lib/jelix/plugins/tpl/html/block.formcontrols.php (modified) (1 diff)
- trunk/lib/jelix/plugins/tpl/html/block.formcontrols.php (modified) (1 diff)
- trunk/testapp/modules/jelix_tests/tests/jforms.compiler.html.php (modified) (3 diffs)
- trunk/testapp/modules/jelix_tests/tests/jforms.compiler.html.php (modified) (3 diffs)
- trunk/testapp/modules/testapp/forms/sample.form.xml (modified) (2 diffs)
- trunk/testapp/modules/testapp/forms/sample.form.xml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/jelix-www/js/jforms.js
r526 r530 91 91 break; 92 92 case 'datetime' : 93 var t = (val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/) != -1) 93 var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/); 94 if(t == null){ ok=false; break; } 94 95 var yy = parseInt(t[1]); 95 96 var mm = parseInt(t[2]) -1; … … 99 100 var ts = parseInt(t[6]); 100 101 var dt = new Date(yy,mm,dd,th,tn,ts); 101 if(yy != dt.getFullYear() || mm != dt.getMonth() || d t != dd.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds())102 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) 102 103 ok = false; 103 104 else … … 105 106 break; 106 107 case 'date' : 107 var t = (val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/) != -1) 108 var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/); 109 if(t == null){ ok=false; break; } 108 110 var yy = parseInt(t[1]); 109 111 var mm = parseInt(t[2]) -1; 110 112 var dd = parseInt(t[3]); 111 113 var dt = new Date(yy,mm,dd,0,0,0); 112 if(yy != dt.getFullYear() || mm != dt.getMonth() || dt != dd.getDate()) 113 ok = false; 114 else 115 ok = true; 116 break; 114 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) 115 ok = false; 116 else 117 ok = true; 118 break; 119 case 'localetime' : 117 120 case 'time' : 118 var t = (val.match(/^(\d{2}):(\d{2}):(\d{2})$/) != -1) 121 var t = val.match(/^(\d{2}):(\d{2}):(\d{2})$/); 122 if(t == null){ ok=false; break; } 119 123 var th = parseInt(t[4]); 120 124 var tm = parseInt(t[5]); … … 126 130 ok = true; 127 131 break; 128 /*case 'localedatetime' : 129 ok = (val.search(/^$/) != -1) 132 case 'localedatetime' : 133 var yy, mm, dd, th, tm, ts; 134 if(c.lang.indexOf('fr_') == 0) { 135 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})$/); 136 if(t == null){ ok=false; break; } 137 yy = parseInt(t[3]); 138 mm = parseInt(t[2]) -1; 139 dd = parseInt(t[1]); 140 th = parseInt(t[4]); 141 tm = parseInt(t[5]); 142 ts = parseInt(t[6]); 143 }else{ 144 //default is en_* format 145 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})$/); 146 if(t == null){ ok=false; break; } 147 yy = parseInt(t[3]); 148 mm = parseInt(t[1]) -1; 149 dd = parseInt(t[2]); 150 th = parseInt(t[4]); 151 tm = parseInt(t[5]); 152 ts = parseInt(t[6]); 153 } 154 var dt = new Date(yy,mm,dd,th,tn,ts); 155 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) 156 ok = false; 157 else 158 ok = true; 130 159 break; 131 160 case 'localedate' : 132 ok = (val.search(/^$/) != -1) 133 break; 134 case 'localetime' : 135 ok = (val.search(/^$/) != -1) 136 break; 137 case 'url' : 161 var yy, mm, dd; 162 if(c.lang.indexOf('fr_') == 0) { 163 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); 164 if(t == null){ ok=false; break; } 165 yy = parseInt(t[3]); 166 mm = parseInt(t[2]) -1; 167 dd = parseInt(t[1]); 168 }else{ 169 //default is en_* format 170 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); 171 if(t == null){ ok=false; break; } 172 yy = parseInt(t[3]); 173 mm = parseInt(t[1]) -1; 174 dd = parseInt(t[2]); 175 } 176 var dt = new Date(yy,mm,dd,0,0,0); 177 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) 178 ok = false; 179 else 180 ok = true; 181 break; 182 /*case 'url' : 138 183 ok = (val.search(/^$/) != -1) 139 184 break;*/ … … 252 297 } 253 298 254 255 256 257 299 /* 258 300 informations sur un control trunk/lib/jelix-www/js/jforms.js
r526 r530 91 91 break; 92 92 case 'datetime' : 93 var t = (val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/) != -1) 93 var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/); 94 if(t == null){ ok=false; break; } 94 95 var yy = parseInt(t[1]); 95 96 var mm = parseInt(t[2]) -1; … … 99 100 var ts = parseInt(t[6]); 100 101 var dt = new Date(yy,mm,dd,th,tn,ts); 101 if(yy != dt.getFullYear() || mm != dt.getMonth() || d t != dd.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds())102 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) 102 103 ok = false; 103 104 else … … 105 106 break; 106 107 case 'date' : 107 var t = (val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/) != -1) 108 var t = val.match(/^(\d{4})\-(\d{2})\-(\d{2})$/); 109 if(t == null){ ok=false; break; } 108 110 var yy = parseInt(t[1]); 109 111 var mm = parseInt(t[2]) -1; 110 112 var dd = parseInt(t[3]); 111 113 var dt = new Date(yy,mm,dd,0,0,0); 112 if(yy != dt.getFullYear() || mm != dt.getMonth() || dt != dd.getDate()) 113 ok = false; 114 else 115 ok = true; 116 break; 114 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) 115 ok = false; 116 else 117 ok = true; 118 break; 119 case 'localetime' : 117 120 case 'time' : 118 var t = (val.match(/^(\d{2}):(\d{2}):(\d{2})$/) != -1) 121 var t = val.match(/^(\d{2}):(\d{2}):(\d{2})$/); 122 if(t == null){ ok=false; break; } 119 123 var th = parseInt(t[4]); 120 124 var tm = parseInt(t[5]); … … 126 130 ok = true; 127 131 break; 128 /*case 'localedatetime' : 129 ok = (val.search(/^$/) != -1) 132 case 'localedatetime' : 133 var yy, mm, dd, th, tm, ts; 134 if(c.lang.indexOf('fr_') == 0) { 135 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})$/); 136 if(t == null){ ok=false; break; } 137 yy = parseInt(t[3]); 138 mm = parseInt(t[2]) -1; 139 dd = parseInt(t[1]); 140 th = parseInt(t[4]); 141 tm = parseInt(t[5]); 142 ts = parseInt(t[6]); 143 }else{ 144 //default is en_* format 145 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})$/); 146 if(t == null){ ok=false; break; } 147 yy = parseInt(t[3]); 148 mm = parseInt(t[1]) -1; 149 dd = parseInt(t[2]); 150 th = parseInt(t[4]); 151 tm = parseInt(t[5]); 152 ts = parseInt(t[6]); 153 } 154 var dt = new Date(yy,mm,dd,th,tn,ts); 155 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate() || th != dt.getHours() || tm != dt.getMinutes() || ts != dt.getSeconds()) 156 ok = false; 157 else 158 ok = true; 130 159 break; 131 160 case 'localedate' : 132 ok = (val.search(/^$/) != -1) 133 break; 134 case 'localetime' : 135 ok = (val.search(/^$/) != -1) 136 break; 137 case 'url' : 161 var yy, mm, dd; 162 if(c.lang.indexOf('fr_') == 0) { 163 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); 164 if(t == null){ ok=false; break; } 165 yy = parseInt(t[3]); 166 mm = parseInt(t[2]) -1; 167 dd = parseInt(t[1]); 168 }else{ 169 //default is en_* format 170 var t = val.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); 171 if(t == null){ ok=false; break; } 172 yy = parseInt(t[3]); 173 mm = parseInt(t[1]) -1; 174 dd = parseInt(t[2]); 175 } 176 var dt = new Date(yy,mm,dd,0,0,0); 177 if(yy != dt.getFullYear() || mm != dt.getMonth() || dd != dt.getDate()) 178 ok = false; 179 else 180 ok = true; 181 break; 182 /*case 'url' : 138 183 ok = (val.search(/^$/) != -1) 139 184 break;*/ … … 252 297 } 253 298 254 255 256 257 299 /* 258 300 informations sur un control trunk/lib/jelix/forms/jFormsBase.class.php
r527 r530 139 139 if(!$daorec) 140 140 return new Exception('formId is invalid, couldn\'t get the corresponding dao object'); 141 142 $prop = $daorec->getProperties(); 141 143 foreach($this->_controls as $name=>$ctrl){ 142 if(isset($daorec->$name)) 143 $this->_container->datas[$name] = $daorec->$name; 144 if(isset($prop[$name])) { 145 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 146 $dt = new jDateTime(); 147 $dt->setFromString($daorec->$name, jDateTime::DB_DTFORMAT); 148 $this->_container->datas[$name] = $dt->toString(jDateTime::LANG_DTFORMAT); 149 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 150 $dt = new jDateTime(); 151 $dt->setFromString($daorec->$name, jDateTime::DB_DFORMAT); 152 $this->_container->datas[$name] = $dt->toString(jDateTime::LANG_DFORMAT); 153 }else{ 154 $this->_container->datas[$name] = $daorec->$name; 155 } 156 } 144 157 } 145 158 } … … 155 168 $dao = jDao::create($daoSelector); 156 169 $daorec = jDao::createRecord($daoSelector); 170 $prop = $daorec->getProperties(); 157 171 foreach($this->_controls as $name=>$ctrl){ 158 172 if(is_array($this->_container->datas[$name])){ … … 162 176 // do nothing for arrays ? 163 177 } 164 }else 178 }else{ 165 179 $daorec->$name = $this->_container->datas[$name]; 180 } 181 182 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 183 $dt = new jDateTime(); 184 $dt->setFromString($daorec->$name, jDateTime::LANG_DTFORMAT); 185 $daorec->$name = $dt->toString(jDateTime::DB_DTFORMAT); 186 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 187 $dt = new jDateTime(); 188 $dt->setFromString($daorec->$name, jDateTime::LANG_DFORMAT); 189 $daorec->$name = $dt->toString(jDateTime::DB_DFORMAT); 190 } 166 191 } 167 192 if($this->_container->formId){ trunk/lib/jelix/forms/jFormsBase.class.php
r527 r530 139 139 if(!$daorec) 140 140 return new Exception('formId is invalid, couldn\'t get the corresponding dao object'); 141 142 $prop = $daorec->getProperties(); 141 143 foreach($this->_controls as $name=>$ctrl){ 142 if(isset($daorec->$name)) 143 $this->_container->datas[$name] = $daorec->$name; 144 if(isset($prop[$name])) { 145 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 146 $dt = new jDateTime(); 147 $dt->setFromString($daorec->$name, jDateTime::DB_DTFORMAT); 148 $this->_container->datas[$name] = $dt->toString(jDateTime::LANG_DTFORMAT); 149 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 150 $dt = new jDateTime(); 151 $dt->setFromString($daorec->$name, jDateTime::DB_DFORMAT); 152 $this->_container->datas[$name] = $dt->toString(jDateTime::LANG_DFORMAT); 153 }else{ 154 $this->_container->datas[$name] = $daorec->$name; 155 } 156 } 144 157 } 145 158 } … … 155 168 $dao = jDao::create($daoSelector); 156 169 $daorec = jDao::createRecord($daoSelector); 170 $prop = $daorec->getProperties(); 157 171 foreach($this->_controls as $name=>$ctrl){ 158 172 if(is_array($this->_container->datas[$name])){ … … 162 176 // do nothing for arrays ? 163 177 } 164 }else 178 }else{ 165 179 $daorec->$name = $this->_container->datas[$name]; 180 } 181 182 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 183 $dt = new jDateTime(); 184 $dt->setFromString($daorec->$name, jDateTime::LANG_DTFORMAT); 185 $daorec->$name = $dt->toString(jDateTime::DB_DTFORMAT); 186 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 187 $dt = new jDateTime(); 188 $dt->setFromString($daorec->$name, jDateTime::LANG_DFORMAT); 189 $daorec->$name = $dt->toString(jDateTime::DB_DFORMAT); 190 } 166 191 } 167 192 if($this->_container->formId){ trunk/lib/jelix/forms/jFormsCompiler.class.php
r527 r530 318 318 $source[]='$js.="gControl = new jFormsControl(\''.(string)$control['ref'].'\', \'".$label."\', \''.$dt.'\');\n";'; 319 319 320 if($dt == 'localedate' || $dt =='localedatetime' || $dt =='localetime'){ 321 $source[]='$js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n";'; 322 } 323 320 324 if(isset($control['readonly']) && 'true' == (string)$control['readonly']){ 321 325 $source[]='$js.="gControl.readonly = true;\n";'; trunk/lib/jelix/forms/jFormsCompiler.class.php
r527 r530 318 318 $source[]='$js.="gControl = new jFormsControl(\''.(string)$control['ref'].'\', \'".$label."\', \''.$dt.'\');\n";'; 319 319 320 if($dt == 'localedate' || $dt =='localedatetime' || $dt =='localetime'){ 321 $source[]='$js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n";'; 322 } 323 320 324 if(isset($control['readonly']) && 'true' == (string)$control['readonly']){ 321 325 $source[]='$js.="gControl.readonly = true;\n";'; trunk/lib/jelix/plugins/tpl/html/block.formcontrols.php
r528 r530 44 44 } 45 45 else { 46 $t->_privateVars[\'__form\'] = '.$param[0].'; 46 $t->_privateVars[\'__form\'] = '.$param[0].'; 47 $ctrls_to_display=null; 47 48 }'; 48 49 } trunk/lib/jelix/plugins/tpl/html/block.formcontrols.php
r528 r530 44 44 } 45 45 else { 46 $t->_privateVars[\'__form\'] = '.$param[0].'; 46 $t->_privateVars[\'__form\'] = '.$param[0].'; 47 $ctrls_to_display=null; 47 48 }'; 48 49 } trunk/testapp/modules/jelix_tests/tests/jforms.compiler.html.php
r527 r530 619 619 19=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 620 620 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localedatetime\');\n"; 621 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 621 622 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 622 623 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; … … 624 625 20=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 625 626 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localedate\');\n"; 627 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 626 628 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 627 629 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; … … 629 631 21=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 630 632 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localetime\');\n"; 633 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 631 634 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 632 635 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; trunk/testapp/modules/jelix_tests/tests/jforms.compiler.html.php
r527 r530 619 619 19=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 620 620 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localedatetime\');\n"; 621 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 621 622 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 622 623 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; … … 624 625 20=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 625 626 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localedate\');\n"; 627 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 626 628 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 627 629 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; … … 629 631 21=>'$label = str_replace("\'","\\\'",\'Votre nom\'); 630 632 $js.="gControl = new jFormsControl(\'nom\', \'".$label."\', \'localetime\');\n"; 633 $js.="gControl.lang=\'".$GLOBALS[\'gJConfig\']->defaultLocale."\';\n"; 631 634 $js.="gControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 632 635 $js.="gControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; trunk/testapp/modules/testapp/forms/sample.form.xml
r526 r530 38 38 </listbox> 39 39 40 41 40 <checkboxes ref="objets" required="true"> 42 41 <label>Vous avez </label> … … 47 46 </checkboxes> 48 47 48 <input ref="datenaissance" type="localedate"> 49 <label>Votre date de naissance</label> 50 <help>Le format de la date est jj/mm/aaaa</help> 51 </input> 52 49 53 </forms> trunk/testapp/modules/testapp/forms/sample.form.xml
r526 r530 38 38 </listbox> 39 39 40 41 40 <checkboxes ref="objets" required="true"> 42 41 <label>Vous avez </label> … … 47 46 </checkboxes> 48 47 48 <input ref="datenaissance" type="localedate"> 49 <label>Votre date de naissance</label> 50 <help>Le format de la date est jj/mm/aaaa</help> 51 </input> 52 49 53 </forms>
