/**
  * 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}') ";
     }
 }