FriendsOfREDAXO / yrewrite_domain_settings

REDAXO5-Addon zum Verwalten zusätzlicher Informationen je YRewrite-Domain.
https://friendsofredaxo.github.io/yrewrite_domain_settings
MIT License
21 stars 1 forks source link

Tabelle nicht in YForm-Tabellen listen, sondern separat #3

Closed alxndr-w closed 10 months ago

alxndr-w commented 4 years ago

Analog zu YCom

skerbis commented 4 years ago

Als Unterseite von YRewrite, wie bei rewrite_scheme

alxndr-w commented 4 years ago

@skerbis da muss ich noch YForm 3.4 abwarten. Oder, was war der Stand bez. data_edit @christophboecker ?

christophboecker commented 4 years ago

Der Stand ist, dass es mit YForm 3.4 einen EP gibt, mit dem der Tabellentitel verhindert werden kann. Die data_edit.php benötigt aber im Request den table_name. Wuppt man den auch noch rein, kann data_edit.php bequem in Addons eingebunden werden.

bei mir habe ich die GIT-Version von YForm laufen, die das schon drin hat. Tabellen binde ich mit dieser pages/yform.php in mein Addon ein:

<?php
// package.yml
//  subpage:
//      mytable1:
//          title: 'L-Boote'
//          subPath: pages/yform.php
//          itemattr:
//              table_name: rex_mytable_a     mandatory
//              show_title: FALSE/true        optional; default ist false!
//              wrapper_class: myclass        optional

$currentPage = rex_be_controller::getCurrentPageObject();
$wrapper = '';
if( $table_name = $currentPage->getItemAttr('table_name','') )
{
    if( !rex_request('table_name','string','') ) $_REQUEST['table_name'] = $table_name;

    if( $currentPage->getItemAttr('show_title',false) !== true ){
        rex_extension::register('YFORM_MANAGER_DATA_PAGE_HEADER', function( $ep ) {
            if ($ep->getParam('yform')->table->getTableName() !== $ep->getParam('table_name')) return;
            return '';
        },rex_extension::EARLY,['table_name'=>$table_name]);
    }

    if( $wrapper = $currentPage->getItemAttr('wrapper_class','') ){
        echo "<div class=\"$wrapper\">";
    }
}

include rex_path::plugin('yform','manager','pages/data_edit.php');

if( $wrapper ) {
    echo '</div>';
}

Unschön ist die Nutzung von itemattr als Vehikel. Schöner wäre es, wenn freie, eigene Parameter direkt im page-Objekt abrufbar wären. Klappt aber nicht und müsste über die Addon-Properties rausgesucht werden. Find ich lästig und gehe deshalb über itemattr.

Wenn sich genügend Unterstützer und mehr Use-Cases als dieser finden, könnte die page-Klasse um individuelle Properties erweitert werden ($table_name = $currentPage->getProperty('yform_table');). https://github.com/redaxo/redaxo/issues/3606

skerbis commented 4 years ago

Alternativ Liste mit rex_list ausgeben und das Formular per yorm holen

alxndr-w commented 4 years ago

Solange es das noch nicht gibt, mache ich das wie gewohnt...