/** * 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]; }