Changeset 1029 for branches

Show
Ignore:
Timestamp:
07/19/08 21:38:31 (1 month ago)
Author:
laurentj
Message:

Import Bibo s patch #581 from the trunk

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/experimental/jforms-groups/lib/jelix/docs/ns/jforms_1.1.rng

    r984 r1029  
    148148     </element> 
    149149  </define> 
    150    
     150 
    151151  <define name="checkbox"> 
    152152     <element name="checkbox"> 
     
    274274     </optional> 
    275275  </define> 
    276    
     276 
    277277  <define name="UI.attr.readonly"> 
    278278      <optional><attribute name="readonly"><choice><value>true</value><value>false</value></choice></attribute></optional> 
     
    284284      <optional><attribute name="defaultvalue" /></optional> 
    285285  </define> 
    286    
     286 
    287287  <define name="attr.length"> 
    288288      <optional><attribute name="minlength"><data type="integer" /></attribute></optional> 
     
    355355                <attribute name="daomethod" /> 
    356356                <attribute name="labelproperty" /> 
     357                <optional><attribute name="labelseparator" /></optional> 
    357358                <optional><attribute name="valueproperty" /></optional> 
    358359                <optional> 
  • branches/experimental/jforms-groups/lib/jelix/forms/jFormsCompiler_jf_1_1.class.php

    r985 r1029  
    192192 
    193193            if(isset($attrs['dao'])) { 
    194                 if ( isset($attrs['profile'])) 
    195                     $profile = '\''.$attrs['profile'].'\''; 
     194                if (isset($attrs['profile'])) 
     195                    $profile = ',\''.$attrs['profile'].'\''; 
    196196                else 
    197                     $profile = '\'\''; 
    198                 if(isset($attrs['valueproperty'])) { 
     197                    $profile = ',\'\''; 
     198                if (isset($attrs['valueproperty'])) { 
    199199                    $daovalue = $attrs['valueproperty']; 
    200200                } else 
     
    206206 
    207207                if(isset($attrs['criteria'])) 
    208                     $criteria=',\''.$attrs['criteria'].'\''; 
     208                    $criteria=',\''.$attrs['criteria'].'\',null'; 
    209209                elseif(isset($attrs['criteriafrom'])) 
    210210                    $criteria=',null,\''.$attrs['criteriafrom'].'\''; 
    211211                else 
    212                     $criteria=''; 
     212                    $criteria=',null,null'; 
     213                if (isset($attrs['labelseparator'])) 
     214                    $labelSeparator = ',\''.$attrs['labelseparator'].'\''; 
     215                else 
     216                    $labelSeparator = ''; 
    213217 
    214218                $source[]='$ctrl->datasource = new jFormsDaoDatasource(\''.$attrs['dao'].'\',\''. 
    215                                 $attrs['method'].'\',\''.$attrs['labelproperty'].'\',\''.$daovalue.'\','.$profile.$criteria.');'; 
     219                                $attrs['method'].'\',\''.$attrs['labelproperty'].'\',\''.$daovalue.'\''.$profile.$criteria.$labelSeparator.');'; 
    216220                if($controltype == 'submit'){ 
    217221                    $source[]='$ctrl->standalone=false;'; 
  • branches/experimental/jforms-groups/lib/jelix/forms/jFormsDatasource.class.php

    r966 r1029  
    7979    protected $selector; 
    8080    protected $method; 
    81     protected $labelProperty; 
     81    protected $labelProperty = array(); 
     82    protected $labelSeparator; 
    8283    protected $keyProperty; 
    8384    protected $profile; 
    8485 
    85     protected $criteria
    86     protected $criteriaForm
     86    protected $criteria = null
     87    protected $criteriaFrom = null
    8788 
    8889    protected $dao = null; 
    8990 
    90     function __construct ($selector ,$method , $label, $key, $profile='', $criteria=null, $criteriaFrom=null){ 
     91    function __construct ($selector ,$method , $label, $key, $profile='', $criteria=null, $criteriaFrom=null, $labelSeparator=''){ 
    9192        $this->selector  = $selector; 
    9293        $this->profile = $profile; 
    9394        $this->method = $method ; 
    94         $this->labelProperty = $label; 
    95         $this->criteria = $criteria; 
    96         $this->criteriaFrom = $criteriaFrom; 
     95        $this->labelProperty = preg_split('/[\s,]+/',$label); 
     96        $this->labelSeparator = $labelSeparator; 
     97        if ( $criteria !== null ) 
     98            $this->criteria = preg_split('/[\s,]+/',$criteria) ; 
     99        if ( $criteriaFrom !== null ) 
     100            $this->criteriaFrom = preg_split('/[\s,]+/',$criteriaFrom) ; 
     101 
    97102        if($key == ''){ 
    98103            $rec = jDao::createRecord($this->selector, $this->profile); 
     
    107112            $this->dao = jDao::get($this->selector, $this->profile); 
    108113        if($this->criteria !== null) { 
    109             $found = $this->dao->{$this->method}($this->criteria); 
     114            $found = call_user_func_array( array($this->dao, $this->method), $this->criteria); 
    110115        } else if ($this->criteriaFrom !== null) { 
    111             $found = $this->dao->{$this->method}($form->getData($this->criteriaFrom)); 
     116            $args = array() ; 
     117            foreach( (array)$this->criteriaFrom as $criteria ) { 
     118              array_push( $args, $form->getData($criteria) ) ; 
     119            } 
     120            $found = call_user_func_array( array($this->dao, $this->method), $args); 
    112121        } else { 
    113122            $found = $this->dao->{$this->method}(); 
     
    115124        $result=array(); 
    116125        foreach($found as $obj){ 
    117             $result[$obj->{$this->keyProperty}] = $obj->{$this->labelProperty}; 
     126            $label = '' ; 
     127            foreach( (array)$this->labelProperty as $property ) { 
     128                if (!empty( $obj->{$property})) 
     129                    $label .= $obj->{$property}.$this->labelSeparator; 
     130            } 
     131            if ($this->labelSeparator != '') 
     132                $label = substr($label, 0, -strlen($this->labelSeparator)); 
     133            $result[$obj->{$this->keyProperty}] = $label ; 
    118134        } 
    119135        return $result; 
     
    123139        if($this->dao === null) $this->dao = jDao::get($this->selector, $this->profile); 
    124140        $rec = $this->dao->get($key); 
    125         if($rec) 
    126             return $rec->{$this->labelProperty}; 
     141        if ($rec) { 
     142            $label = '' ; 
     143            foreach( (array)$this->labelProperty as $property ) { 
     144                if (!empty( $rec->{$property})) 
     145                    $label .= $rec->{$property}.$this->labelSeparator; 
     146            } 
     147            if ($this->labelSeparator != '') 
     148                $label = substr($label, 0, -strlen($this->labelSeparator)); 
     149            return $label ; 
     150        } 
    127151        else 
    128152            return null; 
    129153    } 
    130  
    131154} 
    132155 
  • branches/experimental/jforms-groups/testapp/modules/jelix_tests/daos/products.dao.xml

    r895 r1029  
    1717            </conditions> 
    1818       </method> 
     19       <method name="findBetweenId" type="select"> 
     20            <parameter name="minId" /> 
     21            <parameter name="maxId" /> 
     22            <conditions> 
     23                <gt property="id" expr="$minId" /> 
     24                <lt property="id" expr="$maxId" /> 
     25            </conditions> 
     26       </method> 
    1927   </factory> 
    2028</dao> 
  • branches/experimental/jforms-groups/testapp/modules/jelix_tests/tests/jforms.compiler_1_1.html_cli.php

    r994 r1029  
    44* @subpackage  unittest module 
    55* @author      Jouanneau Laurent 
    6 * @contributor Loic Mathaud 
     6* @contributor Loic Mathaud, Dominique Papin 
    77* @copyright   2007-2008 Jouanneau laurent 
    8 * @copyright   2007 Loic Mathaud 
     8* @copyright   2007 Loic Mathaud, 2008 Dominique Papin 
    99* @link        http://www.jelix.org 
    1010* @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html 
     
    369369</item> 
    370370</choice>', 
     37179=>'<menulist ref="nom" xmlns="http://jelix.org/ns/forms/1.1"> 
     372    <label>Votre nom</label> 
     373    <datasource dao="foo" method="bar" labelproperty="baz" valueproperty="plop" criteriafrom="prenom" profile="youp"/> 
     374</menulist>', 
     37580=>'<menulist ref="nom" xmlns="http://jelix.org/ns/forms/1.1"> 
     376    <label>Votre nom</label> 
     377    <datasource dao="foo" method="bar" labelproperty="baz,biz" valueproperty="plop" criteria="joe,dumb"/> 
     378</menulist>', 
     37981=>'<menulist ref="nom" xmlns="http://jelix.org/ns/forms/1.1"> 
     380    <label>Votre nom</label> 
     381    <datasource dao="foo" method="bar" labelproperty="baz,biz" valueproperty="plop" criteriafrom="prenom,nom"/> 
     382</menulist>', 
     38382=>'<menulist ref="nom" xmlns="http://jelix.org/ns/forms/1.1"> 
     384    <label>Votre nom</label> 
     385    <datasource dao="foo" method="bar" labelproperty="baz,biz" labelseparator=" - " valueproperty="plop" criteriafrom="prenom,nom"/> 
     386</menulist>', 
     387 
    371388    ); 
    372389 
     
    61663345=>'$ctrl= new jFormsControlsubmit(\'validation\'); 
    617634$ctrl->label=\'Type de validation\'; 
    618 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     635$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    619636$ctrl->standalone=false; 
    620637$this->addControl($ctrl);', 
     
    72674367=>'$ctrl= new jFormsControlcheckboxes(\'nom\'); 
    727744$ctrl->label=\'Votre nom\'; 
    728 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     745$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    729746$this->addControl($ctrl);', 
    73074768=>'$ctrl= new jFormsControlradiobuttons(\'nom\'); 
    731748$ctrl->label=\'Votre nom\'; 
    732 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     749$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    733750$this->addControl($ctrl);', 
    73475169=>'$ctrl= new jFormsControllistbox(\'nom\'); 
    735752$ctrl->label=\'Votre nom\'; 
    736 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     753$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    737754$this->addControl($ctrl);', 
    73875570=>'$ctrl= new jFormsControlmenulist(\'nom\'); 
    739756$ctrl->label=\'Votre nom\'; 
    740 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     757$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    741758$this->addControl($ctrl);', 
    74275971=>'$ctrl= new jFormsControllistbox(\'nom\'); 
    743760$ctrl->label=\'Votre nom\'; 
    744 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     761$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    745762$ctrl->multiple=true; 
    746763$this->addControl($ctrl);', 
    74776472=>'$ctrl= new jFormsControllistbox(\'nom\'); 
    748765$ctrl->label=\'Votre nom\'; 
    749 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',\'toto\'); 
     766$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',\'toto\',null); 
    750767$this->addControl($ctrl);', 
    75176873=>'$ctrl= new jFormsControllistbox(\'nom\'); 
    752769$ctrl->label=\'Votre nom\'; 
    753 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'youp\',\'toto\'); 
     770$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'youp\',\'toto\',null); 
    754771$this->addControl($ctrl);', 
    75577274=>'$ctrl= new jFormsControllistbox(\'nom\'); 
     
    773790$ctrl= new jFormsControllistbox(\'list\'); 
    774791$ctrl->label=\'a list\'; 
    775 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     792$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    776793$topctrl->addChildControl($ctrl); 
    777794$ctrl = $topctrl; 
     
    796813$ctrl= new jFormsControllistbox(\'list\'); 
    797814$ctrl->label=\'a list\'; 
    798 $ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\'); 
     815$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'\',null,null); 
    799816$topctrl->addChildControl($ctrl,\'choix2\'); 
    800817$ctrl= new jFormsControlsecret(\'pwd\'); 
     
    805822$ctrl = $topctrl; 
    806823$this->addControl($ctrl);', 
     82479=>'$ctrl= new jFormsControlmenulist(\'nom\'); 
     825$ctrl->label=\'Votre nom\'; 
     826$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz\',\'plop\',\'youp\',null,\'prenom\'); 
     827$this->addControl($ctrl);', 
     82880=>'$ctrl= new jFormsControlmenulist(\'nom\'); 
     829$ctrl->label=\'Votre nom\'; 
     830$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz,biz\',\'plop\',\'\',\'joe,dumb\',null); 
     831$this->addControl($ctrl);', 
     83281=>'$ctrl= new jFormsControlmenulist(\'nom\'); 
     833$ctrl->label=\'Votre nom\'; 
     834$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz,biz\',\'plop\',\'\',null,\'prenom,nom\'); 
     835$this->addControl($ctrl);', 
     83682=>'$ctrl= new jFormsControlmenulist(\'nom\'); 
     837$ctrl->label=\'Votre nom\'; 
     838$ctrl->datasource = new jFormsDaoDatasource(\'foo\',\'bar\',\'baz,biz\',\'plop\',\'\',null,\'prenom,nom\',\' - \'); 
     839$this->addControl($ctrl);', 
    807840); 
    808841 
     
    12321265$js.="jForms.tControl2.addControl(jForms.tControl, \'choix2\');\n"; 
    12331266$js.="jForms.tForm.addControl(jForms.tControl2);\n";', 
     126779=>'$label = \'Votre nom\'; 
     1268$js.="jForms.tControl = new jFormsControlString(\'nom\', \'".str_replace("\'","\\\'",$label)."\');\n"; 
     1269$js.="jForms.tControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 
     1270$js.="jForms.tControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; 
     1271$js.="jForms.tForm.addControl(jForms.tControl);\n";', 
     127280=>'$label = \'Votre nom\'; 
     1273$js.="jForms.tControl = new jFormsControlString(\'nom\', \'".str_replace("\'","\\\'",$label)."\');\n"; 
     1274$js.="jForms.tControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 
     1275$js.="jForms.tControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; 
     1276$js.="jForms.tForm.addControl(jForms.tControl);\n";', 
     127781=>'$label = \'Votre nom\'; 
     1278$js.="jForms.tControl = new jFormsControlString(\'nom\', \'".str_replace("\'","\\\'",$label)."\');\n"; 
     1279$js.="jForms.tControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 
     1280$js.="jForms.tControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; 
     1281$js.="jForms.tForm.addControl(jForms.tControl);\n";', 
     128282=>'$label = \'Votre nom\'; 
     1283$js.="jForms.tControl = new jFormsControlString(\'nom\', \'".str_replace("\'","\\\'",$label)."\');\n"; 
     1284$js.="jForms.tControl.errRequired=\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.required\',$label))."\';\n"; 
     1285$js.="jForms.tControl.errInvalid =\'".str_replace("\'","\\\'",jLocale::get(\'jelix~formserr.js.err.invalid\', $label))."\';\n"; 
     1286$js.="jForms.tForm.addControl(jForms.tControl);\n";', 
    12341287 
    12351288    ); 
  • branches/experimental/jforms-groups/testapp/modules/jelix_tests/tests/jforms.htmlbuilder.html_cli.php

    r1028 r1029  
    44* @subpackage  unittest module 
    55* @author      Jouanneau Laurent 
    6 * @contributor 
     6* @contributor Dominique Papin 
    77* @copyright   2007-2008 Jouanneau laurent 
     8* @copyright   2008 Dominique Papin 
    89* @link        http://www.jelix.org 
    910* @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html 
     
    446447        $this->assertEqualOrDiff($result, $out); 
    447448 
     449        $this->form->setData('menulist1',""); 
     450        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name,price','id','','25',null); 
     451        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     452        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     453        $result.='<option value="" selected="selected"></option>'; 
     454        $result.='<option value="10">foo12</option>'; 
     455        $result.='<option value="11">bar54</option>'; 
     456        $result.='<option value="23">baz97</option>'; 
     457        $result.='</select>'; 
     458        $this->assertEqualOrDiff($result, $out); 
     459 
     460        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findByMaxId','name,price','id','','25',null,' - '); 
     461        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     462        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     463        $result.='<option value="" selected="selected"></option>'; 
     464        $result.='<option value="10">foo - 12</option>'; 
     465        $result.='<option value="11">bar - 54</option>'; 
     466        $result.='<option value="23">baz - 97</option>'; 
     467        $result.='</select>'; 
     468        $this->assertEqualOrDiff($result, $out); 
     469 
     470        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','','9,25',null,' - '); 
     471        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     472        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     473        $result.='<option value="" selected="selected"></option>'; 
     474        $result.='<option value="10">foo - 12</option>'; 
     475        $result.='<option value="11">bar - 54</option>'; 
     476        $result.='<option value="23">baz - 97</option>'; 
     477        $result.='</select>'; 
     478        $this->assertEqualOrDiff($result, $out); 
     479 
     480        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','','10,25',null,' - '); 
     481        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     482        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     483        $result.='<option value="" selected="selected"></option>'; 
     484        $result.='<option value="11">bar - 54</option>'; 
     485        $result.='<option value="23">baz - 97</option>'; 
     486        $result.='</select>'; 
     487        $this->assertEqualOrDiff($result, $out); 
     488 
     489        $this->form->addControl(new jFormsControlHidden('hidden2')); 
     490        $this->form->setData('hidden1',"9"); 
     491        $this->form->setData('hidden2',"25"); 
     492        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','',null,'hidden1,hidden2',' - '); 
     493        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     494        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     495        $result.='<option value="" selected="selected"></option>'; 
     496        $result.='<option value="10">foo - 12</option>'; 
     497        $result.='<option value="11">bar - 54</option>'; 
     498        $result.='<option value="23">baz - 97</option>'; 
     499        $result.='</select>'; 
     500        $this->assertEqualOrDiff($result, $out); 
     501 
     502        $this->form->setData('hidden1',"10"); 
     503        $this->form->setData('hidden2',"25"); 
     504        $ctrl->datasource = new jFormsDaoDatasource('jelix_tests~products','findBetweenId','name,price','id','',null,'hidden1,hidden2',' - '); 
     505        ob_start();$this->builder->outputControl($ctrl);$out = ob_get_clean(); 
     506        $result='<select name="menulist1" id="'.$this->formname.'_menulist1" size="1">'; 
     507        $result.='<option value="" selected="selected"></option>'; 
     508        $result.='<option value="11">bar - 54</option>'; 
     509        $result.='<option value="23">baz - 97</option>'; 
     510        $result.='</select>'; 
     511        $this->assertEqualOrDiff($result, $out); 
     512 
     513 
     514        $this->form->removeControl('hidden2'); 
     515        $this->form->setData('hidden1',"11"); 
    448516    } 
    449517 
Download in other formats: Unified Diff Zip Archive