Changeset 895

Show
Ignore:
Timestamp:
04/24/08 01:14:38 (7 months ago)
Author:
laurentj
Message:

ticket #555: jforms, datasource on control: argument are now allowed for dao method when retrieving datas to fill a menulist, a listbox etc. New datasource element + dao, method, labelproperty, valueproperty, criteria and criteriafrom as attributes. Also new datasource element + class attribute for classes of datasources. dsclass and all dao* attributes on controls are deprecated.
updated relaxng schema for jforms

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/build/manifests/testapp.mn

    r879 r895  
    8383  test.iface.php 
    8484  myclass.class.php 
     85  mydatasource.class.php 
    8586cd testapp/modules/jelix_tests/classes/tests 
    8687  foo.class.php 
  • trunk/build/manifests/testapp.mn

    r879 r895  
    8383  test.iface.php 
    8484  myclass.class.php 
     85  mydatasource.class.php 
    8586cd testapp/modules/jelix_tests/classes/tests 
    8687  foo.class.php 
  • trunk/build/manifests/testapp.mn

    r879 r895  
    8383  test.iface.php 
    8484  myclass.class.php 
     85  mydatasource.class.php 
    8586cd testapp/modules/jelix_tests/classes/tests 
    8687  foo.class.php 
  • trunk/build/manifests/testapp.mn

    r879 r895  
    8383  test.iface.php 
    8484  myclass.class.php 
     85  mydatasource.class.php 
    8586cd testapp/modules/jelix_tests/classes/tests 
    8687  foo.class.php 
  • trunk/lib/jelix/docs/ns/jforms.rng

    r831 r895  
    1919            <ref name="input" /> 
    2020            <ref name="textarea" /> 
     21            <ref name="htmleditor" /> 
    2122            <ref name="secret" /> 
    2223            <ref name="output" /> 
    2324            <ref name="upload" /> 
    2425            <ref name="submit" /> 
     26            <ref name="reset" /> 
    2527            <ref name="checkbox" /> 
    2628            <ref name="checkboxes" /> 
     
    2931            <ref name="menulist" /> 
    3032            <ref name="hidden" /> 
     33            <ref name="captcha" /> 
    3134            <!-- 
    3235            <ref name="range" /> 
    33             <ref name="trigger" /> 
    3436            --> 
    3537        </choice> 
     
    4345  <define name="input"> 
    4446     <element name="input"> 
    45        <ref name="control.common" /> 
     47         <ref name="control.common" /> 
    4648         <choice> 
    4749            <group> 
     
    4951                <ref name="attr.length" /> 
    5052                <ref name="attr.size" /> 
     53            </group> 
     54            <group> 
     55                <attribute name="type"><value>html</value></attribute> 
     56                <ref name="attr.length" /> 
    5157            </group> 
    5258            <attribute name="type"> 
     
    6874                </choice> 
    6975            </attribute> 
    70             <ref name="attr.length" /> 
    7176        </choice> 
    7277       <ref name="UI.attr.readonly" /> 
     
    8388       <ref name="UI.attr.defaultvalue" /> 
    8489       <ref name="attr.length" /> 
     90       <optional><attribute name="type"><value>html</value></attribute></optional> 
     91       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
     92       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     93     </element> 
     94  </define> 
     95 
     96  <define name="htmleditor"> 
     97     <element name="htmleditor"> 
     98       <ref name="control.common" /> 
     99       <ref name="UI.attr.readonly" /> 
     100       <ref name="UI.attr.required" /> 
     101       <ref name="UI.attr.defaultvalue" /> 
     102       <ref name="attr.length" /> 
     103       <optional><attribute name="config" /></optional> 
     104       <optional><attribute name="skin" /></optional> 
    85105       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
    86106       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     
    100120                <group> 
    101121                    <emtpy/> 
    102                     <attribute name="labellocale" /> 
     122                    <attribute name="locale" /> 
    103123                </group> 
    104124            </choice> 
     
    134154  </define> 
    135155 
    136   <define name="radiobuttons"> 
    137      <element name="radiobuttons"> 
    138        <ref name="control.common" /> 
    139        <ref name="control.list.common" /> 
    140      </element> 
    141   </define> 
    142  
    143156  <define name="listbox"> 
    144157     <element name="listbox"> 
     
    167180     </element> 
    168181  </define> 
    169    
     182 
     183  <define name="radiobuttons"> 
     184     <element name="radiobuttons"> 
     185       <ref name="control.common" /> 
     186       <ref name="control.list.common" /> 
     187     </element> 
     188  </define> 
    170189  <define name="output"> 
    171190     <element name="output"> 
     
    179198       <ref name="control.common" /> 
    180199       <ref name="datasources" /> 
     200     </element> 
     201  </define> 
     202 
     203  <define name="reset"> 
     204     <element name="reset"> 
     205       <ref name="control.common" /> 
    181206     </element> 
    182207  </define> 
     
    186211       <attribute name="ref" /> 
    187212       <ref name="UI.attr.defaultvalue" /> 
     213     </element> 
     214  </define> 
     215 
     216  <define name="captcha"> 
     217     <element name="captcha"> 
     218       <ref name="control.common" /> 
    188219     </element> 
    189220  </define> 
     
    241272  <define name="datasources"> 
    242273     <optional><choice> 
     274        <ref name="datasource" /> 
    243275        <ref name="datasources.items" /> 
    244276        <ref name="datasources.dao" /> 
     
    273305  <define name="datasources.class"> 
    274306      <attribute name="dsclass" /> 
     307  </define> 
     308 
     309  <define name="datasource"> 
     310    <element name="datasource"> 
     311        <choice> 
     312            <group> 
     313                <attribute name="dao" /> 
     314                <attribute name="daomethod" /> 
     315                <attribute name="labelproperty" /> 
     316                <optional><attribute name="valueproperty" /></optional> 
     317                <optional> 
     318                    <choice> 
     319                        <attribute name="criteria" /> 
     320                        <attribute name="criteriafrom" /> 
     321                    </choice> 
     322                </optional> 
     323            </group> 
     324            <attribute name="class" /> 
     325        </choice> 
     326    </element> 
    275327  </define> 
    276328 
     
    330382   </define> 
    331383--> 
    332  
    333   <define name="reset"> 
    334      <element name="reset"> 
    335        <ref name="control.common" /> 
    336      </element> 
    337   </define> 
    338    
    339384  <!-- 
    340385      <define name="range"> 
     
    348393          </element> 
    349394      </define> 
    350        
    351       <define name="trigger"> 
    352           <element name="trigger"> 
    353               <ref name="control.common" /> 
    354               <ref name="UI.Common.Attrs" /> 
    355           </element> 
    356       </define> 
     395 
    357396  --> 
    358397   
  • trunk/lib/jelix/docs/ns/jforms.rng

    r831 r895  
    1919            <ref name="input" /> 
    2020            <ref name="textarea" /> 
     21            <ref name="htmleditor" /> 
    2122            <ref name="secret" /> 
    2223            <ref name="output" /> 
    2324            <ref name="upload" /> 
    2425            <ref name="submit" /> 
     26            <ref name="reset" /> 
    2527            <ref name="checkbox" /> 
    2628            <ref name="checkboxes" /> 
     
    2931            <ref name="menulist" /> 
    3032            <ref name="hidden" /> 
     33            <ref name="captcha" /> 
    3134            <!-- 
    3235            <ref name="range" /> 
    33             <ref name="trigger" /> 
    3436            --> 
    3537        </choice> 
     
    4345  <define name="input"> 
    4446     <element name="input"> 
    45        <ref name="control.common" /> 
     47         <ref name="control.common" /> 
    4648         <choice> 
    4749            <group> 
     
    4951                <ref name="attr.length" /> 
    5052                <ref name="attr.size" /> 
     53            </group> 
     54            <group> 
     55                <attribute name="type"><value>html</value></attribute> 
     56                <ref name="attr.length" /> 
    5157            </group> 
    5258            <attribute name="type"> 
     
    6874                </choice> 
    6975            </attribute> 
    70             <ref name="attr.length" /> 
    7176        </choice> 
    7277       <ref name="UI.attr.readonly" /> 
     
    8388       <ref name="UI.attr.defaultvalue" /> 
    8489       <ref name="attr.length" /> 
     90       <optional><attribute name="type"><value>html</value></attribute></optional> 
     91       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
     92       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     93     </element> 
     94  </define> 
     95 
     96  <define name="htmleditor"> 
     97     <element name="htmleditor"> 
     98       <ref name="control.common" /> 
     99       <ref name="UI.attr.readonly" /> 
     100       <ref name="UI.attr.required" /> 
     101       <ref name="UI.attr.defaultvalue" /> 
     102       <ref name="attr.length" /> 
     103       <optional><attribute name="config" /></optional> 
     104       <optional><attribute name="skin" /></optional> 
    85105       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
    86106       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     
    100120                <group> 
    101121                    <emtpy/> 
    102                     <attribute name="labellocale" /> 
     122                    <attribute name="locale" /> 
    103123                </group> 
    104124            </choice> 
     
    134154  </define> 
    135155 
    136   <define name="radiobuttons"> 
    137      <element name="radiobuttons"> 
    138        <ref name="control.common" /> 
    139        <ref name="control.list.common" /> 
    140      </element> 
    141   </define> 
    142  
    143156  <define name="listbox"> 
    144157     <element name="listbox"> 
     
    167180     </element> 
    168181  </define> 
    169    
     182 
     183  <define name="radiobuttons"> 
     184     <element name="radiobuttons"> 
     185       <ref name="control.common" /> 
     186       <ref name="control.list.common" /> 
     187     </element> 
     188  </define> 
    170189  <define name="output"> 
    171190     <element name="output"> 
     
    179198       <ref name="control.common" /> 
    180199       <ref name="datasources" /> 
     200     </element> 
     201  </define> 
     202 
     203  <define name="reset"> 
     204     <element name="reset"> 
     205       <ref name="control.common" /> 
    181206     </element> 
    182207  </define> 
     
    186211       <attribute name="ref" /> 
    187212       <ref name="UI.attr.defaultvalue" /> 
     213     </element> 
     214  </define> 
     215 
     216  <define name="captcha"> 
     217     <element name="captcha"> 
     218       <ref name="control.common" /> 
    188219     </element> 
    189220  </define> 
     
    241272  <define name="datasources"> 
    242273     <optional><choice> 
     274        <ref name="datasource" /> 
    243275        <ref name="datasources.items" /> 
    244276        <ref name="datasources.dao" /> 
     
    273305  <define name="datasources.class"> 
    274306      <attribute name="dsclass" /> 
     307  </define> 
     308 
     309  <define name="datasource"> 
     310    <element name="datasource"> 
     311        <choice> 
     312            <group> 
     313                <attribute name="dao" /> 
     314                <attribute name="daomethod" /> 
     315                <attribute name="labelproperty" /> 
     316                <optional><attribute name="valueproperty" /></optional> 
     317                <optional> 
     318                    <choice> 
     319                        <attribute name="criteria" /> 
     320                        <attribute name="criteriafrom" /> 
     321                    </choice> 
     322                </optional> 
     323            </group> 
     324            <attribute name="class" /> 
     325        </choice> 
     326    </element> 
    275327  </define> 
    276328 
     
    330382   </define> 
    331383--> 
    332  
    333   <define name="reset"> 
    334      <element name="reset"> 
    335        <ref name="control.common" /> 
    336      </element> 
    337   </define> 
    338    
    339384  <!-- 
    340385      <define name="range"> 
     
    348393          </element> 
    349394      </define> 
    350        
    351       <define name="trigger"> 
    352           <element name="trigger"> 
    353               <ref name="control.common" /> 
    354               <ref name="UI.Common.Attrs" /> 
    355           </element> 
    356       </define> 
     395 
    357396  --> 
    358397   
  • trunk/lib/jelix/docs/ns/jforms.rng

    r831 r895  
    1919            <ref name="input" /> 
    2020            <ref name="textarea" /> 
     21            <ref name="htmleditor" /> 
    2122            <ref name="secret" /> 
    2223            <ref name="output" /> 
    2324            <ref name="upload" /> 
    2425            <ref name="submit" /> 
     26            <ref name="reset" /> 
    2527            <ref name="checkbox" /> 
    2628            <ref name="checkboxes" /> 
     
    2931            <ref name="menulist" /> 
    3032            <ref name="hidden" /> 
     33            <ref name="captcha" /> 
    3134            <!-- 
    3235            <ref name="range" /> 
    33             <ref name="trigger" /> 
    3436            --> 
    3537        </choice> 
     
    4345  <define name="input"> 
    4446     <element name="input"> 
    45        <ref name="control.common" /> 
     47         <ref name="control.common" /> 
    4648         <choice> 
    4749            <group> 
     
    4951                <ref name="attr.length" /> 
    5052                <ref name="attr.size" /> 
     53            </group> 
     54            <group> 
     55                <attribute name="type"><value>html</value></attribute> 
     56                <ref name="attr.length" /> 
    5157            </group> 
    5258            <attribute name="type"> 
     
    6874                </choice> 
    6975            </attribute> 
    70             <ref name="attr.length" /> 
    7176        </choice> 
    7277       <ref name="UI.attr.readonly" /> 
     
    8388       <ref name="UI.attr.defaultvalue" /> 
    8489       <ref name="attr.length" /> 
     90       <optional><attribute name="type"><value>html</value></attribute></optional> 
     91       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
     92       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     93     </element> 
     94  </define> 
     95 
     96  <define name="htmleditor"> 
     97     <element name="htmleditor"> 
     98       <ref name="control.common" /> 
     99       <ref name="UI.attr.readonly" /> 
     100       <ref name="UI.attr.required" /> 
     101       <ref name="UI.attr.defaultvalue" /> 
     102       <ref name="attr.length" /> 
     103       <optional><attribute name="config" /></optional> 
     104       <optional><attribute name="skin" /></optional> 
    85105       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
    86106       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     
    100120                <group> 
    101121                    <emtpy/> 
    102                     <attribute name="labellocale" /> 
     122                    <attribute name="locale" /> 
    103123                </group> 
    104124            </choice> 
     
    134154  </define> 
    135155 
    136   <define name="radiobuttons"> 
    137      <element name="radiobuttons"> 
    138        <ref name="control.common" /> 
    139        <ref name="control.list.common" /> 
    140      </element> 
    141   </define> 
    142  
    143156  <define name="listbox"> 
    144157     <element name="listbox"> 
     
    167180     </element> 
    168181  </define> 
    169    
     182 
     183  <define name="radiobuttons"> 
     184     <element name="radiobuttons"> 
     185       <ref name="control.common" /> 
     186       <ref name="control.list.common" /> 
     187     </element> 
     188  </define> 
    170189  <define name="output"> 
    171190     <element name="output"> 
     
    179198       <ref name="control.common" /> 
    180199       <ref name="datasources" /> 
     200     </element> 
     201  </define> 
     202 
     203  <define name="reset"> 
     204     <element name="reset"> 
     205       <ref name="control.common" /> 
    181206     </element> 
    182207  </define> 
     
    186211       <attribute name="ref" /> 
    187212       <ref name="UI.attr.defaultvalue" /> 
     213     </element> 
     214  </define> 
     215 
     216  <define name="captcha"> 
     217     <element name="captcha"> 
     218       <ref name="control.common" /> 
    188219     </element> 
    189220  </define> 
     
    241272  <define name="datasources"> 
    242273     <optional><choice> 
     274        <ref name="datasource" /> 
    243275        <ref name="datasources.items" /> 
    244276        <ref name="datasources.dao" /> 
     
    273305  <define name="datasources.class"> 
    274306      <attribute name="dsclass" /> 
     307  </define> 
     308 
     309  <define name="datasource"> 
     310    <element name="datasource"> 
     311        <choice> 
     312            <group> 
     313                <attribute name="dao" /> 
     314                <attribute name="daomethod" /> 
     315                <attribute name="labelproperty" /> 
     316                <optional><attribute name="valueproperty" /></optional> 
     317                <optional> 
     318                    <choice> 
     319                        <attribute name="criteria" /> 
     320                        <attribute name="criteriafrom" /> 
     321                    </choice> 
     322                </optional> 
     323            </group> 
     324            <attribute name="class" /> 
     325        </choice> 
     326    </element> 
    275327  </define> 
    276328 
     
    330382   </define> 
    331383--> 
    332  
    333   <define name="reset"> 
    334      <element name="reset"> 
    335        <ref name="control.common" /> 
    336      </element> 
    337   </define> 
    338    
    339384  <!-- 
    340385      <define name="range"> 
     
    348393          </element> 
    349394      </define> 
    350        
    351       <define name="trigger"> 
    352           <element name="trigger"> 
    353               <ref name="control.common" /> 
    354               <ref name="UI.Common.Attrs" /> 
    355           </element> 
    356       </define> 
     395 
    357396  --> 
    358397   
  • trunk/lib/jelix/docs/ns/jforms.rng

    r831 r895  
    1919            <ref name="input" /> 
    2020            <ref name="textarea" /> 
     21            <ref name="htmleditor" /> 
    2122            <ref name="secret" /> 
    2223            <ref name="output" /> 
    2324            <ref name="upload" /> 
    2425            <ref name="submit" /> 
     26            <ref name="reset" /> 
    2527            <ref name="checkbox" /> 
    2628            <ref name="checkboxes" /> 
     
    2931            <ref name="menulist" /> 
    3032            <ref name="hidden" /> 
     33            <ref name="captcha" /> 
    3134            <!-- 
    3235            <ref name="range" /> 
    33             <ref name="trigger" /> 
    3436            --> 
    3537        </choice> 
     
    4345  <define name="input"> 
    4446     <element name="input"> 
    45        <ref name="control.common" /> 
     47         <ref name="control.common" /> 
    4648         <choice> 
    4749            <group> 
     
    4951                <ref name="attr.length" /> 
    5052                <ref name="attr.size" /> 
     53            </group> 
     54            <group> 
     55                <attribute name="type"><value>html</value></attribute> 
     56                <ref name="attr.length" /> 
    5157            </group> 
    5258            <attribute name="type"> 
     
    6874                </choice> 
    6975            </attribute> 
    70             <ref name="attr.length" /> 
    7176        </choice> 
    7277       <ref name="UI.attr.readonly" /> 
     
    8388       <ref name="UI.attr.defaultvalue" /> 
    8489       <ref name="attr.length" /> 
     90       <optional><attribute name="type"><value>html</value></attribute></optional> 
     91       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
     92       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     93     </element> 
     94  </define> 
     95 
     96  <define name="htmleditor"> 
     97     <element name="htmleditor"> 
     98       <ref name="control.common" /> 
     99       <ref name="UI.attr.readonly" /> 
     100       <ref name="UI.attr.required" /> 
     101       <ref name="UI.attr.defaultvalue" /> 
     102       <ref name="attr.length" /> 
     103       <optional><attribute name="config" /></optional> 
     104       <optional><attribute name="skin" /></optional> 
    85105       <optional><attribute name="rows"><data type="integer" /></attribute></optional> 
    86106       <optional><attribute name="cols"><data type="integer" /></attribute></optional> 
     
    100120                <group> 
    101121                    <emtpy/> 
    102                     <attribute name="labellocale" /> 
     122                    <attribute name="locale" /> 
    103123                </group> 
    104124            </choice> 
     
    134154  </define> 
    135155 
    136   <define name="radiobuttons"> 
    137      <element name="radiobuttons"> 
    138        <ref name="control.common" /> 
    139        <ref name="control.list.common" /> 
    140      </element> 
    141   </define> 
    142  
    143156  <define name="listbox"> 
    144157     <element name="listbox"> 
     
    167180     </element> 
    168181  </define> 
    169    
     182 
     183  <define name="radiobuttons"> 
     184     <element name="radiobuttons"> 
     185       <ref name="control.common" /> 
     186       <ref name="control.list.common" /> 
     187     </element> 
     188  </define> 
    170189  <define name="output"> 
    171190     <element name="output"> 
     
    179198       <ref name="control.common" /> 
    180199       <ref name="datasources" /> 
     200     </element> 
     201  </define> 
     202 
     203  <define name="reset"> 
     204     <element name="reset"> 
     205       <ref name="control.common" /> 
    181206     </element> 
    182207  </define> 
     
    186211       <attribute name="ref" /> 
    187212       <ref name="UI.attr.defaultvalue" /> 
     213     </element> 
     214  </define> 
     215 
     216  <define name="captcha"> 
     217     <element name="captcha"> 
     218       <ref name="control.common" /> 
    188219     </element> 
    189220  </define> 
     
    241272  <define name="datasources"> 
    242273     <optional><choice> 
     274        <ref name="datasource" /> 
    243275        <ref name="datasources.items" /> 
    244276        <ref name="datasources.dao" /> 
     
    273305  <define name="datasources.class"> 
    274306      <attribute name="dsclass" /> 
     307  </define> 
     308 
     309  <define name="datasource"> 
     310    <element name="datasource"> 
     311        <choice> 
     312            <group> 
     313                <attribute name="dao" /> 
     314                <attribute name="daomethod" /> 
     315                <attribute name="labelproperty" /> 
     316                <optional><attribute name="valueproperty" /></optional> 
     317                <optional> 
     318                    <choice> 
     319                        <attribute name="criteria" /> 
     320                        <attribute name="criteriafrom" /> 
     321                    </choice> 
     322                </optional> 
     323            </group> 
     324            <attribute name="class" /> 
     325        </choice> 
     326    </element> 
    275327  </define> 
    276328 
     
    330382   </define> 
    331383--> 
    332  
    333   <define name="reset"> 
    334      <element name="reset"> 
    335        <ref name="control.common" /> 
    336      </element> 
    337   </define> 
    338    
    339384  <!-- 
    340385      <define name="range"> 
     
    348393          </element> 
    349394      </define> 
    350        
    351       <define name="trigger"> 
    352           <element name="trigger"> 
    353               <ref name="control.common" /> 
    354               <ref name="UI.Common.Attrs" /> 
    355           </element> 
    356       </define> 
     395 
    357396  --> 
    358397   
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r890 r895  
    359359 
    360360        $dao = jDao::create($daoSelector, $dbProfil); 
    361         $daorec = jDao::createRecord($daoSelector, $dbProfil); 
    362361 
    363362        $conditions = jDao::createConditions(); 
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r890 r895  
    359359 
    360360        $dao = jDao::create($daoSelector, $dbProfil); 
    361         $daorec = jDao::createRecord($daoSelector, $dbProfil); 
    362361 
    363362        $conditions = jDao::createConditions(); 
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r890 r895  
    359359 
    360360        $dao = jDao::create($daoSelector, $dbProfil); 
    361         $daorec = jDao::createRecord($daoSelector, $dbProfil); 
    362361 
    363362        $conditions = jDao::createConditions(); 
  • trunk/lib/jelix/forms/jFormsBase.class.php

    r890 r895  
    359359 
    360360        $dao = jDao::create($daoSelector, $dbProfil); 
    361         $daorec = jDao::createRecord($daoSelector, $dbProfil); 
    362361 
    363362        $conditions = jDao::createConditions(); 
  • trunk/lib/jelix/forms/jFormsCompiler.class.php

    r877 r895  
    216216        $this->_generateTextareaHtmlEditor($source, $control, $attributes); 
    217217 
    218         if (isset($attributes['engine'])) { 
    219             $source[]='$ctrl->engine=\''.str_replace("'","\\'",$attributes['engine']).'\';'; 
    220             unset($attributes['engine']); 
    221         } 
    222  
    223218        if (isset($attributes['config'])) { 
    224219            $source[]='$ctrl->config=\''.str_replace("'","\\'",$attributes['config']).'\';'; 
     
    244239 
    245240    protected function generateReset(&$source, $control, &$attributes) { 
     241        // XXX: readonly attr really needed ? 
    246242        $this->attrReadonly($source, $attributes); 
    247243        $this->readLabel($source, $control, 'reset'); 
    248244        $this->readHelpHintAlert($source, $control); 
    249  
    250245    } 
    251246 
     
    253248        $source[]='$ctrl->datatype= new jDatatypeBoolean();'; 
    254249        $this->attrDefaultvalue($source, $attributes); 
     250        $this->attrReadonly($source, $attributes); 
    255251        $this->r