VITEC headless: ContentElementResolver, Product fields (videofile, showdatapath)

- New Classes/Service/ContentElementResolver.php: parses TYPO3 typolink
  (t3://record?identifier=tt_content&uid=N, t3://page?uid=P#N, plain numeric)
  to a normalised tt_content envelope ({id,type,colPos,sorting,appearance,
  data}), recursively resolving any nested VITEC list-plugin children.
- ProductListJsonRenderer / ProductShowJsonRenderer: contentelement and
  contentelementcta now emit the resolved object instead of the raw
  typolink string (breaking change at those two keys).
- Product model: new field videofile (FAL, single video upload in tab
  Images and Videos, mp4/webm/ogv/mov/m4v); new bool field showdatapath
  (toggle at end of General tab, controls the "Datapath is now Vitec"
  graphic in the frontend). ext_tables.sql, TCA, model property +
  getter/setter, and both renderers updated accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
o-rascheandClaude Opus 4.7 committed 2026-06-05 10:34:49 +02:00
1 parent dba154e572
commit 409afc2433
34 files changed
+461 -9

No files matched your search

@@ -215,6 +215,22 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
*
* @var string
*/
/**
* Uploaded / locally selected video file (FAL)
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference|null
*/
protected $videofile;
/**
* Show the "Datapath is now Vitec" graphic in the frontend
*
* @var bool
*/
protected $showdatapath = false;
protected $contentelement;
/**
@@ -865,6 +881,50 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
*
* @return string
*/
/**
* Returns the uploaded video file
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference|null
*/
public function getVideofile(): ?\TYPO3\CMS\Extbase\Domain\Model\FileReference
{
return $this->videofile;
}
/**
* Sets the uploaded video file
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference|null $videofile
* @return void
*/
public function setVideofile(?\TYPO3\CMS\Extbase\Domain\Model\FileReference $videofile): void
{
$this->videofile = $videofile;
}
/**
* Returns the showdatapath flag
*
* @return bool
*/
public function getShowdatapath(): bool
{
return (bool)$this->showdatapath;
}
/**
* Sets the showdatapath flag
*
* @param bool $showdatapath
* @return void
*/
public function setShowdatapath(bool $showdatapath): void
{
$this->showdatapath = $showdatapath;
}
public function getContentelement(): string
{
return $this->contentelement;
@@ -919,4 +979,4 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
}
/* --------------------------------------------------------------------- */
}
}