protected function renderUsedFacets() { $template = clone $this->parentPlugin->getTemplate(); $template->workOnSubpart('used_facets'); $query = $this->search->getQuery(); $query->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId()); $resultParameters = t3lib_div::_GET('tx_solr'); $filterParameters = array(); if (isset($resultParameters['filter'])) { $filterParameters = (array) array_map('urldecode', $resultParameters['filter']); } $facetsInUse = array(); foreach ($filterParameters as $filter) { list($filterName, $filterValue) = explode(':', $filter); $facetConfiguration = $this->configuration['search.']['faceting.']['facets.'][$filterName . '.']; // don't render facets that should not be included in used facets if (isset($facetConfiguration['includeInUsedFacets']) && $facetConfiguration['includeInUsedFacets'] == '0') { continue; } $usedFacetRenderer = t3lib_div::makeInstance('tx_solr_facet_UsedFacetRenderer', $filterName, $filterValue, $filter, $facetConfiguration, $this->parentPlugin->getTemplate(), $query); $facetToRemove = $usedFacetRenderer->render(); $facetsInUse[] = $facetToRemove; } $template->addLoop('facets_in_use', 'remove_facet', $facetsInUse); $template->addVariable('remove_all_facets', array('url' => $query->getQueryUrl(array('filter' => array())), 'text' => '###LLL:faceting_removeAllFilters###')); $content = ''; if (count($facetsInUse)) { $content = $template->render(); } return $content; }
protected function getSortingLinks() { $configuredSortingFields = $this->configuration['search.']['sorting.']['fields.']; $query = $this->search->getQuery(); $query->setLinkTargetPageId($this->parentPlugin->getLinkTargetPageId()); $sortingFields = array(); $urlParameters = t3lib_div::_GP('tx_solr'); $urlSortingParameter = $urlParameters['sort']; list($currentSortByField, $currentSortDirection) = explode(' ', $urlSortingParameter); foreach ($configuredSortingFields as $fieldName => $enabled) { if (substr($fieldName, -1) != '.' && $enabled) { $sortDirection = $this->configuration['search.']['sorting.']['defaultOrder']; $sortIndicator = $sortDirection; $sortParameter = $fieldName . ' ' . $sortDirection; // toggle sorting direction for the current sorting field if ($currentSortByField == $fieldName) { switch ($currentSortDirection) { case 'asc': $sortDirection = 'desc'; $sortIndicator = 'asc'; break; case 'desc': $sortDirection = 'asc'; $sortIndicator = 'desc'; break; } $sortParameter = $fieldName . ' ' . $sortDirection; } $temp = array('link' => $query->getQueryLink('###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', array('sort' => $sortParameter)), 'url' => $query->getQueryUrl(array('sort' => $sortParameter)), 'field' => $fieldName, 'label' => '###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', 'is_current' => $currentSortByField == $fieldName ? '1' : '0', 'direction' => $sortDirection, 'indicator' => $sortIndicator, 'current_direction' => ' '); // set sort indicator for the current sorting field if ($currentSortByField == $fieldName) { $temp['selected'] = 'selected="selected"'; $temp['current'] = 'current'; $temp['current_direction'] = $sortIndicator; } // special case relevancy: just reset the search to normal behavior if ($fieldName == 'relevancy') { $temp['link'] = $query->getQueryLink('###LLL:' . $configuredSortingFields[$fieldName . '.']['label'] . '###', array('sort' => NULL)); unset($temp['direction'], $temp['indicator']); } $sortingFields[] = $temp; } } return $sortingFields; }