terminal42/dcawizard

dcaWizard extension for Contao Open Source CMS

Fund package maintenance!
terminal42
Other

Installs: 299 460

Dependents: 16

Suggesters: 0

Security: 0

Stars: 10

Watchers: 9

Forks: 10

Open Issues: 0

Type:contao-bundle

3.0.3 2024-04-17 14:02 UTC

README

This extension provides a widget to handle external table records in the edit mode of the parent record.

How to use

// DCA defnition
'prices' => array
(
    'inputType' => 'dcaWizard',

    // Define the foreign table
    'foreignTable' => 'tl_iso_prices',

    // Define the foreign field (e.g. fid instead of pid)
    'foreignField' => 'fid',

    // Use the callback to determine the foreign table
    'foreignTable_callback' => array('tl_iso_prices', 'getTableName'),

    // Add special params to the link of the button
    'params' => [
        // Change the do parameter
        'do' => 'member',

        // Add new parameter, for example to filter the list
        'filterField' => 'group',
    ],

    'eval' => [
        // A list of fields to be displayed in the table
        'fields' => array('id', 'name', 'alias'),

        // Header fields of the table (leave empty to use labels)
        'headerFields' => array('ID', 'Name', 'Alias'),

        // Use a custom label for the edit button
        'editButtonLabel' => $GLOBALS['TL_LANG']['tl_iso_products']['prices_edit_button'],

        // Set a label if no records are found
        'emptyLabel' => $GLOBALS['TL_LANG']['tl_iso_products']['prices_empty_label'],

        // Order records by a particular field
        'orderField' => 'name DESC',

        // Hide the popup button (record list functionality only)
        'hideButton' => true,
        
        // Show operations next to every row (disabled by default)
        'showOperations' => true,

        // Define which operations you want to list
        // If this one is not defined, are all listed
        'operations' => ['edit', 'delete', 'new' /* for tables with sorting like tl_content */],
        
        // Define which global operations you want to add
        'global_operations' => ['new'],

        // Use your own custom template
        'customTpl' => 'be_widget_dcawizard_mytemplate',

        // Use the callback to generate the list
        'list_callback' => ['Isotope\tl_iso_prices', 'generateWizardList'],
    ],
),

// Example list callback:
/**
 * Generate a list of prices for a wizard in products
 * @param object
 * @param string
 * @return string
 */
public function generateWizardList($objRecords, $strId)
{
    $strReturn = '';

    while ($objRecords->next()) {
        $strReturn .= '<li>' . $objRecords->name . ' (ID: ' . $objRecords->id . ')' . '</li>';
    }

    return '<ul id="sort_' . $strId . '">' . $strReturn . '</ul>';
}

Using the dcaWizard together with DC_Multilingual

If you want to use the dcaWizard to manage a foreign table that is generated by DC_Multilingual you can simply use

    'inputType' => 'dcaWizardMultilingual',

so the translated entries will not be listed.

If you do not use the language database column to separate entries (see langColumn setting in DC_Multilingual, you can specify the matching column name in the eval section as well:

    'eval' => [
        'langColumn' => 'language_column_name',
    ],
)