/** * Render a sorting link for a particular column. If the collumn is * currently selected, which we can detect using a SelectSort helper, we use the * carets provided in Bootstrap to indicate in which direction it is sorted. * * @param string $content * @param string $fieldId * @param string $direction * @param SelectSort $sorter * @return string */ protected function renderSortLink($content, $fieldId, $direction, SelectSort $sorter = null) { $request = $this->view->getRequest(); $caret = ''; if ($sorter && $sorter->isSorted() && $sorter->getSortedField()->getQueryStringId() === $fieldId || $fieldId === $request->getQuery('sort')) { if ($sorter) { $activeDir = strtolower($sorter->getSortedDirection()); } else { $activeDir = 'asc' === $request->getQuery('dir') ? 'asc' : 'desc'; } if ('asc' === $activeDir) { $caret = ' <span class="caret caret-up"></span>'; } else { $caret = '<span class="caret"></span>'; } } return sprintf('<a href="%s">%s%s</a>', $this->view->escapeHtmlAttr($this->url($fieldId, $direction)), $this->view->escapeHtml($content), $caret); }
protected function getActiveSortDirection($fieldId, SelectSort $sorter = null) { if (!$sorter) { return 'asc' === $this->view->getRequest()->getQuery('dir') ? 'asc' : 'desc'; } else { if ($sorter->isSorted() && $sorter->getSortedField()->getQueryStringId() === $fieldId) { return strtolower($sorter->getSortedDirection()); } } return 'asc'; }