/** * Bindet einen Buchstaben-Browser ein * * @param tx_rnbase_configurations $configurations * @param string $confid * @param ArrayObject $viewData * @param array $fields * @param array $options * @param array $cfg You have to set 'colname'. The database column used for character browsing. */ public static function handleCharBrowser(&$configurations, $confid, &$viewData, &$fields, &$options, $cfg = array()) { if ($configurations->get($confid)) { $colName = $cfg['colname']; if (!$colName) { throw new Exception('No column name for charbrowser defined'); } $pagerData = self::findPagerData($fields, $options, $cfg); $firstChar = $configurations->getParameters()->offsetGet($pagerData['pointername']); $firstChar = strlen(trim($firstChar)) > 0 ? substr($firstChar, 0, $firstChar[0] == '0' ? 3 : 1) : $pagerData['default']; // Existiert der Point in den aktuellen Daten $firstChar = array_key_exists($firstChar, $pagerData['list']) ? $firstChar : $pagerData['default']; $viewData->offsetSet('pagerData', $pagerData); $viewData->offsetSet('charpointer', $firstChar); } $filter = $viewData->offsetGet('filter'); // Der CharBrowser beachten wir nur, wenn keine Suche aktiv ist // TODO: Der Filter sollte eine Methode haben, die sagt, ob ein Formular aktiv ist if ($firstChar != '' && !$filter->isSpecialSearch()) { $specials = tx_rnbase_util_SearchBase::getSpecialChars(); $firsts = $specials[$firstChar]; if ($firsts) { $firsts = implode('\',\'', $firsts); } else { $firsts = $firstChar; } if ($fields[SEARCH_FIELD_CUSTOM]) { $fields[SEARCH_FIELD_CUSTOM] .= ' AND '; } $fields[SEARCH_FIELD_CUSTOM] .= 'LEFT(UCASE(' . $colName . "),1) IN ('{$firsts}') "; } }