Contao 4.13 – Table – Toggle

Ab Contao 4.13 lassen sich in DC Table eine Toogle-Funktion für die Listenelemente integrieren, so dass man also Listenelemente aktivieren bzw. deaktivieren kann.
Leider ist nicht besonders gut dokumentiert und ich habe selbst ein paar Stunden damit verbracht die Lösung dann für ein eigenes Contao-Modul zu integrieren.

Hier die Lösung:

1. Man integriert in den DCA ein neues Feld ‚published‘:

'published' => [
'label' => ['Veröffentlicht', 'Veröffentlicht'],
'inputType' => 'checkbox',
'toggle' => true,
'eval' => array('tl_class' => 'clr'),
'sql' => [
'type' => 'boolean',
'default' => true,
],
],

Wichtig ist hier das man die Eigenschaft ‚toggle‘ auf ‚true‘ setzt.

2. Man definiert im DCA eine neue Operation, wie folgt:

'operations' => array(
...
'toggle' => array
(
'href' => 'act=toggle&field=published',
'icon' => 'visible.svg',
'button_callback' => array('tl_jobs', 'toggleIcon')
),
)

3. Man definiert im DCA eine neue Methode toggleIcon, wie folgt:

public function toggleIcon($row, $href, $label, $title, $icon, $attributes) {

$href .= '&id=' . $row['id'];

if (!$row['published']) {
$icon = 'invisible.svg';
}

return '' . Image::getHtml($icon, $label, 'data-icon="' . Image::getPath('visible.svg') . '" data-icon-disabled="' . Image::getPath('invisible.svg') . '" data-state="' . ($row['published'] ? 1 : 0) . '"') . ' ';
}

Dann natürlich die Datenbank aktualisieren und System-Cache erneuern. Das wars.