/** @test */ public function initMergesGetPostDataCorrectly() { $columnsConfiguration = $this->configurationBuilderMock->buildColumnsConfiguration(); $sorterMock = $this->getMock('Tx_PtExtlist_Domain_Model_Sorting_Sorter', array('getSortingStateCollection'), array(), '', FALSE); $sorterMock->expects($this->any())->method('getSortingStateCollection')->will($this->returnValue(null)); $headerColumn = new Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn(); $headerColumn->injectColumnConfig($columnsConfiguration[20]); $headerColumn->registerSorter($sorterMock); $this->assertEquals(0, $headerColumn->getSortingDirectionForField('field1')); $headerColumn->_injectGPVars(array('sortingFields' => 'field1:1')); $headerColumn->init(); $this->assertEquals(1, $headerColumn->getSortingDirectionForField('field1')); }
/** * 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; }