[TYPO3-core] RFC: #9562: Feature: onChange has no effect

Dan Osipov dosipov at phillyburbs.com
Thu Dec 25 22:47:10 CET 2008


Attached is the second version of the patch.

Difference from the first version is that onChange check has been 
removed, and a better check for IRRE is used (fixes the issue of needing 
to have more than one element).

If you're using the test extension, please add the requestUpdate 
directive for 'rld' field.

Dan Osipov
Calkins Media
http://danosipov.com/blog/

Dan Osipov wrote:
> Hello,
> 
> This is an SVN patch request
> 
> Type: Missing Feature
> Branches: Trunk
> BT Reference: http://bugs.typo3.org/view.php?id=9562
> 
> Problem:
> FlexForms have an onChange => reload directive, which reloads the form 
> if a field is changed. This is very useful. Regular forms also have 
> 'requestUpdate' => field which does the same thing. However, there are 
> two problems: 1) regular TCEForms ignore the onChange directive, and 2) 
> IRRE ignores these completely.
> 
> Solution:
> Attached patch fixes the first problem by adding a condition to the if 
> statement, which reloads the form if a field with onChange = reload is 
> changed. It also adds a feature to IRRE, so that if a field is changed, 
> the record is reloaded. This is done using AJAX, so the entire page is 
> not reloaded - just the record currently being edited. Also, the change 
> is not saved in the DB - it's changed on the fly, and may impact how 
> other fields rendered, but its not saved until the form is saved.
> 
> How to test:
> Here are some sample TCA configurations I have used during development 
> of this patch:
> 
> IRRE field:
>     "tx_pbwltottnews_widget_id" => Array (       
>         "label" => "Widgets",
>         "config" => Array (
>             "type" => "inline",
>                     "foreign_table" => "tx_pbwidgetlibrary_mm",
>                     "foreign_table_field" => "ext_table",
>                     "foreign_field" => "record_id",
>                     "foreign_sortby" => "sorting",
>                     "foreign_label" => "widget_id",
>         )
>     ),
> 
> MM table:
> $TCA["tx_pbwidgetlibrary_mm"] = array (
>     "ctrl" => array (
>         'title'     => 
> 'LLL:EXT:pb_widget_library/locallang_db.xml:tx_pbwidgetlibrary_mm',
>         'label'     => 'widget_id',
>         'default_sortby' => "ORDER BY sorting",
>         'delete' => 'deleted',
>     'requestUpdate' => 'type',      // This is what tells the field to 
> reload!
>         'enablecolumns' => array (
>             'disabled' => 'hidden',
>         ),
>         'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php',
>         'iconfile'          => 
> t3lib_extMgm::extRelPath($_EXTKEY).'icon_tx_pbwidgetlibrary_mm.gif',
>     ),
>     "feInterface" => array (
>         "fe_admin_fieldList" => "widget_id, type, record_id",
>     )
> );
> 
> MM table TCA:
> $TCA["tx_pbwidgetlibrary_mm"] = array (
>     "ctrl" => $TCA["tx_pbwidgetlibrary_mm"]["ctrl"],
>     "interface" => array (
>         "showRecordFieldList" => "hidden"
>     ),
>     "feInterface" => $TCA["tx_pbwidgetlibrary_mm"]["feInterface"],
>     "columns" => array (
>         "widget_id" => Array (
>             "label" => "Widget",
>             "config" => Array (
>                 "type" => "select",
>                 "foreign_table" => "tx_pbwidgetlibrary_widget",
>                 "foreign_table_where" => " AND 
> tx_pbwidgetlibrary_widget.type='###REC_FIELD_type###'",
>                 "maxitems" => 1,
>             )
>         ),
>         "type" => Array (
>             "exclude" => 1,
>             "label" => 
> "LLL:EXT:pb_widget_library/locallang_db.xml:tx_pbwidgetlibrary_widget.type", 
> 
>             "config" => Array(
>                 "type" => "select",
>                 "itemsProcFunc" => 
> "tx_pbwidgetlibrary_addFieldsToFlexForm->listWidgets",
>                 "onChange" => "reload",   // This is an alternative way 
> to get the form to reload.
>             )
>         ),
>         "record_id" => Array (       
>             "exclude" => 1,       
>             "label" => "Record",       
>             "config" => Array (
>                 "type" => "select",
>                 "foreign_table" => "tt_news",
>             )
>         ),
>         "sorting" => Array (
>             "config" => Array (
>                  "type" => "passthrough",
>              )
>         ),
>     ),
>     "types" => Array (
>         "0" => Array("showitem" => "hidden;;1, title;;;;2-2-2, type, 
> widget_id;;;;3-3-3, record_id, sorting")
>     ),
>     "palettes" => Array (
>         "1" => Array("showitem" => "")
>     )
> );
> 
> Let me know if you have questions.
> FYI: This is my first patch to the core (and it wasn't an easy one), so 
> please, be nice ;)
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 9562_v2.patch
Type: text/x-diff
Size: 6832 bytes
Desc: not available
Url : http://lists.netfielders.de/pipermail/typo3-team-core/attachments/20081225/49674908/attachment.patch 


More information about the TYPO3-team-core mailing list