From c51c06715da516987de4589fb153df33d985282f Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Fri, 1 Nov 2013 20:11:03 +0100 Subject: [PATCH] [FEATURE] Add the TeaBeverage model and repository. --- Classes/Domain/Model/TeaBeverage.php | 60 ++++++++++ .../Repository/TeaBeverageRepository.php | 35 ++++++ Configuration/TCA/TeaBeverage.php | 110 ++++++++++++++++++ ExtensionBuilder.json | 2 +- Resources/Private/Language/locallang.xlf | 9 +- ...ng_csh_tx_tea_domain_model_teabeverage.xlf | 11 ++ Resources/Private/Language/locallang_db.xlf | 9 +- .../Icons/tx_tea_domain_model_teabeverage.gif | Bin 0 -> 533 bytes Tests/Unit/Domain/Model/TeaBeverageTest.php | 70 +++++++++++ .../Repository/TeaBeverageRepositoryTest.php | 64 ++++++++++ ext_tables.php | 31 +++++ ext_tables.sql | 39 +++++++ 12 files changed, 435 insertions(+), 5 deletions(-) create mode 100644 Classes/Domain/Model/TeaBeverage.php create mode 100644 Classes/Domain/Repository/TeaBeverageRepository.php create mode 100644 Configuration/TCA/TeaBeverage.php create mode 100644 Resources/Private/Language/locallang_csh_tx_tea_domain_model_teabeverage.xlf create mode 100644 Resources/Public/Icons/tx_tea_domain_model_teabeverage.gif create mode 100644 Tests/Unit/Domain/Model/TeaBeverageTest.php create mode 100644 Tests/Unit/Domain/Repository/TeaBeverageRepositoryTest.php diff --git a/Classes/Domain/Model/TeaBeverage.php b/Classes/Domain/Model/TeaBeverage.php new file mode 100644 index 0000000..b964da1 --- /dev/null +++ b/Classes/Domain/Model/TeaBeverage.php @@ -0,0 +1,60 @@ +, oliverklee.de + * + * All rights reserved + * + * This script is part of the TYPO3 project. The TYPO3 project is + * free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * The GNU General Public License can be found at + * http://www.gnu.org/copyleft/gpl.html. + * + * This script is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * This copyright notice MUST APPEAR in all copies of the script! + ***************************************************************/ + +/** + * This model represents a good cup of tea. + * + * @author Oliver Klee + */ +class TeaBeverage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { + /** + * size + * + * @var \float + */ + protected $size = 0.0; + + /** + * Returns the size + * + * @return \float $size + */ + public function getSize() { + return $this->size; + } + + /** + * Sets the size + * + * @param \float $size + * @return void + */ + public function setSize($size) { + $this->size = $size; + } +} +?> \ No newline at end of file diff --git a/Classes/Domain/Repository/TeaBeverageRepository.php b/Classes/Domain/Repository/TeaBeverageRepository.php new file mode 100644 index 0000000..13189b0 --- /dev/null +++ b/Classes/Domain/Repository/TeaBeverageRepository.php @@ -0,0 +1,35 @@ +, oliverklee.de + * + * All rights reserved + * + * This script is part of the TYPO3 project. The TYPO3 project is + * free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * The GNU General Public License can be found at + * http://www.gnu.org/copyleft/gpl.html. + * + * This script is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * This copyright notice MUST APPEAR in all copies of the script! + ***************************************************************/ + +/** + * This is the repository for TeaBeverages. + * + * @author Oliver Klee + */ +class TeaBeverageRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { +} +?> \ No newline at end of file diff --git a/Configuration/TCA/TeaBeverage.php b/Configuration/TCA/TeaBeverage.php new file mode 100644 index 0000000..a5a21c1 --- /dev/null +++ b/Configuration/TCA/TeaBeverage.php @@ -0,0 +1,110 @@ + $TCA['tx_tea_domain_model_teabeverage']['ctrl'], + 'interface' => array( + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, size', + ), + 'types' => array( + '1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, size,--div--;LLL:EXT:cms/locallang_ttc.xlf:tabs.access,starttime, endtime'), + ), + 'palettes' => array( + '1' => array('showitem' => ''), + ), + 'columns' => array( + + 'sys_language_uid' => array( + 'exclude' => 1, + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language', + 'config' => array( + 'type' => 'select', + 'foreign_table' => 'sys_language', + 'foreign_table_where' => 'ORDER BY sys_language.title', + 'items' => array( + array('LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1), + array('LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0), + ), + ), + ), + 'l10n_parent' => array( + 'displayCond' => 'FIELD:sys_language_uid:>:0', + 'exclude' => 1, + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent', + 'config' => array( + 'type' => 'select', + 'items' => array( + array('', 0), + ), + 'foreign_table' => 'tx_tea_domain_model_teabeverage', + 'foreign_table_where' => 'AND tx_tea_domain_model_teabeverage.pid=###CURRENT_PID### AND tx_tea_domain_model_teabeverage.sys_language_uid IN (-1,0)', + ), + ), + 'l10n_diffsource' => array( + 'config' => array( + 'type' => 'passthrough', + ), + ), + + 't3ver_label' => array( + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.versionLabel', + 'config' => array( + 'type' => 'input', + 'size' => 30, + 'max' => 255, + ) + ), + + 'hidden' => array( + 'exclude' => 1, + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden', + 'config' => array( + 'type' => 'check', + ), + ), + 'starttime' => array( + 'exclude' => 1, + 'l10n_mode' => 'mergeIfNotBlank', + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime', + 'config' => array( + 'type' => 'input', + 'size' => 13, + 'max' => 20, + 'eval' => 'datetime', + 'checkbox' => 0, + 'default' => 0, + 'range' => array( + 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')), + ), + ), + ), + 'endtime' => array( + 'exclude' => 1, + 'l10n_mode' => 'mergeIfNotBlank', + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime', + 'config' => array( + 'type' => 'input', + 'size' => 13, + 'max' => 20, + 'eval' => 'datetime', + 'checkbox' => 0, + 'default' => 0, + 'range' => array( + 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')), + ), + ), + ), + 'size' => array( + 'exclude' => 0, + 'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_teabeverage.size', + 'config' => array( + 'type' => 'input', + 'size' => 30, + 'eval' => 'double2', + ), + ), + ), +); +?> \ No newline at end of file diff --git a/ExtensionBuilder.json b/ExtensionBuilder.json index e08a4fd..0c52ce8 100644 --- a/ExtensionBuilder.json +++ b/ExtensionBuilder.json @@ -1 +1 @@ -{"modules":[],"properties":{"backendModules":[],"description":"This extension serves as an example on how to unit-test different data types and relation types in TYPO3 extensions.","emConf":{"category":"plugin","custom_category":"","dependsOn":"extbase => 6.0\nfluid => 6.0\ntypo3 => 6.0\n","disableLocalization":false,"disableVersioning":false,"priority":"","shy":false,"state":"alpha","targetVersion":"6.0","version":""},"extensionKey":"tea","name":"Tea example","originalExtensionKey":"","persons":[{"company":"oliverklee.de","email":"typo3-coding@oliverklee.de","name":"Oliver Klee","role":"Developer"}],"plugins":[],"vendorName":"OliverKlee"},"wires":[],"log":{"last_modified":"2013-11-01 07:50","extension_builder_version":"2.5.2","be_user":"Oliver Klee (1)"}} \ No newline at end of file +{"modules":[{"config":{"position":[40,138]},"name":"New Model Object","value":{"actionGroup":{"_default0_list":false,"_default1_show":false,"_default2_new_create":false,"_default3_edit_update":false,"_default4_delete":false,"customActions":[]},"name":"TeaBeverage","objectsettings":{"aggregateRoot":true,"description":"Tea beverage","mapToTable":"","parentClass":"","sorting":false,"type":"Entity","uid":"264022070620"},"propertyGroup":{"properties":[{"propertyDescription":"size","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"size","propertyType":"Float","uid":"686745089204"}]},"relationGroup":{"relations":[]}}}],"properties":{"backendModules":[],"description":"This extension serves as an example on how to unit-test different data types and relation types in TYPO3 extensions.","emConf":{"category":"plugin","custom_category":"","dependsOn":"extbase => 6.0\nfluid => 6.0\ntypo3 => 6.0\n","disableLocalization":false,"disableVersioning":false,"priority":"","shy":false,"state":"alpha","targetVersion":"6.0","version":""},"extensionKey":"tea","name":"Tea example","originalExtensionKey":"","persons":[{"company":"oliverklee.de","email":"typo3-coding@oliverklee.de","name":"Oliver Klee","role":"Developer"}],"plugins":[],"vendorName":"OliverKlee"},"wires":[],"log":{"last_modified":"2013-11-01 07:54","extension_builder_version":"2.5.2","be_user":"Oliver Klee (1)"}} \ No newline at end of file diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 2fd9a76..41765a3 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -1,9 +1,14 @@ - +
- + + Tea beverage + + + size + \ No newline at end of file diff --git a/Resources/Private/Language/locallang_csh_tx_tea_domain_model_teabeverage.xlf b/Resources/Private/Language/locallang_csh_tx_tea_domain_model_teabeverage.xlf new file mode 100644 index 0000000..2f397e0 --- /dev/null +++ b/Resources/Private/Language/locallang_csh_tx_tea_domain_model_teabeverage.xlf @@ -0,0 +1,11 @@ + + + +
+ + + size + + + + \ No newline at end of file diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index 2fd9a76..95df551 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -1,9 +1,14 @@ - +
- + + Tea Beverage + + + Size + \ No newline at end of file diff --git a/Resources/Public/Icons/tx_tea_domain_model_teabeverage.gif b/Resources/Public/Icons/tx_tea_domain_model_teabeverage.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cc5f16355d84652db5ce39fcbc7256b7ea457cd GIT binary patch literal 533 zcmZ?wbhEHb6krfwc;>^PT&ti`uNc2IM6Fr5d*_GlT^}Mg`l>Z4?cBL@{mqr@Zmft{ z7wEdsHlXM1p|kH6En2i~+qT*bFHc_i5WY6x!0ESfTY`5SewDjFA!B!R!NKH=-7#5v z<8pIzr=96jYgDqIV-eVU&ToZld3pKFnKKjS+;FNpvSrJblpPUfQw-u~UN@U;5Wc}@ z$BrEa{W=>rZk&4HOZ}!-d-m*!-W0Ir`qGWJ*7TfcZfa@@UE^PKph&A-&32ZV$71`A zWAz0q9tEs&-?wjHUteGDl80Iy>iRueDs>7`>w{xsV{`V!C+`Sfvt~_7N=o9k(EtDc zGYnRs_>+Z^fx(AC2joCdoG`E#HTX0&x3sqT=(8Hwwzskf@u~E-2#Sa)Om246yZMom0cTFy<3E({D?-?uh0SOWmDq@H{L literal 0 HcmV?d00001 diff --git a/Tests/Unit/Domain/Model/TeaBeverageTest.php b/Tests/Unit/Domain/Model/TeaBeverageTest.php new file mode 100644 index 0000000..2f3d355 --- /dev/null +++ b/Tests/Unit/Domain/Model/TeaBeverageTest.php @@ -0,0 +1,70 @@ +, oliverklee.de + * + * All rights reserved + * + * This script is part of the TYPO3 project. The TYPO3 project is + * free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The GNU General Public License can be found at + * http://www.gnu.org/copyleft/gpl.html. + * + * This script is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * This copyright notice MUST APPEAR in all copies of the script! + ***************************************************************/ + +/** + * Test case. + * + * @author Oliver Klee + */ +class TeaBeverageTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase { + /** + * @var \OliverKlee\Tea\Domain\Model\TeaBeverage + */ + protected $fixture; + + public function setUp() { + $this->fixture = new \OliverKlee\Tea\Domain\Model\TeaBeverage(); + } + + public function tearDown() { + unset($this->fixture); + } + + /** + * @test + */ + public function getSizeInitiallyReturnsZero() { + $this->assertSame( + 0.0, + $this->fixture->getSize() + ); + } + + /** + * @test + */ + public function setSizeSetsSize() { + $this->fixture->setSize(1234.56); + + $this->assertSame( + 1234.56, + $this->fixture->getSize() + ); + } +} +?> \ No newline at end of file diff --git a/Tests/Unit/Domain/Repository/TeaBeverageRepositoryTest.php b/Tests/Unit/Domain/Repository/TeaBeverageRepositoryTest.php new file mode 100644 index 0000000..4054d30 --- /dev/null +++ b/Tests/Unit/Domain/Repository/TeaBeverageRepositoryTest.php @@ -0,0 +1,64 @@ +, oliverklee.de + * + * All rights reserved + * + * This script is part of the TYPO3 project. The TYPO3 project is + * free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The GNU General Public License can be found at + * http://www.gnu.org/copyleft/gpl.html. + * + * This script is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * This copyright notice MUST APPEAR in all copies of the script! + ***************************************************************/ + +/** + * Test case. + * + * @author Oliver Klee + */ +class TeaBeverageRepositoryTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase { + /** + * @var \OliverKlee\Tea\Domain\Model\TeaBeverage + */ + protected $fixture; + + /** + * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface|PHPUnit_Framework_MockObject_MockObject + */ + protected $objectManager = NULL; + + public function setUp() { + $this->objectManager = $this->getMock('TYPO3\CMS\Extbase\Object\ObjectManagerInterface'); + + $this->fixture = new \OliverKlee\Tea\Domain\Repository\TeaBeverageRepository($this->objectManager); + } + + public function tearDown() { + unset($this->fixture, $this->objectManager); + } + + /** + * @test + */ + public function canBeInstantiated() { + $this->assertNotNull( + $this->fixture + ); + } +} +?> \ No newline at end of file diff --git a/ext_tables.php b/ext_tables.php index 25cb20c..60636cc 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -5,4 +5,35 @@ if (!defined('TYPO3_MODE')) { \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'Tea example'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_tea_domain_model_teabeverage', 'EXT:tea/Resources/Private/Language/locallang_csh_tx_tea_domain_model_teabeverage.xlf'); +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_tea_domain_model_teabeverage'); +$TCA['tx_tea_domain_model_teabeverage'] = array( + 'ctrl' => array( + 'title' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_teabeverage', + 'label' => 'size', + 'tstamp' => 'tstamp', + 'crdate' => 'crdate', + 'cruser_id' => 'cruser_id', + 'dividers2tabs' => TRUE, + + 'versioningWS' => 2, + 'versioning_followPages' => TRUE, + + 'origUid' => 't3_origuid', + 'languageField' => 'sys_language_uid', + 'transOrigPointerField' => 'l10n_parent', + 'transOrigDiffSourceField' => 'l10n_diffsource', + + 'delete' => 'deleted', + 'enablecolumns' => array( + 'disabled' => 'hidden', + 'starttime' => 'starttime', + 'endtime' => 'endtime', + ), + 'searchFields' => 'size,', + 'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/TeaBeverage.php', + 'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_tea_domain_model_teabeverage.gif' + ), +); + ?> \ No newline at end of file diff --git a/ext_tables.sql b/ext_tables.sql index e69de29..5befa6a 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -0,0 +1,39 @@ +# +# Table structure for table 'tx_tea_domain_model_teabeverage' +# +CREATE TABLE tx_tea_domain_model_teabeverage ( + + uid int(11) NOT NULL auto_increment, + pid int(11) DEFAULT '0' NOT NULL, + + size double(11,2) DEFAULT '0.00' NOT NULL, + + tstamp int(11) unsigned DEFAULT '0' NOT NULL, + crdate int(11) unsigned DEFAULT '0' NOT NULL, + cruser_id int(11) unsigned DEFAULT '0' NOT NULL, + deleted tinyint(4) unsigned DEFAULT '0' NOT NULL, + hidden tinyint(4) unsigned DEFAULT '0' NOT NULL, + starttime int(11) unsigned DEFAULT '0' NOT NULL, + endtime int(11) unsigned DEFAULT '0' NOT NULL, + + t3ver_oid int(11) DEFAULT '0' NOT NULL, + t3ver_id int(11) DEFAULT '0' NOT NULL, + t3ver_wsid int(11) DEFAULT '0' NOT NULL, + t3ver_label varchar(255) DEFAULT '' NOT NULL, + t3ver_state tinyint(4) DEFAULT '0' NOT NULL, + t3ver_stage int(11) DEFAULT '0' NOT NULL, + t3ver_count int(11) DEFAULT '0' NOT NULL, + t3ver_tstamp int(11) DEFAULT '0' NOT NULL, + t3ver_move_id int(11) DEFAULT '0' NOT NULL, + + t3_origuid int(11) DEFAULT '0' NOT NULL, + sys_language_uid int(11) DEFAULT '0' NOT NULL, + l10n_parent int(11) DEFAULT '0' NOT NULL, + l10n_diffsource mediumblob, + + PRIMARY KEY (uid), + KEY parent (pid), + KEY t3ver_oid (t3ver_oid,t3ver_wsid), + KEY language (l10n_parent,sys_language_uid) + +); \ No newline at end of file