diff --git a/contao/dca/tl_pinnwand.php b/contao/dca/tl_pinnwand.php index 4329dce..08174d3 100644 --- a/contao/dca/tl_pinnwand.php +++ b/contao/dca/tl_pinnwand.php @@ -61,7 +61,12 @@ $GLOBALS['TL_DCA']['tl_pinnwand'] = [ ], ], 'palettes' => [ - 'default' => '{title_legend},ueberschrift,text,link,bild;{meta_legend},dateAdded,dateModified;{publish_legend},published,hervorgehoben', + '__selector__' => ['contentType'], + 'default' => '{title_legend},contentType;{meta_legend},dateAdded,dateModified;{publish_legend},published,hervorgehoben', + ], + 'subpalettes' => [ + 'contentType_image' => 'bild', + 'contentType_textImage' => 'ueberschrift,text,link,bild', ], 'fields' => [ 'id' => [ @@ -70,6 +75,14 @@ $GLOBALS['TL_DCA']['tl_pinnwand'] = [ 'tstamp' => [ 'sql' => 'int(10) unsigned NOT NULL default 0', ], + 'contentType' => [ + 'exclude' => true, + 'inputType' => 'radio', + 'options' => ['image', 'textImage'], + 'reference' => &$GLOBALS['TL_LANG']['tl_pinnwand']['contentType_options'], + 'eval' => ['mandatory' => true, 'submitOnChange' => true, 'tl_class' => 'w50 clr'], + 'sql' => "varchar(16) NOT NULL default 'textImage'", + ], 'ueberschrift' => [ 'exclude' => true, 'search' => true, @@ -181,3 +194,17 @@ $GLOBALS['TL_DCA']['tl_pinnwand']['fields']['dateModified']['load_callback'][] = return $timestamp > 0 ? $timestamp : time(); }; + +$GLOBALS['TL_DCA']['tl_pinnwand']['fields']['bild']['save_callback'][] = static function (mixed $value, DataContainer $dataContainer): mixed { + $contentType = (string) Input::post('contentType'); + + if ('' === $contentType && null !== $dataContainer->activeRecord) { + $contentType = (string) ($dataContainer->activeRecord->contentType ?? 'textImage'); + } + + if ('image' === $contentType && empty($value)) { + throw new \RuntimeException($GLOBALS['TL_LANG']['ERR']['mandatory'] ?? 'Dieses Feld darf nicht leer sein.'); + } + + return $value; +}; diff --git a/contao/languages/de/tl_pinnwand.php b/contao/languages/de/tl_pinnwand.php index 85593fb..0c50cf8 100644 --- a/contao/languages/de/tl_pinnwand.php +++ b/contao/languages/de/tl_pinnwand.php @@ -6,6 +6,9 @@ $GLOBALS['TL_LANG']['tl_pinnwand']['ueberschrift'] = ['Überschrift', 'Die Über $GLOBALS['TL_LANG']['tl_pinnwand']['text'] = ['Text', 'Inhalt des Pinnwandeintrags (maximal 3000 Zeichen).']; $GLOBALS['TL_LANG']['tl_pinnwand']['link'] = ['Link', 'Optionaler Link zum Eintrag.']; $GLOBALS['TL_LANG']['tl_pinnwand']['bild'] = ['Bild', 'Optionales Bild für den Pinnwandeintrag.']; +$GLOBALS['TL_LANG']['tl_pinnwand']['contentType'] = ['Inhaltstyp', 'Wählen Sie, ob der Eintrag nur aus einem Bild oder aus Text mit optionalem Bild besteht.']; +$GLOBALS['TL_LANG']['tl_pinnwand']['contentType_options']['image'] = 'Bild'; +$GLOBALS['TL_LANG']['tl_pinnwand']['contentType_options']['textImage'] = 'Text mit optionalem Bild'; $GLOBALS['TL_LANG']['tl_pinnwand']['dateAdded'] = ['Erstellt am', 'Datum/Uhrzeit der Erstellung.']; $GLOBALS['TL_LANG']['tl_pinnwand']['dateModified'] = ['Geändert am', 'Datum/Uhrzeit der letzten Änderung.']; $GLOBALS['TL_LANG']['tl_pinnwand']['published'] = ['Veröffentlicht', 'Nur veröffentlichte Einträge erscheinen im Frontend.']; diff --git a/contao/templates/frontend/pinnwand.html.twig b/contao/templates/frontend/pinnwand.html.twig index c1516de..99b88f0 100644 --- a/contao/templates/frontend/pinnwand.html.twig +++ b/contao/templates/frontend/pinnwand.html.twig @@ -19,8 +19,13 @@ {% endif %} -

{{ entry.headline }}

-
{{ entry.text|e|nl2br }}
+ {% if entry.headline %} +

{{ entry.headline }}

+ {% endif %} + + {% if entry.text %} +
{{ entry.text|e|nl2br }}
+ {% endif %} {% if entry.link %}