/** * Renders a link for given header and sortingFields * * @param Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header * @param array $fieldAndDirection List of fields and direction for which we want to generate sorting link {field: fieldName, direction: sortingDirection} * @param string $action Rendered link for sorting action * @param int $pageUid target page. See TypoLink destination * @param int $pageType type of the target page. See typolink.parameter * @param bool $noCache set this to disable caching for the target page. You should not need this. * @param bool $noCacheHash set this to supress the cHash query parameter created by TypoLink. You should not need this. * @param string $section the anchor to be added to the URI * @param string $format The requested format, e.g. ".html * @param bool $linkAccessRestrictedPages If set, links pointing to access restricted pages will still link to the page even though the page cannot be accessed. * @param array $additionalParams additional query parameters that won't be prefixed like $arguments (overrule $arguments) * @param bool $absolute If set, the URI of the rendered link is absolute * @param bool $addQueryString If set, the current query parameters will be kept in the URI * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the URI. Only active if $addQueryString = TRUE * @param string $addQueryStringMethod Set which parameters will be kept. Only active if $addQueryString = TRUE * @return string Rendered link */ public function render(Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header, array $fieldAndDirection, $action = 'sort', $pageUid = null, $pageType = 0, $noCache = false, $noCacheHash = false, $section = '', $format = '', $linkAccessRestrictedPages = false, array $additionalParams = array(), $absolute = false, $addQueryString = false, array $argumentsToBeExcludedFromQueryString = array(), $addQueryStringMethod = null) { $sortingFieldParams = array(); $sortingDirection = Tx_PtExtlist_Domain_QueryObject_Query::invertSortingState($fieldAndDirection['currentDirection']); $sortingFieldParams[] = $fieldAndDirection['field'] . ':' . $sortingDirection; # echo "current direction for field " . $fieldAndDirection['field'] . " = " . $fieldAndDirection['currentDirection'] . " link direction = " . $sortingDirection; $sortingFieldParam = implode(';', $sortingFieldParams); $gpArrayViewHelper = new Tx_PtExtlist_ViewHelpers_Namespace_GPArrayViewHelper(); $argumentArray = $gpArrayViewHelper->buildObjectValueArray($header, 'sortingFields', $sortingFieldParam); $this->sessionPersistenceManagerBuilder->getInstance()->addSessionRelatedArguments($argumentArray); return parent::render($action, $argumentArray, null, null, null, $pageUid, $pageType, $noCache, $noCacheHash, $section, $format, $linkAccessRestrictedPages, $additionalParams, $absolute, $addQueryString, $argumentsToBeExcludedFromQueryString, $addQueryStringMethod); }
/** * render build key/value GET/POST-array within the namespace of the given object * * @param string $arguments : list of arguments * @param Tx_PtExtlist_Domain_StateAdapter_IdentifiableInterface $object * either as list of 'key : value' pairs * or as list of properties wich are then recieved from the object * @param string $nameSpace * @param string $contextIdentifier send a specific contextIdentifier * @return array GPArray of objects namespace */ public function render($arguments, $object = null, $nameSpace = '', $contextIdentifier = '') { $argumentArray = parent::render($arguments, $object, $nameSpace); if ($contextIdentifier) { $argumentArray['contextIdentifier'] = $contextIdentifier; } return $argumentArray; }
/** * Renders a link for given header * * @param Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header * @param string $action Rendered link for sorting action * @param int $pageUid * @param int $pageType * @param bool $noCache * @param bool $noCacheHash * @param string $section * @param string $format * @param bool $linkAccessRestrictedPages * @param array $additionalParams * @param bool $absolute * @param bool $addQueryString * @param array $argumentsToBeExcludedFromQueryString * @param string $addQueryStringMethod Set which parameters will be kept. Only active if $addQueryString = TRUE * @return string */ public function render(Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn $header, $action = 'sort', $pageUid = NULL, $pageType = 0, $noCache = FALSE, $noCacheHash = FALSE, $section = '', $format = '', $linkAccessRestrictedPages = FALSE, array $additionalParams = array(), $absolute = FALSE, $addQueryString = FALSE, array $argumentsToBeExcludedFromQueryString = array(), $addQueryStringMethod = NULL) { $sortingFieldParams = array(); // We generate sorting parameters for every sorting field configured for this column foreach ($header->getColumnConfig()->getSortingConfig() as $sortingFieldConfig) { /* @var $sortingFieldConfig Tx_PtExtlist_Domain_Configuration_Columns_SortingConfig */ $newSortingDirection = $header->getSortingDirectionForField($sortingFieldConfig->getField()) != 0 ? Tx_PtExtlist_Domain_QueryObject_Query::invertSortingState($header->getSortingDirectionForField($sortingFieldConfig->getField())) : $sortingFieldConfig->getDirection(); $sortingFieldParams[] = $sortingFieldConfig->getField() . ':' . $newSortingDirection; } $sortingFieldParam = implode(';', $sortingFieldParams); // We set sortingDirectionParameter for children of this viewHelper $this->templateVariableContainer->add('sortingDirection', $this->getSortingDirectionForHeader($header)); #echo "Sorting field param for " . $header->getColumnConfig()->getColumnIdentifier() . " = " . $sortingFieldParam . "<br>"; #echo "Sorting direction for " . $header->getColumnConfig()->getColumnIdentifier() . " = ". $this->getSortingDirectionForHeader($header) . "<br>"; $gpArrayViewHelper = new Tx_PtExtlist_ViewHelpers_Namespace_GPArrayViewHelper(); $argumentArray = $gpArrayViewHelper->buildObjectValueArray($header, 'sortingFields', $sortingFieldParam); $this->sessionPersistenceManagerBuilder->getInstance()->addSessionRelatedArguments($argumentArray); $output = parent::render($action, $argumentArray, NULL, NULL, NULL, $pageUid, $pageType, $noCache, $noCacheHash, $section, $format, $linkAccessRestrictedPages, $additionalParams, $absolute, $addQueryString, $argumentsToBeExcludedFromQueryString, $addQueryStringMethod); $this->templateVariableContainer->remove('sortingDirection'); return $output; }
public function testRenderWithObjectAndValue() { $sessionPersistenceManagerMock = $this->getMock('Tx_PtExtbase_State_Session_SessionPersistenceManager', array('addSessionRelatedArguments'), array(), '', false); $sessionPersistenceManagerMock->expects($this->any())->method('addSessionRelatedArguments'); $sessionPersistenceManagerBuilderMock = $this->getMock('Tx_PtExtbase_State_Session_SessionPersistenceManagerBuilder', array('getInstance'), array(), '', false); $sessionPersistenceManagerBuilderMock->expects($this->any())->method('getInstance')->will($this->returnValue($sessionPersistenceManagerMock)); /* @var $sessionPersistenceManagerBuilderMock Tx_PtExtbase_State_Session_SessionPersistenceManagerBuilder */ $linkViewHelper = new Tx_PtExtlist_ViewHelpers_Namespace_GPArrayViewHelper(); $linkViewHelper->injectSessionPersistenceManagerBuilder($sessionPersistenceManagerBuilderMock); $object = $this->getMock('Tx_PtExtlist_Domain_Model_List_Header_HeaderColumn', array('getObjectNamespace')); $object->expects($this->once())->method('getObjectNamespace')->will($this->returnValue('listName.objectType.objectName')); $gpArray = $linkViewHelper->render('label:test', $object); $refArray['listName']['objectType']['objectName']['label'] = 'test'; $this->assertEquals($gpArray, $refArray); }