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

[FEATURE] Add a Testimonial model and a relation to it.

This commit is contained in:
Oliver Klee 2013-11-01 22:03:14 +01:00
parent e8d19e41c8
commit d9ddc7bae5
21 changed files with 703 additions and 26 deletions

View file

@ -1,5 +1,4 @@
<?php <?php
namespace OliverKlee\Tea\Domain\Model; namespace OliverKlee\Tea\Domain\Model;
/*************************************************************** /***************************************************************

View file

@ -48,6 +48,12 @@ class TeaBeverage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
*/ */
protected $additions = NULL; protected $additions = NULL;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Testimonial>
* @lazy
*/
protected $testimonials = NULL;
/** /**
* The constructor. * The constructor.
* *
@ -64,6 +70,7 @@ class TeaBeverage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
*/ */
protected function initializeStorageObjects() { protected function initializeStorageObjects() {
$this->additions = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->additions = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->testimonials = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
} }
/** /**
@ -98,6 +105,22 @@ class TeaBeverage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
$this->type = $type; $this->type = $type;
} }
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Addition> $additions
*/
public function getAdditions() {
return $this->additions;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Addition> $additions
*
* @return void
*/
public function setAdditions(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $additions) {
$this->additions = $additions;
}
/** /**
* Adds an Addition. * Adds an Addition.
* *
@ -121,23 +144,42 @@ class TeaBeverage extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
} }
/** /**
* Returns the additions. * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Testimonial> $testimonials
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Addition> $additions
*/ */
public function getAdditions() { public function getTestimonials() {
return $this->additions; return $this->testimonials;
} }
/** /**
* Sets the additions. * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Testimonial> $testimonials
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\OliverKlee\Tea\Domain\Model\Addition> $additions
* *
* @return void * @return void
*/ */
public function setAdditions(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $additions) { public function setTestimonials(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $testimonials) {
$this->additions = $additions; $this->testimonials = $testimonials;
} }
/**
* Adds an Testimonial.
*
* @param \OliverKlee\Tea\Domain\Model\Testimonial $testimonial
*
* @return void
*/
public function addTestimonial(\OliverKlee\Tea\Domain\Model\Testimonial $testimonial) {
$this->testimonials->attach($testimonial);
}
/**
* Removes an Testimonial.
*
* @param \OliverKlee\Tea\Domain\Model\Testimonial $testimonialToRemove The Testimonial to be removed
*
* @return void
*/
public function removeTestimonial(\OliverKlee\Tea\Domain\Model\Testimonial $testimonialToRemove) {
$this->testimonials->detach($testimonialToRemove);
}
} }
?> ?>

View file

@ -0,0 +1,97 @@
<?php
namespace OliverKlee\Tea\Domain\Model;
/***************************************************************
* Copyright notice
*
* (c) 2013 Oliver Klee <typo3-coding@oliverklee.de>, 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 testimonial for a TeaBeverage.
*
* @author Oliver Klee <typo3-coding@oliverklee.de>
*/
class Testimonial extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* @var \DateTime
*/
protected $dateOfPosting = NULL;
/**
* @var integer
*/
protected $numberOfConsumedCups = 0;
/**
* @var string
*/
protected $text = '';
/**
* @return \DateTime $dateOfPosting
*/
public function getDateOfPosting() {
return $this->dateOfPosting;
}
/**
* @param \DateTime $dateOfPosting
*
* @return void
*/
public function setDateOfPosting($dateOfPosting) {
$this->dateOfPosting = $dateOfPosting;
}
/**
* @return integer $numberOfConsumedCups
*/
public function getNumberOfConsumedCups() {
return $this->numberOfConsumedCups;
}
/**
* @param integer $numberOfConsumedCups
*
* @return void
*/
public function setNumberOfConsumedCups($numberOfConsumedCups) {
$this->numberOfConsumedCups = $numberOfConsumedCups;
}
/**
* @return string $text
*/
public function getText() {
return $this->text;
}
/**
* @param string $text
*
* @return void
*/
public function setText($text) {
$this->text = $text;
}
}
?>

View file

@ -26,7 +26,7 @@ namespace OliverKlee\Tea\Domain\Repository;
***************************************************************/ ***************************************************************/
/** /**
* This is the repository for TeaBeverages. * This is the repository for TeaBeverage models.
* *
* @author Oliver Klee <typo3-coding@oliverklee.de> * @author Oliver Klee <typo3-coding@oliverklee.de>
*/ */

View file

@ -0,0 +1,35 @@
<?php
namespace OliverKlee\Tea\Domain\Repository;
/***************************************************************
* Copyright notice
*
* (c) 2013 Oliver Klee <typo3-coding@oliverklee.de>, 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 Testimonial models.
*
* @author Oliver Klee <typo3-coding@oliverklee.de>
*/
class TestimonialRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
}
?>

View file

@ -6,10 +6,10 @@ if (!defined ('TYPO3_MODE')) {
$TCA['tx_tea_domain_model_teabeverage'] = array( $TCA['tx_tea_domain_model_teabeverage'] = array(
'ctrl' => $TCA['tx_tea_domain_model_teabeverage']['ctrl'], 'ctrl' => $TCA['tx_tea_domain_model_teabeverage']['ctrl'],
'interface' => array( 'interface' => array(
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, size, type, additions', 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, size, type, additions, testimonials',
), ),
'types' => array( 'types' => array(
'1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, size, type, additions,--div--;LLL:EXT:cms/locallang_ttc.xlf:tabs.access,starttime, endtime'), '1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, size, type, additions, testimonials,--div--;LLL:EXT:cms/locallang_ttc.xlf:tabs.access,starttime, endtime'),
), ),
'palettes' => array( 'palettes' => array(
'1' => array('showitem' => ''), '1' => array('showitem' => ''),
@ -134,7 +134,7 @@ $TCA['tx_tea_domain_model_teabeverage'] = array(
'popup_onlyOpenIfSelected' => 1, 'popup_onlyOpenIfSelected' => 1,
'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1', 'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
), ),
'add' => Array( 'add' => array(
'type' => 'script', 'type' => 'script',
'title' => 'Create new', 'title' => 'Create new',
'icon' => 'add.gif', 'icon' => 'add.gif',
@ -148,6 +148,23 @@ $TCA['tx_tea_domain_model_teabeverage'] = array(
), ),
), ),
), ),
'testimonials' => array(
'exclude' => 0,
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_teabeverage.testimonials',
'config' => array(
'type' => 'inline',
'foreign_table' => 'tx_tea_domain_model_testimonial',
'foreign_field' => 'teabeverage',
'maxitems' => 9999,
'appearance' => array(
'collapseAll' => 0,
'levelLinksPosition' => 'top',
'showSynchronizationLink' => 1,
'showPossibleLocalizationRecords' => 1,
'showAllLocalizationLink' => 1,
),
),
),
), ),
); );
?> ?>

View file

@ -0,0 +1,134 @@
<?php
if (!defined ('TYPO3_MODE')) {
die ('Access denied.');
}
$TCA['tx_tea_domain_model_testimonial'] = array(
'ctrl' => $TCA['tx_tea_domain_model_testimonial']['ctrl'],
'interface' => array(
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, date_of_posting, number_of_consumed_cups, text',
),
'types' => array(
'1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, date_of_posting, number_of_consumed_cups, text,--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_testimonial',
'foreign_table_where' => 'AND tx_tea_domain_model_testimonial.pid=###CURRENT_PID### AND tx_tea_domain_model_testimonial.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')),
),
),
),
'date_of_posting' => array(
'exclude' => 0,
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_testimonial.date_of_posting',
'config' => array(
'dbType' => 'datetime',
'type' => 'input',
'size' => 12,
'eval' => 'datetime',
'checkbox' => 0,
'default' => '0000-00-00 00:00:00',
),
),
'number_of_consumed_cups' => array(
'exclude' => 0,
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_testimonial.number_of_consumed_cups',
'config' => array(
'type' => 'input',
'size' => 4,
'eval' => 'int',
),
),
'text' => array(
'exclude' => 0,
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_testimonial.text',
'config' => array(
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim',
),
),
'teabeverage' => array(
'config' => array(
'type' => 'passthrough',
),
),
),
);
?>

View file

@ -1 +1 @@
{"modules":[{"config":{"position":[658,132]},"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":[{"foreignRelationClass":"","lazyLoading":true,"propertyIsExcludeField":false,"relationDescription":"type","relationName":"type","relationType":"manyToOne","relationWire":"[wired]","uid":"381688624164"},{"foreignRelationClass":"","lazyLoading":true,"propertyIsExcludeField":false,"relationDescription":"additions","relationName":"additions","relationType":"manyToMany","relationWire":"[wired]","uid":"1077905653897"}]}}},{"config":{"position":[71,142]},"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":"TeaType","objectsettings":{"aggregateRoot":false,"description":"Tea type","mapToTable":"","parentClass":"","sorting":false,"type":"Entity","uid":"1351448414985"},"propertyGroup":{"properties":[{"propertyDescription":"title","propertyIsExcludeField":false,"propertyIsRequired":true,"propertyName":"title","propertyType":"String","uid":"514346914201"},{"propertyDescription":"caffeinated","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"caffeinated","propertyType":"Boolean","uid":"314036724989"}]},"relationGroup":{"relations":[]}}},{"config":{"position":[35,391]},"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":"Addition","objectsettings":{"aggregateRoot":false,"description":"addition","mapToTable":"","parentClass":"","sorting":false,"type":"ValueObject","uid":"1270408953807"},"propertyGroup":{"properties":[{"propertyDescription":"title","propertyIsExcludeField":false,"propertyIsRequired":true,"propertyName":"title","propertyType":"String","uid":"846205806952"}]},"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":"tea","persons":[{"company":"oliverklee.de","email":"typo3-coding@oliverklee.de","name":"Oliver Klee","role":"Developer"}],"plugins":[],"vendorName":"OliverKlee"},"wires":[{"src":{"moduleId":0,"terminal":"relationWire_0","uid":"381688624164"},"tgt":{"moduleId":1,"terminal":"SOURCES","uid":"1351448414985"}},{"src":{"moduleId":0,"terminal":"relationWire_1","uid":"1077905653897"},"tgt":{"moduleId":2,"terminal":"SOURCES","uid":"1270408953807"}}],"log":{"last_modified":"2013-11-01 08:56","extension_builder_version":"2.5.2","be_user":"Oliver Klee (1)"}} {"modules":[{"config":{"position":[658,132]},"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":[{"foreignRelationClass":"","lazyLoading":true,"propertyIsExcludeField":false,"relationDescription":"type","relationName":"type","relationType":"manyToOne","relationWire":"[wired]","uid":"381688624164"},{"foreignRelationClass":"","lazyLoading":true,"propertyIsExcludeField":false,"relationDescription":"additions","relationName":"additions","relationType":"manyToMany","relationWire":"[wired]","uid":"1077905653897"},{"foreignRelationClass":"","lazyLoading":true,"propertyIsExcludeField":false,"relationDescription":"testimonials","relationName":"testimonials","relationType":"zeroToMany","relationWire":"[wired]","uid":"612872844633"}]}}},{"config":{"position":[71,142]},"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":"TeaType","objectsettings":{"aggregateRoot":false,"description":"Tea type","mapToTable":"","parentClass":"","sorting":false,"type":"Entity","uid":"1351448414985"},"propertyGroup":{"properties":[{"propertyDescription":"title","propertyIsExcludeField":false,"propertyIsRequired":true,"propertyName":"title","propertyType":"String","uid":"514346914201"},{"propertyDescription":"caffeinated","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"caffeinated","propertyType":"Boolean","uid":"314036724989"}]},"relationGroup":{"relations":[]}}},{"config":{"position":[35,391]},"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":"Addition","objectsettings":{"aggregateRoot":false,"description":"addition","mapToTable":"","parentClass":"","sorting":false,"type":"ValueObject","uid":"1270408953807"},"propertyGroup":{"properties":[{"propertyDescription":"title","propertyIsExcludeField":false,"propertyIsRequired":true,"propertyName":"title","propertyType":"String","uid":"846205806952"}]},"relationGroup":{"relations":[]}}},{"config":{"position":[642,507]},"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":"Testimonial","objectsettings":{"aggregateRoot":true,"description":"Testimonial","mapToTable":"","parentClass":"","sorting":false,"type":"Entity","uid":"539309147575"},"propertyGroup":{"properties":[{"propertyDescription":"date of posting","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"dateOfPosting","propertyType":"NativeDateTime","uid":"927757775346"},{"propertyDescription":"number of consumed cups","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"numberOfConsumedCups","propertyType":"Integer","uid":"193382428427"},{"propertyDescription":"text","propertyIsExcludeField":false,"propertyIsRequired":false,"propertyName":"text","propertyType":"Text","uid":"563552582384"}]},"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":"tea","persons":[{"company":"oliverklee.de","email":"typo3-coding@oliverklee.de","name":"Oliver Klee","role":"Developer"}],"plugins":[],"vendorName":"OliverKlee"},"wires":[{"src":{"moduleId":0,"terminal":"relationWire_0","uid":"381688624164"},"tgt":{"moduleId":1,"terminal":"SOURCES","uid":"1351448414985"}},{"src":{"moduleId":0,"terminal":"relationWire_1","uid":"1077905653897"},"tgt":{"moduleId":2,"terminal":"SOURCES","uid":"1270408953807"}},{"src":{"moduleId":0,"terminal":"relationWire_2","uid":"612872844633"},"tgt":{"moduleId":3,"terminal":"SOURCES","uid":"539309147575"}}],"log":{"last_modified":"2013-11-01 09:35","extension_builder_version":"2.5.2","be_user":"Oliver Klee (1)"}}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0"> <xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T20:56:40Z" product-name="tea"> <file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T21:35:43Z" product-name="tea">
<header/> <header/>
<body> <body>
<trans-unit id="tx_tea_domain_model_teabeverage"> <trans-unit id="tx_tea_domain_model_teabeverage">
@ -15,6 +15,9 @@
<trans-unit id="tx_tea_domain_model_teabeverage.additions"> <trans-unit id="tx_tea_domain_model_teabeverage.additions">
<source>additions</source> <source>additions</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_tea_domain_model_teabeverage.testimonials">
<source>testimonials</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_teatype"> <trans-unit id="tx_tea_domain_model_teatype">
<source>Tea type</source> <source>Tea type</source>
</trans-unit> </trans-unit>
@ -30,6 +33,18 @@
<trans-unit id="tx_tea_domain_model_addition.title"> <trans-unit id="tx_tea_domain_model_addition.title">
<source>title</source> <source>title</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial">
<source>Testimonial</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.date_of_posting">
<source>date of posting</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.number_of_consumed_cups">
<source>number of consumed cups</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.text">
<source>text</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0"> <xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T20:34:29Z" product-name="tea"> <file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T21:35:43Z" product-name="tea">
<header/> <header/>
<body> <body>
<trans-unit id="size.description"> <trans-unit id="size.description">
@ -9,6 +9,12 @@
<trans-unit id="type.description"> <trans-unit id="type.description">
<source>type</source> <source>type</source>
</trans-unit> </trans-unit>
<trans-unit id="additions.description">
<source>additions</source>
</trans-unit>
<trans-unit id="testimonials.description">
<source>testimonials</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T21:35:43Z" product-name="tea">
<header/>
<body>
<trans-unit id="date_of_posting.description">
<source>date of posting</source>
</trans-unit>
<trans-unit id="number_of_consumed_cups.description">
<source>number of consumed cups</source>
</trans-unit>
<trans-unit id="text.description">
<source>text</source>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0"> <xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T20:56:40Z" product-name="tea"> <file source-language="en" datatype="plaintext" original="messages" date="2013-11-01T21:35:43Z" product-name="tea">
<header/> <header/>
<body> <body>
<trans-unit id="tx_tea_domain_model_teabeverage"> <trans-unit id="tx_tea_domain_model_teabeverage">
@ -15,6 +15,9 @@
<trans-unit id="tx_tea_domain_model_teabeverage.additions"> <trans-unit id="tx_tea_domain_model_teabeverage.additions">
<source>Additions</source> <source>Additions</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_tea_domain_model_teabeverage.testimonials">
<source>Testimonials</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_teatype"> <trans-unit id="tx_tea_domain_model_teatype">
<source>Tea Type</source> <source>Tea Type</source>
</trans-unit> </trans-unit>
@ -30,6 +33,18 @@
<trans-unit id="tx_tea_domain_model_addition.title"> <trans-unit id="tx_tea_domain_model_addition.title">
<source>Title</source> <source>Title</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial">
<source>Testimonial</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.date_of_posting">
<source>Date Of Posting</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.number_of_consumed_cups">
<source>Number Of Consumed Cups</source>
</trans-unit>
<trans-unit id="tx_tea_domain_model_testimonial.text">
<source>Text</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

View file

@ -1,5 +1,4 @@
<?php <?php
namespace OliverKlee\Tea\Tests; namespace OliverKlee\Tea\Tests;
/*************************************************************** /***************************************************************

View file

@ -1,5 +1,4 @@
<?php <?php
namespace OliverKlee\Tea\Tests; namespace OliverKlee\Tea\Tests;
/*************************************************************** /***************************************************************
@ -142,5 +141,59 @@ class TeaBeverageTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase {
$this->fixture->getAdditions()->contains($newItem) $this->fixture->getAdditions()->contains($newItem)
); );
} }
/**
* @test
*/
public function getTestimonialsInitiallyReturnsEmptyStorage() {
$this->assertEquals(
new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(),
$this->fixture->getTestimonials()
);
}
/**
* @test
*/
public function setTestimonialsSetsTestimonials() {
$items = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->fixture->setTestimonials($items);
$this->assertSame(
$items,
$this->fixture->getTestimonials()
);
}
/**
* @test
*/
public function addTestimonialAddsTestimonial() {
$items = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->fixture->setTestimonials($items);
$newItem = new \OliverKlee\Tea\Domain\Model\Testimonial();
$this->fixture->addTestimonial($newItem);
$this->assertTrue(
$this->fixture->getTestimonials()->contains($newItem)
);
}
/**
* @test
*/
public function removeTestimonialRemovesTestimonial() {
$items = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->fixture->setTestimonials($items);
$newItem = new \OliverKlee\Tea\Domain\Model\Testimonial();
$this->fixture->addTestimonial($newItem);
$this->fixture->removeTestimonial($newItem);
$this->assertFalse(
$this->fixture->getTestimonials()->contains($newItem)
);
}
} }
?> ?>

View file

@ -1,5 +1,4 @@
<?php <?php
namespace OliverKlee\Tea\Tests; namespace OliverKlee\Tea\Tests;
/*************************************************************** /***************************************************************

View file

@ -0,0 +1,113 @@
<?php
namespace OliverKlee\Tea\Tests;
/***************************************************************
* Copyright notice
*
* (c) 2013 Oliver Klee <typo3-coding@oliverklee.de>, 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 <typo3-coding@oliverklee.de>
*/
class TestimonialTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase {
/**
* @var \OliverKlee\Tea\Domain\Model\Testimonial
*/
protected $fixture = NULL;
public function setUp() {
$this->fixture = new \OliverKlee\Tea\Domain\Model\Testimonial();
}
public function tearDown() {
unset($this->fixture);
}
/**
* @test
*/
public function getDateOfPostingInitiallyReturnsNull() {
$this->assertNull(
$this->fixture->getDateOfPosting()
);
}
/**
* @test
*/
public function setDateOfPostingSetsDateOfPosting() {
$date = new \DateTime();
$this->fixture->setDateOfPosting($date);
$this->assertSame(
$date,
$this->fixture->getDateOfPosting()
);
}
/**
* @test
*/
public function getNumberOfConsumedCupsInitiallyReturnsZero() {
$this->assertSame(
0,
$this->fixture->getNumberOfConsumedCups()
);
}
/**
* @test
*/
public function setNumberOfConsumedCupsSetsNumberOfConsumedCups() {
$this->fixture->setNumberOfConsumedCups(123456);
$this->assertSame(
123456,
$this->fixture->getNumberOfConsumedCups()
);
}
/**
* @test
*/
public function getTextInitiallyReturnsEmptyString() {
$this->assertSame(
'',
$this->fixture->getText()
);
}
/**
* @test
*/
public function setTextSetsText() {
$this->fixture->setText('foo bar');
$this->assertSame(
'foo bar',
$this->fixture->getText()
);
}
}
?>

View file

@ -1,5 +1,4 @@
<?php <?php
namespace OliverKlee\Tea\Tests; namespace OliverKlee\Tea\Tests;
/*************************************************************** /***************************************************************

View file

@ -0,0 +1,63 @@
<?php
namespace OliverKlee\Tea\Tests;
/***************************************************************
* Copyright notice
*
* (c) 2013 Oliver Klee <typo3-coding@oliverklee.de>, 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 <typo3-coding@oliverklee.de>
*/
class TestimonialRepositoryTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase {
/**
* @var \OliverKlee\Tea\Domain\Model\Testimonial
*/
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\TestimonialRepository($this->objectManager);
}
public function tearDown() {
unset($this->fixture, $this->objectManager);
}
/**
* @test
*/
public function canBeInstantiated() {
$this->assertNotNull(
$this->fixture
);
}
}
?>

View file

@ -30,7 +30,7 @@ $TCA['tx_tea_domain_model_teabeverage'] = array(
'starttime' => 'starttime', 'starttime' => 'starttime',
'endtime' => 'endtime', 'endtime' => 'endtime',
), ),
'searchFields' => 'size,type,additions,', 'searchFields' => 'size,type,additions,testimonials,',
'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/TeaBeverage.php', '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' 'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_tea_domain_model_teabeverage.gif'
), ),
@ -97,4 +97,35 @@ $TCA['tx_tea_domain_model_addition'] = array(
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_tea_domain_model_addition.gif' 'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_tea_domain_model_addition.gif'
), ),
); );
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_tea_domain_model_testimonial', 'EXT:tea/Resources/Private/Language/locallang_csh_tx_tea_domain_model_testimonial.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_tea_domain_model_testimonial');
$TCA['tx_tea_domain_model_testimonial'] = array(
'ctrl' => array(
'title' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_testimonial',
'label' => 'date_of_posting',
'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' => 'date_of_posting,number_of_consumed_cups,text,',
'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/Testimonial.php',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_tea_domain_model_testimonial.gif'
),
);
?> ?>

View file

@ -8,6 +8,7 @@ CREATE TABLE tx_tea_domain_model_teabeverage (
size double(11,2) DEFAULT '0.00' NOT NULL, size double(11,2) DEFAULT '0.00' NOT NULL,
type int(11) unsigned DEFAULT '0', type int(11) unsigned DEFAULT '0',
additions int(11) unsigned DEFAULT '0' NOT NULL, additions int(11) unsigned DEFAULT '0' NOT NULL,
testimonials int(11) unsigned DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL, tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL, crdate int(11) unsigned DEFAULT '0' NOT NULL,
@ -115,6 +116,48 @@ CREATE TABLE tx_tea_domain_model_addition (
KEY language (l10n_parent,sys_language_uid) KEY language (l10n_parent,sys_language_uid)
); );
#
# Table structure for table 'tx_tea_domain_model_testimonial'
#
CREATE TABLE tx_tea_domain_model_testimonial (
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
teabeverage int(11) unsigned DEFAULT '0' NOT NULL,
date_of_posting datetime DEFAULT '0000-00-00 00:00:00',
number_of_consumed_cups int(11) DEFAULT '0' NOT NULL,
text text 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)
);
# #
# Table structure for table 'tx_tea_teabeverage_addition_mm' # Table structure for table 'tx_tea_teabeverage_addition_mm'
# #