/** * Build singleton instance of listHeader, a collection of header column objects * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param boolean $resetListHeader * @return Tx_PtExtlist_Domain_Model_List_Header_ListHeader */ public function createInstance(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, $resetListHeader = false) { $listIdentifier = $configurationBuilder->getListIdentifier(); // Check whether singleton instance exists if (!array_key_exists($listIdentifier, $this->instances) || $this->instances[$listIdentifier] === null || $resetListHeader) { $defaultSortingColumn = $configurationBuilder->buildListDefaultConfig()->getSortingColumn(); $columnConfigurationCollection = $configurationBuilder->buildColumnsConfiguration(); $listHeader = new Tx_PtExtlist_Domain_Model_List_Header_ListHeader($configurationBuilder->getListIdentifier()); $listIsSorted = false; foreach ($columnConfigurationCollection as $columnIdentifier => $singleColumnConfiguration) { /* @var $singleColumnConfiguration Tx_PtExtlist_Domain_Configuration_Columns_ColumnConfig */ $headerColumn = $this->headerColumnFactory->createInstance($singleColumnConfiguration); if ($singleColumnConfiguration->isAccessable()) { // We set list as sorted as soon as one column has sorting-status from user / session if ($headerColumn->isSortingActive()) { $listIsSorted = true; } $listHeader->addHeaderColumn($headerColumn, $singleColumnConfiguration->getColumnIdentifier()); } } $this->setVisibilityByColumnSelector($configurationBuilder, $listHeader); // Check whether we have a sorting from header columns (set by user) // or whether we have to set default sorting if (!$listIsSorted && $defaultSortingColumn && $listHeader->hasItem($defaultSortingColumn)) { $listHeader->getHeaderColumn($defaultSortingColumn)->setDefaultSorting($configurationBuilder->buildListDefaultConfig()->getSortingDirection()); $listHeader->getHeaderColumn($defaultSortingColumn)->init(); } $this->getPostVarsAdapterFactory->getInstance()->injectParametersInObject($listHeader); $listHeader->init(); $this->instances[$listIdentifier] = $listHeader; } // We return singleton instance of listHeader return $this->instances[$listIdentifier]; }
/** * Factory method creates instance of breadcrumbs collection as list identifier-specific singleton * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @return Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection */ public function getInstanceByConfigurationBuilder(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { if (!array_key_exists($configurationBuilder->getListIdentifier(), $this->instances) || $this->instances[$configurationBuilder->getListIdentifier()] == null) { $filterboxCollectionFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Model_Filter_FilterboxCollectionFactory'); /* @var $filterboxCollectionFactory Tx_PtExtlist_Domain_Model_Filter_FilterboxCollectionFactory */ $filterboxCollection = $filterboxCollectionFactory->createInstance($configurationBuilder, false); $breadCrumbCollection = $this->getInstanceByFilterboxCollection($configurationBuilder, $filterboxCollection); $this->instances[$configurationBuilder->getListIdentifier()] = $breadCrumbCollection; } return $this->instances[$configurationBuilder->getListIdentifier()]; }
/** * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder */ public function __construct(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, array $rendererChainSettings) { $this->configurationBuilder = $configurationBuilder; $this->listIdentifier = $configurationBuilder->getListIdentifier(); $this->settings = $rendererChainSettings; $this->init(); }
/** @test */ public function getFilterByFilterIdentifierReturnsExpectedFilter() { $dataBackendFactoryMock = $this->getDataBackendFactoryMockForListConfigurationAndListIdentifier($this->configurationBuilderMock->getSettings(), $this->configurationBuilderMock->getListIdentifier()); $filterboxFactory = $this->objectManager->get('Tx_PtExtlist_Domain_Model_Filter_FilterboxFactory'); /* @var $filterboxFactory Tx_PtExtlist_Domain_Model_Filter_FilterboxFactory */ $filterboxFactory->setDataBackendFactory($dataBackendFactoryMock); $filterbox = $filterboxFactory->createInstance($this->configurationBuilderMock->buildFilterConfiguration()->getFilterBoxConfig('testfilterbox')); $this->assertSame('testfilterbox', $filterbox->getFilterByFilterIdentifier('filter1')->getFilterBoxIdentifier()); }
/** * Creates a new instance of bookmark manager for given configuration builder * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @return Tx_PtExtlist_Domain_Model_Bookmark_BookmarkManager */ protected function createNewInstanceByConfigurationBuilder(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $bookmarksConfiguration = $configurationBuilder->buildBookmarkConfiguration(); $this->bookmarkRepository->setBookmarkStoragePid($bookmarksConfiguration->getBookmarkPid()); $bookmarkManager = $this->objectManager->get('Tx_PtExtlist_Domain_Model_Bookmark_BookmarkManager', $configurationBuilder->getListIdentifier()); /* @var $bookmarkManager Tx_PtExtlist_Domain_Model_Bookmark_BookmarkManager */ $bookmarkManager->_injectConfigurationBuilder($configurationBuilder); $bookmarkManager->_injectSessionPersistenceManager($this->sessionPersistenceManagerBuilder->getInstance()); $bookmarkManager->buildBookmarkConfig(); $bookmarkManager->initFeUser(); return $bookmarkManager; }
/** * Factory method for returning a singleton instance of a column selector * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @return Tx_PtExtlist_Domain_Model_ColumnSelector_ColumnSelector */ public function getInstance(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $listIdentifier = $configurationBuilder->getListIdentifier(); if ($this->instances[$listIdentifier] === null) { $this->instances[$listIdentifier] = new Tx_PtExtlist_Domain_Model_ColumnSelector_ColumnSelector(); $this->instances[$listIdentifier]->setConfiguration($configurationBuilder->buildColumnSelectorConfiguration()); // Inject settings from session. $this->sessionPersistenceManagerBuilder->getInstance()->registerObjectAndLoadFromSession($this->instances[$listIdentifier]); // Inject settings from gp-vars. $this->getPostVarsAdapterFactory->getInstance()->injectParametersInObject($this->instances[$listIdentifier]); } return $this->instances[$listIdentifier]; }
/** * Factory method for returning a singleton instance of sorter * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @return Tx_PtExtlist_Domain_Model_Sorting_Sorter */ public function getInstance(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $listIdentifier = $configurationBuilder->getListIdentifier(); if ($this->instances[$listIdentifier] === null) { $this->instances[$listIdentifier] = $this->objectManager->get('Tx_PtExtlist_Domain_Model_Sorting_Sorter'); $this->instances[$listIdentifier]->_injectSorterConfig($configurationBuilder->buildSorterConfiguration()); // At the moment we have to build list header here, as it is not registered in sorter otherwise. // TODO refactor this! We can register list header after sorter is build! $listHeaderFactory = $this->objectManager->get('Tx_PtExtlist_Domain_Model_List_Header_ListHeaderFactory'); /* @var $listHeaderFactory Tx_PtExtlist_Domain_Model_List_Header_ListHeaderFactory */ $listHeaderFactory->createInstance($configurationBuilder); } return $this->instances[$listIdentifier]; }
/** * @param Tx_PtExtlist_Domain_Model_Bookmark_Bookmark $bookmark * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param array $sessionData * @return void */ public function addContentToBookmark(Tx_PtExtlist_Domain_Model_Bookmark_Bookmark $bookmark, Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, array $sessionData) { $listIdentifier = $configurationBuilder->getListIdentifier(); $bookmarkContentArray = array(); if (array_key_exists($listIdentifier, $sessionData)) { if (array_key_exists('headerColumns', $sessionData[$listIdentifier])) { $bookmarkContentArray[$listIdentifier]['headerColumns'] = $sessionData[$listIdentifier]['headerColumns']; } if (array_key_exists('filters', $sessionData[$listIdentifier])) { $bookmarkContentArray[$listIdentifier]['filters'] = $sessionData[$listIdentifier]['filters']; } } $bookmark->setContent(serialize($bookmarkContentArray)); }
/** * Factory method for creating filterbox collection for a given configuration builder * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param boolean $resetFilterBoxCollection * @return Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection */ public function createInstance(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, $resetFilterBoxCollection) { if ($this->instances[$configurationBuilder->getListIdentifier()] === null || $resetFilterBoxCollection === true) { $filterboxConfigCollection = $configurationBuilder->buildFilterConfiguration(); $filterboxCollection = $this->objectManager->get('Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection', $configurationBuilder); /* @var $filterboxCollection Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection */ foreach ($filterboxConfigCollection as $filterboxConfiguration) { /* @var $filterboxConfiguration Tx_PtExtlist_Domain_Configuration_Filters_FilterboxConfig */ $filterbox = $this->filterboxFactory->createInstance($filterboxConfiguration); $filterboxCollection->addFilterBox($filterbox, $filterbox->getfilterboxIdentifier()); } $this->instances[$configurationBuilder->getListIdentifier()] = $filterboxCollection; } return $this->instances[$configurationBuilder->getListIdentifier()]; }
/** * Constructor for configuration object * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param array $settings */ public function __construct(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, array $settings = array()) { $this->listIdentifier = $configurationBuilder->getListIdentifier(); parent::__construct($configurationBuilder, $settings); }
public function testGetListIdentifier() { $configurationBuilder = new Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder($this->settings, 'test'); $this->assertEquals($configurationBuilder->getListIdentifier(), $this->settings['listIdentifier']); }
/** * Returns data backend instance for given configuration builder * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @return \Tx_PtExtlist_Domain_DataBackend_AbstractDataBackend */ public function getDataBackendInstanceByConfigurationBuilder(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $listIdentifier = $configurationBuilder->getListIdentifier(); return $this->getDataBackendInstanceByListIdentifier($listIdentifier); }
/** * Returns list identifier of the list to which this backend belongs to * * @return String */ public function getListIdentifier() { return $this->configurationBuilder->getListIdentifier(); }
/** * (non-PHPdoc) * * @see Tx_PtExtbase_State_IdentifiableInterface::getObjectNamespace() */ public function getObjectNamespace() { return $this->configurationBuilder->getListIdentifier() . '.pagerCollection'; }
/** * @see Tx_PtExtbase_State_IdentifiableInterface */ public function getObjectNamespace() { return $this->configurationBuilder->getListIdentifier() . '.' . 'breadcrumbs'; }
/** * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param string $filterboxIdentifier * @param array $filterBoxSettings */ public function __construct(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, $filterboxIdentifier, $filterBoxSettings) { Tx_PtExtbase_Assertions_Assert::isNotEmptyString($filterboxIdentifier, array('message' => 'FilterboxIdentifier must not be empty! 1277889451')); $this->configurationBuilder = $configurationBuilder; $this->listIdentifier = $configurationBuilder->getListIdentifier(); $this->filterboxIdentifier = $filterboxIdentifier; $this->setOptionalSettings($filterBoxSettings); }
/** * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder */ public function __construct(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $this->listIdentifier = $configurationBuilder->getListIdentifier(); }
/** * Sets a given configuration builder as instance. Overwrites already set instance. * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder */ public function set(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder) { $this->instances[$configurationBuilder->getListIdentifier()] = $configurationBuilder; }