From 6a4d750b7257b7080e6773b366eb1854e82371fa Mon Sep 17 00:00:00 2001 From: Cedric Ziel Date: Wed, 13 Jun 2018 11:19:26 +0200 Subject: [PATCH] Enable selection of categories for team --- .../Classes/Controller/TeamController.php | 9 +++++- .../Repository/TeammemberRepository.php | 8 +++++ .../FlexForms/flexform_teammembers.xml | 31 +++++++++++++++++++ web/typo3conf/ext/ep_products/ext_tables.php | 4 +++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 web/typo3conf/ext/ep_products/Configuration/FlexForms/flexform_teammembers.xml diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/TeamController.php b/web/typo3conf/ext/ep_products/Classes/Controller/TeamController.php index bfa2bf48..dab65d4b 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/TeamController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/TeamController.php @@ -29,6 +29,7 @@ namespace EP\EpProducts\Controller; use EP\EpProducts\Domain\Model\Teammember; use EP\EpProducts\Domain\Repository\TeammemberRepository; +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; class TeamController extends ActionController @@ -44,12 +45,18 @@ class TeamController extends ActionController public function __construct(TeammemberRepository $teammemberRepository) { parent::__construct(); + $this->teammemberRepository = $teammemberRepository; } public function listAction() { - $members = $this->teammemberRepository->findAll(); + if (isset($this->settings['teamCategories']) && count($this->settings['teamCategories'])) { + $members = $this->teammemberRepository->findByCategories(GeneralUtility::trimExplode(',', $this->settings['teamCategories'], true)); + } else { + $members = $this->teammemberRepository->findAll(); + } + $this->view->assign('members', $members); } diff --git a/web/typo3conf/ext/ep_products/Classes/Domain/Repository/TeammemberRepository.php b/web/typo3conf/ext/ep_products/Classes/Domain/Repository/TeammemberRepository.php index 525db19a..fd7e9073 100644 --- a/web/typo3conf/ext/ep_products/Classes/Domain/Repository/TeammemberRepository.php +++ b/web/typo3conf/ext/ep_products/Classes/Domain/Repository/TeammemberRepository.php @@ -35,4 +35,12 @@ class TeammemberRepository extends AbstractRepository protected $defaultOrderings = [ 'sorting' => 'ASC', ]; + + public function findByCategories(array $categories = []) + { + $qb = $this->createQuery(); + $qb->matching($qb->in('categories', $categories)); + + return $qb->execute(); + } } diff --git a/web/typo3conf/ext/ep_products/Configuration/FlexForms/flexform_teammembers.xml b/web/typo3conf/ext/ep_products/Configuration/FlexForms/flexform_teammembers.xml new file mode 100644 index 00000000..1e235dfa --- /dev/null +++ b/web/typo3conf/ext/ep_products/Configuration/FlexForms/flexform_teammembers.xml @@ -0,0 +1,31 @@ + + + 1 + + + + + + Konfiguration + + array + + + + 0 + + + select + selectMultipleSideBySide + 1 + sys_category + 0 + 99 + + + + + + + + diff --git a/web/typo3conf/ext/ep_products/ext_tables.php b/web/typo3conf/ext/ep_products/ext_tables.php index 00d46fd8..1b7fafae 100644 --- a/web/typo3conf/ext/ep_products/ext_tables.php +++ b/web/typo3conf/ext/ep_products/ext_tables.php @@ -207,6 +207,10 @@ $pluginSignature = str_replace('_', '', $_EXTKEY) . '_snowreport_list'; $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_snowreport.xml'); +$pluginSignature = str_replace('_', '', $_EXTKEY) . '_teammembers'; +$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_teammembers.xml'); + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( 'EP.' . $_EXTKEY, 'web',