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