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; }
/** * Provides the values for the markers in the simple form template * * @return array an array containing values for markers in the simple form template */ public function execute() { $searchWord = ''; $testSearchWord = t3lib_div::_GPmerged('tx_solr'); if (trim($testSearchWord['q'])) { $searchWord = trim($this->parentPlugin->piVars['q']); $searchWord = t3lib_div::removeXSS($searchWord); $searchWord = htmlentities($searchWord, ENT_QUOTES, $GLOBALS['TSFE']->metaCharset); } $marker = array('action' => $this->cObj->getTypoLink_URL($this->parentPlugin->conf['search.']['targetPage']), 'action_id' => intval($this->parentPlugin->conf['search.']['targetPage']), 'action_language' => intval($GLOBALS['TSFE']->sys_page->sys_language_uid), 'action_language_parameter' => 'L', 'accept-charset' => $GLOBALS['TSFE']->metaCharset, 'q' => $searchWord); // TODO maybe move into a form modifier if ($this->parentPlugin->conf['suggest']) { $this->addSuggestStylesheets(); $this->addSuggestJavascript(); $marker['suggest_url'] = '<script type="text/javascript"> /*<![CDATA[*/ var tx_solr_suggestUrl = \'' . $this->getSuggestUrl() . '\'; /*]]>*/ </script> '; } // hook to modify the search form if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['modifySearchForm'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['modifySearchForm'] as $classReference) { $formModifier = t3lib_div::getUserObj($classReference); if ($formModifier instanceof tx_solr_FormModifier) { $marker = $formModifier->modifyForm($marker, $this->parentPlugin->getTemplate()); } else { throw new InvalidArgumentException('Form modifier "' . $classReference . '" must implement the tx_solr_FormModifier interface.', 1262864703); } } } return $marker; }
protected function getResultsPerPageSwitch() { $template = clone $this->parentPlugin->getTemplate(); $template->workOnSubpart('results_per_page_switch'); $configuration = tx_solr_Util::getSolrConfiguration(); $resultsPerPageSwitchOptions = t3lib_div::intExplode(',', $configuration['search.']['results.']['resultsPerPageSwitchOptions']); $currentNumberOfResultsShown = $this->parentPlugin->getNumberOfResultsPerPage(); $selectOptions = array(); foreach ($resultsPerPageSwitchOptions as $option) { $selected = ''; $selectedClass = ''; if ($option == $currentNumberOfResultsShown) { $selected = ' selected="selected"'; $selectedClass = ' class="currentNumberOfResults"'; } $selectOptions[] = array('value' => $option, 'selected' => $selected, 'selectedClass' => $selectedClass, 'url' => $this->parentPlugin->pi_linkTP_keepPIvars_url(array('resultsPerPage' => $option))); } $template->addLoop('options', 'option', $selectOptions); $form = array('action' => $this->parentPlugin->pi_linkTP_keepPIvars_url()); $template->addVariable('form', $form); return $template->render(); }