fix: replace relation to date entity with text property for code

This commit is contained in:
Björn Fromme
2024-11-08 13:04:26 +01:00
parent 72f2c9706e
commit 225b90e71b
5 changed files with 40 additions and 41 deletions
@@ -3,25 +3,41 @@
namespace EP\EpProducts\Controller; namespace EP\EpProducts\Controller;
use EP\EpProducts\Domain\Model\Travelinfo; use EP\EpProducts\Domain\Model\Travelinfo;
use EP\EpProducts\Domain\Repository\DateRepository;
use TYPO3\CMS\Core\Site\SiteFinder; use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class TravelinfoController extends ActionController class TravelinfoController extends ActionController
{ {
/**
* @var DateRepository
*/
private $dateRepository;
/**
* @var SiteFinder
*/
private $siteFinder;
public function __construct(DateRepository $dateRepository, SiteFinder $siteFinder)
{
$this->dateRepository = $dateRepository;
$this->siteFinder = $siteFinder;
}
public function indexAction(Travelinfo $travelinfo) public function indexAction(Travelinfo $travelinfo)
{ {
$today = new \DateTimeImmutable(); $today = new \DateTimeImmutable();
$date = $travelinfo->getTravelDate(); $date = $this->dateRepository->findOneByCode($travelinfo->getTravelCode());
if (null === $date || $date->getDateEnd() < $today) { if (null === $date || $date->getDateEnd() < $today) {
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class); $site = $this->siteFinder->getSiteByIdentifier('ep-reisen');
$site = $siteFinder->getSiteByIdentifier('ep-reisen');
$rootPageId = $site->getRootPageId(); $rootPageId = $site->getRootPageId();
$uri = $site->getRouter()->generateUri($rootPageId); $uri = $site->getRouter()->generateUri($rootPageId);
$this->redirectToUri($uri); $this->redirectToUri($uri);
} }
$this->view->assign('travelinfo', $travelinfo); $this->view->assign('travelinfo', $travelinfo);
$this->view->assign('date', $date);
} }
} }
@@ -75,9 +75,9 @@ class Travelinfo extends AbstractEntity
protected $links; protected $links;
/** /**
* @var Date * @var string
*/ */
protected $travelDate; protected $travelCode;
public function __construct() public function __construct()
{ {
@@ -248,14 +248,16 @@ class Travelinfo extends AbstractEntity
return $this; return $this;
} }
public function getTravelDate() public function getTravelCode()
{ {
return $this->travelDate; return $this->travelCode;
} }
public function setTravelDate($travelDate) public function setTravelCode($travelCode)
{ {
$this->travelDate = $travelDate; $this->travelCode = $travelCode;
return $this;
} }
} }
@@ -27,7 +27,7 @@ return [
], ],
], ],
'palettes' => [ 'palettes' => [
'basics' => ['showitem' => 'title,path_segment,--linebreak--,travel_date,--linebreak--,links,--linebreak--,teasers'], 'basics' => ['showitem' => 'title,path_segment,--linebreak--,travel_code,--linebreak--,links,--linebreak--,teasers'],
'text' => ['showitem' => 'subline,headline,--linebreak--,intro_text,--linebreak--,footer_text,--linebreak--, 'text' => ['showitem' => 'subline,headline,--linebreak--,intro_text,--linebreak--,footer_text,--linebreak--,
self_arranged_text,--linebreak--,additional_info,--linebreak--,important_phone_numbers,--linebreak--, self_arranged_text,--linebreak--,additional_info,--linebreak--,important_phone_numbers,--linebreak--,
important_links'], important_links'],
@@ -190,32 +190,13 @@ return [
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
), ),
], ],
'travel_date' => [ 'travel_code' => [
'exclude' => false, 'exclude' => false,
'label' => 'Termin', 'label' => 'Reisecode des Termins',
'config' => [ 'config' => [
'type' => 'group', 'type' => 'input',
'internal_type' => 'db', 'size' => 30,
'allowed' => 'tx_epproducts_domain_model_date', 'eval' => 'trim,required'
'minitems' => 1,
'maxitems' => 1,
'size' => 1,
'fieldControl' => [
'elementBrowser' => [
'disabled' => true,
],
],
'fieldWizard' => [
'recordsOverview' => [
'disabled' => true,
],
],
'suggestOptions' => [
'default' => [
'additionalSearchFields' => 'code,product_name,product_keywords',
'orderBy' => 'code',
],
],
], ],
], ],
'intro_text' => [ 'intro_text' => [
@@ -1370,7 +1370,7 @@ CREATE TABLE tx_epproducts_domain_model_travelinfo
footer_image int(11) DEFAULT '0' NOT NULL, footer_image int(11) DEFAULT '0' NOT NULL,
links int(11) DEFAULT '0' NOT NULL, links int(11) DEFAULT '0' NOT NULL,
teasers int(11) DEFAULT '0' NOT NULL, teasers int(11) DEFAULT '0' NOT NULL,
travel_date int(11) DEFAULT '0' NOT NULL, travel_code varchar(255) DEFAULT '' NOT NULL,
path_segment varchar(255) DEFAULT '' NOT NULL, path_segment varchar(255) DEFAULT '' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL, tstamp int(11) unsigned DEFAULT '0' NOT NULL,
@@ -45,7 +45,7 @@
</h1> </h1>
{travelinfo.introText -> f:format.html()} {travelinfo.introText -> f:format.html()}
<p> <p>
{travelinfo.traveldate.product.name} {travelinfo.traveldate.dateStart -> f:format.date(format: 'd.m.Y')} - {travelinfo.traveldate.dateEnd -> f:format.date(format: 'd.m.Y')} {date.product.name} {date.dateStart -> f:format.date(format: 'd.m.Y')} - {date.dateEnd -> f:format.date(format: 'd.m.Y')}
</p> </p>
</div> </div>
</div> </div>
@@ -64,11 +64,11 @@
Adresse Adresse
</h3> </h3>
<p> <p>
{travelinfo.traveldate.hotel.name} {date.hotel.name}
<br> <br>
{travelinfo.traveldate.hotel.address -> f:format.nl2br()} {date.hotel.address -> f:format.nl2br()}
</p> </p>
<f:if condition="{travelinfo.traveldate.busIncluded}"> <f:if condition="{date.busIncluded}">
<h3 class="text-white"> <h3 class="text-white">
Bus-Zustiege Bus-Zustiege
</h3> </h3>
@@ -84,7 +84,7 @@
Uhrzeit Uhrzeit
</th> </th>
</tr> </tr>
<f:for each="{travelinfo.traveldate.pickups}" as="pickup"> <f:for each="{date.pickups}" as="pickup">
<tr class="odd:bg-zinc-50 align-top"> <tr class="odd:bg-zinc-50 align-top">
<td class="border-r border-zinc-200 px-2 py-1 md:p-2"> <td class="border-r border-zinc-200 px-2 py-1 md:p-2">
{pickup.city}<br><span class="text-xs">{pickup.street}</span> {pickup.city}<br><span class="text-xs">{pickup.street}</span>