/**
  * Do the output rendering.
  *
  * As this is a generic view which can be called by
  * many different actions we need the actionConfId in
  * $viewData in order to read its special configuration,
  * including redirection options etc.
  *
  * @param string $template
  * @param ArrayObject	$viewData
  * @param tx_rnbase_configurations	$configurations
  * @param tx_rnbase_util_FormatUtil	$formatter
  * @return mixed Ready rendered output or HTTP redirect
  */
 public function createOutput($template, &$viewData, &$configurations, &$formatter)
 {
     //View-Daten abholen
     $items = $viewData->offsetGet(self::VIEWDATA_ITEMS);
     $filter = $viewData->offsetGet(self::VIEWDATA_FILTER);
     $markerData = $viewData->offsetGet(self::VIEWDATA_MARKER);
     $confId = $this->getController()->getConfId();
     $markerArray = $formatter->getItemMarkerArrayWrapped($markerData, $confId . 'markers.');
     $subpartArray = array();
     $itemPath = $this->getItemPath($configurations, $confId);
     if ($filter && $filter->hideResult()) {
         $subpartArray['###' . strtoupper($itemPath) . 'S###'] = '';
         $items = array();
         $template = $filter->getMarker()->parseTemplate($template, $formatter, $confId . $itemPath . '.filter.', strtoupper($itemPath));
     } else {
         $markerClass = $this->getMarkerClass($configurations, $confId);
         //Liste generieren
         $listBuilder = tx_rnbase::makeInstance('tx_rnbase_util_ListBuilder');
         $template = $listBuilder->render($items, $viewData, $template, $markerClass, $confId . $itemPath . '.', strtoupper($itemPath), $formatter);
     }
     $template = tx_rnbase_util_Templates::substituteMarkerArrayCached($template, $markerArray, $subpartArray);
     //, $wrappedSubpartArray);
     return $template;
 }
 /**
  * Return label markers defined by Typoscript
  *
  * @param tx_rnbase_util_FormatUtil $formatter
  * @param string $confId
  * @param string $marker
  * @param array $defaultMarkerArr
  * @return array
  */
 public function initTSLabelMarkers(&$formatter, $confId, $marker, $defaultMarkerArr = 0)
 {
     $arr1 = array();
     if ($labels = $formatter->configurations->get($confId . 'labels')) {
         $labels = tx_rnbase_util_Strings::trimExplode(',', $labels);
         $labelArr = array();
         foreach ($labels as $label) {
             // Für die Abfrage nach den Labels dürfen keine Punkte als Trenner verwendet werden
             // Daher Umwandlung in Underscores
             $labelId = str_replace('.', '_', $confId . 'label.' . $label);
             $labelArr['label_' . $label] = $formatter->configurations->getLL($labelId);
         }
         $arr1 = $formatter->getItemMarkerArrayWrapped($labelArr, $confId, 0, $marker . '_');
     }
     $this->defaultMarkerArr = array_merge($arr1, $this->defaultMarkerArr);
     return $this->defaultMarkerArr;
 }
 /**
  * @param string $template HTML template
  * @param array $markerArray
  * @param array $subpartArray
  * @param array $wrappedSubpartArray
  * @param tx_rnbase_util_FormatUtil $formatter
  * @param string $confId
  * @param string $marker
  * 
  * @return void
  */
 private function insertMarkersForSorting($template, &$markerArray, &$subpartArray, &$wrappedSubpartArray, &$formatter, $confId)
 {
     $confId = $this->getConfId() . $this->sortConfId;
     $configurations = $formatter->getConfigurations();
     $sortFields = $this->getAllowedSortFields();
     if (!empty($sortFields)) {
         tx_rnbase::load('tx_rnbase_util_BaseMarker');
         $token = md5(microtime());
         $markOrders = array();
         foreach ($sortFields as $field) {
             $isField = $field == $this->getSortBy();
             // sortOrder ausgeben
             $markOrders[$field . '_order'] = $isField ? $this->getSortOrder() : '';
             $fieldMarker = $this->markerPrefix . '_' . strtoupper($field) . '_LINK';
             $makeLink = tx_rnbase_util_BaseMarker::containsMarker($template, $fieldMarker);
             $makeUrl = tx_rnbase_util_BaseMarker::containsMarker($template, $fieldMarker . 'URL');
             // link generieren
             if ($makeLink || $makeUrl) {
                 // sortierungslinks ausgeben
                 $params = array('sortBy' => $field, 'sortOrder' => $isField && $this->getSortOrder() == 'asc' ? 'desc' : 'asc');
                 $link = $configurations->createLink();
                 $link->label($token);
                 $link->initByTS($configurations, $confId . $this->sortLinkConfId, $params);
                 if ($makeLink) {
                     $wrappedSubpartArray['###' . $fieldMarker . '###'] = explode($token, $link->makeTag());
                 }
                 if ($makeUrl) {
                     $markerArray['###' . $fieldMarker . 'URL###'] = $link->makeUrl(false);
                 }
             }
         }
         // die sortOrders parsen
         $markOrders = $formatter->getItemMarkerArrayWrapped($markOrders, $confId, 0, $this->markerPrefix . '_', array_keys($markOrders));
         $markerArray = array_merge($markerArray, $markOrders);
     }
 }