/** * 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]; }
/** @test */ public function renderCaptionsCreatesSimpleTsLabels() { $this->markTestSkipped('This test is currently not working in T3 6.1.7 - problem arises in AbstractUserAuthentication.php::904'); $ts = array('10' => array('_typoScriptNodeValue' => 'TEXT', 'value' => 'test'), '_typoScriptNodeValue' => 'COA'); $methods = array('getLabel', 'getColumnIdentifier'); $returnMethods['getLabel'] = $ts; $returnMethods['getColumnIdentifier'] = 'bla'; $headerColumn = $this->getConfiguredMock('Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn', $methods, $returnMethods); $columnConfigMock = $this->getAccessibleMock('Tx_PtExtlist_Domain_Configuration_Columns_ColumnConfig', array('isAccessable'), array(), '', FALSE); $columnConfigMock->expects($this->any())->method('isAccessable')->will($this->returnValue(true)); $headerColumn->injectColumnConfig($columnConfigMock); $listHeader = new Tx_PtExtlist_Domain_Model_List_Header_ListHeader($this->configurationBuilderMock->getListIdentifier()); $listHeader->addHeaderColumn($headerColumn, 'bla'); $captionRendererClass = $this->buildAccessibleProxy('Tx_PtExtlist_Domain_Renderer_Default_CaptionRenderer'); $captionRenderer = new $captionRendererClass(); /* @var $captionRenderer Tx_PtExtlist_Domain_Renderer_Default_CaptionRenderer */ $captions = $captionRenderer->renderCaptions($listHeader); }