示例#1
0
 /**
  * Render all the <th> cells that will be contained in the <thead>.
  *
  * @param Fields $fields
  * @param TableCellHelper $renderer
  * @param SelectSort $sorter
  * @return string
  */
 protected function renderHeadCells(Fields $fields, TableCellHelper $renderer, SelectSort $sorter = null)
 {
     $out = '';
     foreach ($fields as $index => $field) {
         $out .= '<th scope="col">';
         $content = $renderer->getHeaderRenderer()->render($field);
         if (!$field->isSortable() || !$sorter) {
             $out .= $content;
         } else {
             $direction = 'asc';
             if ($sorter && $sorter->getSortedField() === $field && 'ASC' === $sorter->getSortedDirection()) {
                 $direction = 'desc';
             }
             $out .= $this->renderSortLink($content, $field->getQueryStringId(), $direction, $sorter);
         }
         $out .= '</th>';
     }
     return $out;
 }
示例#2
0
 /**
  * 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);
 }
示例#3
0
 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';
 }