/** * Factory method creates instance of breadcrumbs collection for a given filterbox collection * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection $filterboxCollection * @return Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection */ public function getInstanceByFilterboxCollection(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection $filterboxCollection) { if (!array_key_exists($filterboxCollection->getListIdentifier(), $this->instances) || $this->instances[$filterboxCollection->getListIdentifier()] == null) { $breadCrumbCollection = new Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection(); $breadCrumbCollection->injectConfigurationBuilder($configurationBuilder); $getPostVarsAdapterFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_StateAdapter_GetPostVarAdapterFactory'); /* @var $getPostVarsAdapterFactory Tx_PtExtlist_Domain_StateAdapter_GetPostVarAdapterFactory */ $gpVarsAdapter = $getPostVarsAdapterFactory->getInstance(); $gpVarsAdapter->injectParametersInObject($breadCrumbCollection); foreach ($filterboxCollection as $filterbox) { /* @var $filterbox Tx_PtExtlist_Domain_Model_Filter_Filterbox */ foreach ($filterbox as $filter) { /* @var $filter Tx_PtExtlist_Domain_Model_Filter_FilterInterface */ if ($filter->isActive()) { $breadcrumb = $filter->getFilterBreadCrumb(); if ($breadcrumb !== null) { // TODO at the moment, proxy filters generate a null breadcrumb. Fix this! $breadCrumbCollection->addBreadCrumb($breadcrumb); } } } } $this->instances[$filterboxCollection->getListIdentifier()] = $breadCrumbCollection; } return $this->instances[$filterboxCollection->getListIdentifier()]; }
/** @test */ public function addBreadCrumbAddsBreadCrumbToCollection() { $filterMock = $this->getMock('Tx_PtExtlist_Tests_Domain_Model_Filter_Stubs_FilterStub', array(), array(), '', false); $breadCrumbMock = $this->getAccessibleMock('Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumb', array('dummy'), array($filterMock), '', false); $breadCrumbMock->_set('filter', $filterMock); $breadCrumbCollection = new Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection(); $breadCrumbCollection->addBreadCrumb($breadCrumbMock); }