/** * @param Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $headerColumn * @return string */ public function renderColumnLabel(Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $headerColumn) { $label = $headerColumn->getLabel(); $label = Tx_PtExtlist_Utility_RenderValue::stdWrapIfPlainArray($label); if (\TYPO3\CMS\Core\Utility\GeneralUtility::isFirstPartOfStr($label, 'LLL:')) { $label = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($label, ''); } return $label; }
/** * build an instance of a header column by columnConfiguration * * @param Tx_PtExtlist_Domain_Configuration_Columns_ColumnConfig $columnConfiguration * @return Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn */ public function createInstance(Tx_PtExtlist_Domain_Configuration_Columns_ColumnConfig $columnConfiguration) { $headerColumn = new Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn(); $headerColumn->injectColumnConfig($columnConfiguration); $this->sessionPersistenceManagerBuilder->getInstance()->registerObjectAndLoadFromSession($headerColumn); $this->getPostVarsAdapterFactory->getInstance()->injectParametersInObject($headerColumn); // Register headerColumn in sorter // TODO we cannot use DI here since this would lead to cyclic dependencies $sorterFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Model_Sorting_SorterFactory'); /* @var $sorterFactory Tx_PtExtlist_Domain_Model_Sorting_SorterFactory */ $sorter = $sorterFactory->getInstance($columnConfiguration->getConfigurationBuilder()); $sorter->registerSortingObserver($headerColumn); $headerColumn->init(); return $headerColumn; }
/** * Returns an array of sorting field parameters for given header. * * Each header can have multiple sorting fields attached, each one * can be sorted individually. * * @param Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header * @return array */ protected function buildSortingFieldParams(Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header) { $sortingFieldsParams = array(); foreach ($header->getColumnConfig()->getSortingConfig() as $sortingFieldConfig) { /* @var $sortingFieldConfig Tx_PtExtlist_Domain_Configuration_Columns_SortingConfig */ $sortingFieldParams = array(); $sortingFieldParams['field'] = $sortingFieldConfig->getField(); $sortingFieldParams['label'] = $sortingFieldConfig->getLabel(); $sortingFieldParams['forceDirection'] = $sortingFieldConfig->getForceDirection(); $sortingFieldParams['direction'] = $sortingFieldConfig->getDirection(); $sortingFieldParams['sortingFieldParameterAsc'] = $sortingFieldConfig->getField() . ':1'; $sortingFieldParams['sortingFieldParameterDesc'] = $sortingFieldConfig->getField() . ':-1'; $sortingFieldParams['sortingFieldParameterNone'] = $sortingFieldConfig->getField() . ':0'; $sortingFieldParams['currentDirection'] = $header->getSortingDirectionForField($sortingFieldConfig->getField()); $sortingFieldsParams[] = $sortingFieldParams; } return $sortingFieldsParams; }
/** * Returns sorting state for header * * We loop over each sorting field of header and take first sorting field * that has no forced direction and has a current sorting set in header. * * @param Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header * @return integer Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_NONE | Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_ASC | Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_DESC */ protected function getSortingDirectionForHeader(Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header) { $sortingFieldConfigForHeader = $header->getColumnConfig()->getSortingConfig(); foreach ($sortingFieldConfigForHeader as $sortingFieldConfig) { /* @var $sortingFieldConfig Tx_PtExtlist_Domain_Configuration_Columns_SortingConfig */ if (!$sortingFieldConfig->getForceDirection() && $header->getSortingDirectionForField($sortingFieldConfig->getField()) != Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_NONE) { return $header->getSortingDirectionForField($sortingFieldConfig->getField()); } } return Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_NONE; }
/** * @test */ public function initByTsConfigSetsVisibilityFalse() { $columnsConfiguration = $this->configurationBuilderMock->buildColumnsConfiguration(); $headerColumn = new Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn(); $headerColumn->injectColumnConfig($columnsConfiguration[20]); $headerColumn->init(); $this->assertFalse($headerColumn->getIsVisible()); }