mirror of https://github.com/FriendsOfTYPO3/tea.git synced 2024-11-24 18:36:12 +01:00

[FEATURE] Add Tea.image as a FAL example (#15)

This commit is contained in:
Oliver Klee 2018-05-25 22:39:33 +02:00 committed by GitHub
parent 9b10334c0d
commit 09dc1281ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 109 additions and 3 deletions

View file

@ -2,7 +2,9 @@
declare(strict_types = 1);
namespace OliverKlee\Tea\Domain\Model\Product;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy;
/**
* This class represents a tea (flavor), e.g., "Earl Grey".
@ -21,6 +23,12 @@ class Tea extends AbstractEntity
*/
protected $description = '';
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @lazy
*/
protected $image = null;
/**
* @return string
*/
@ -56,4 +64,26 @@ class Tea extends AbstractEntity
{
$this->description = $description;
}
/**
* @return FileReference|null
*/
public function getImage()
{
if ($this->image instanceof LazyLoadingProxy) {
$this->image = $this->image->_loadRealInstance();
}
return $this->image;
}
/**
* @param FileReference $image
*
* @return void
*/
public function setImage(FileReference $image)
{
$this->image = $image;
}
}

View file

@ -13,10 +13,10 @@ return [
'searchFields' => 'title, description',
],
'interface' => [
'showRecordFieldList' => 'title, description',
'showRecordFieldList' => 'title, description, image',
],
'types' => [
'1' => ['showitem' => 'title, description'],
'1' => ['showitem' => 'title, description, image'],
],
'columns' => [
'title' => [
@ -38,5 +38,21 @@ return [
'eval' => 'trim',
],
],
'image' => [
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.image',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'maxitems' => 1,
'appearance' => [
'collapseAll' => true,
'useSortable' => false,
'enabledControls' => [
'hide' => false,
],
],
]
),
],
],
];

View file

@ -15,6 +15,10 @@
<source>Description</source>
<target>Beschreibung</target>
</trans-unit>
<trans-unit id="tx_tea_domain_model_product_tea.image">
<source>Image</source>
<target>Bild</target>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -12,6 +12,9 @@
<trans-unit id="tx_tea_domain_model_product_tea.description">
<source>Description</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_product_tea.image">
<source>Image</source>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -10,6 +10,21 @@
<uid>2</uid>
<pid>1</pid>
<title>Assam</title>
<description>Dark ans strong.</description>
<description>Dark and strong.</description>
</tx_tea_domain_model_product_tea>
<tx_tea_domain_model_product_tea>
<uid>3</uid>
<pid>1</pid>
<title>Gunpowder</title>
<description>Bitter and very green.</description>
<image>1</image>
</tx_tea_domain_model_product_tea>
<sys_file_reference>
<uid>1</uid>
<pid>1</pid>
<uid_foreign>3</uid_foreign>
<tablenames>tx_tea_domain_model_product_tea</tablenames>
<fieldname>image</fieldname>
<l10n_diffsource></l10n_diffsource>
</sys_file_reference>
</dataset>

View file

@ -6,6 +6,7 @@ use Nimut\TestingFramework\TestCase\FunctionalTestCase;
use OliverKlee\Tea\Domain\Model\Product\Tea;
use OliverKlee\Tea\Domain\Repository\Product\TeaRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\Object\ObjectManager;
/**
@ -84,4 +85,20 @@ class TeaRepositoryTest extends FunctionalTestCase
static::assertSame('Earl Grey', $model->getTitle());
static::assertSame('Fresh and hot.', $model->getDescription());
}
/**
* @test
*/
public function fillsImageRelation()
{
$this->importDataSet(__DIR__ . '/../Fixtures/Product/Tea.xml');
$uid = 3;
/** @var Tea $model */
$model = $this->subject->findByUid($uid);
$image = $model->getImage();
static::assertInstanceOf(FileReference::class, $image);
static::assertSame(1, $image->getUid());
}
}

View file

@ -4,6 +4,7 @@ namespace OliverKlee\Tea\Tests\Unit\Domain\Model\Product;
use Nimut\TestingFramework\TestCase\UnitTestCase;
use OliverKlee\Tea\Domain\Model\Product\Tea;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/**
@ -68,4 +69,23 @@ class TeaTest extends UnitTestCase
static::assertSame($value, $this->subject->getDescription());
}
/**
* @test
*/
public function getImageInitiallyReturnsNull()
{
static::assertNull($this->subject->getImage());
}
/**
* @test
*/
public function setImageSetsImage()
{
$model = new FileReference();
$this->subject->setImage($model);
static::assertSame($model, $this->subject->getImage());
}
}

View file

@ -10,6 +10,7 @@ CREATE TABLE tx_tea_domain_model_product_tea (
title varchar(255) DEFAULT '' NOT NULL,
description varchar(2000) DEFAULT '' NOT NULL,
image int(11) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (uid),
KEY parent (pid)