Ejemplo n.º 1
0
 public function main()
 {
     $out = '';
     $conf = $this->getModule()->getConfigurations();
     $file = t3lib_div::getFileAbsFileName($conf->get($this->getConfId() . 'template'));
     $templateCode = t3lib_div::getURL($file);
     if (!$templateCode) {
         return $conf->getLL('msg_template_not_found') . '<br />File: \'' . $file . '\'<br />ConfId: \'' . $this->getConfId() . 'template\'';
     }
     $subpart = '###' . strtoupper($this->getFuncId()) . '###';
     $template = tx_rnbase_util_Templates::getSubpart($templateCode, $subpart);
     if (!$template) {
         return $conf->getLL('msg_subpart_not_found') . ': ' . $subpart;
     }
     $start = microtime(TRUE);
     $memStart = memory_get_usage();
     $out .= $this->getContent($template, $conf, $conf->getFormatter(), $this->getModule()->getFormTool());
     if (tx_rnbase_util_BaseMarker::containsMarker($out, 'MOD_')) {
         $markerArr = array();
         $memEnd = memory_get_usage();
         $markerArr['###MOD_PARSETIME###'] = microtime(TRUE) - $start;
         $markerArr['###MOD_MEMUSED###'] = $memEnd - $memStart;
         $markerArr['###MOD_MEMSTART###'] = $memStart;
         $markerArr['###MOD_MEMEND###'] = $memEnd;
         $out = tx_rnbase_util_Templates::substituteMarkerArrayCached($out, $markerArr);
     }
     return $out;
 }
    function test_containsMarker()
    {
        $template = '
<html>
Das Spielergebnis:
###MATCH_HOME_NAME### - ###MATCH_GUEST_NAME###
###MATCH_GOALS_HOME_2### : ###MATCH_GOALS_GUEST_2###
</html>
';
        $this->assertTrue(tx_rnbase_util_BaseMarker::containsMarker($template, 'MATCH'), 'Marker MATCH nicht gefunden');
        $this->assertTrue(tx_rnbase_util_BaseMarker::containsMarker($template, 'MATCH_HOME'), 'Marker MATCH_HOME nicht gefunden');
        $this->assertFalse(tx_rnbase_util_BaseMarker::containsMarker($template, 'MATCH_ERR'), 'Marker MATCH_ERR wurde gefunden');
    }
 /**
  * Liefert das passende Template für die aktuelle Seite
  */
 protected function getPageString($currentPage, $pointer, $pageId, &$templates, &$formatter, $pbConfId, $pbMarker)
 {
     $rec = array();
     $rec['number'] = $currentPage + 1;
     $pageTemplate = $templates[$pageId];
     $pageConfId = $pbConfId . 'page.' . $pageId . '.';
     $pageMarker = $pbMarker . '_' . strtoupper($pageId) . '_PAGE_';
     $pageMarkerArray = $formatter->getItemMarkerArrayWrapped($rec, $pageConfId, 0, $pageMarker);
     $pageSubpartArray = array();
     if ($this->link) {
         $this->link->parameters(array($this->pageBrowser->getParamName('pointer') => $currentPage));
         $pageWrappedSubpartArray['###' . $pageMarker . 'LINK###'] = explode($this->token, $this->link->makeTag());
         $pageMarkerArray['###' . $pageMarker . 'LINKURL###'] = $this->link->makeUrl();
     } else {
         $pageWrappedSubpartArray['###' . $pageMarker . 'LINK###'] = $noLink;
         $pageMarkerArray['###' . $pageMarker . 'LINKURL###'] = '';
     }
     $out = tx_rnbase_util_BaseMarker::substituteMarkerArrayCached($pageTemplate, $pageMarkerArray, $pageSubpartArray, $pageWrappedSubpartArray);
     return $out;
 }
 /**
  * Typoscript USER function for rendering DAM images.
  * This is a minimal Setup:
  * <pre>
  * yourObject.imagecol = USER
  * yourObject.imagecol {
  *   userFunc=tx_rnbase_util_TSDAM->printImages
  *   refField=imagecol
  *   refTable=tx_yourextkey_tablename
  *   template = EXT:rn_base/res/simplegallery.html
  *   # media is the dam record
  *   media {
  *     # field file contains the complete image path
  *     file = IMAGE
  *     file.file.import.field = file
  *   }
  *   # Optional setting for limit
  *   # limit = 1
  * }
  * </pre>
  * There are three additional fields in media record: file, file1 and thumbnail containing the complete
  * image path.
  * The output is rendered via HTML template with ListBuilder. Have a look at EXT:rn_base/res/simplegallery.html
  * Possible Typoscript options:
  * refField: DAM reference field of the media records (defined in TCA and used to locate the record in MM-Table)
  * refTable: should be the tablename where the DAM record is referenced to
  * template: Full path to HTML template file.
  * media: Formatting options of the DAM record. Have a look at tx_dam to find all column names
  * limit: Limits the number of medias
  * offset: Start media output with an offset
  * forcedIdField: force another refernce column (other than UID or _LOCALIZED_UID)
  *
  *
  * @param string $content
  * @param array $tsConf
  * @return string
  */
 function printImages($content, $tsConf)
 {
     if (!tx_rnbase_util_Extensions::isLoaded('dam')) {
         return '';
     }
     $conf = $this->createConf($tsConf);
     $file = $conf->get('template');
     $file = $file ? $file : 'EXT:rn_base/res/simplegallery.html';
     $subpartName = $conf->get('subpartName');
     $subpartName = $subpartName ? $subpartName : '###DAM_IMAGES###';
     $templateCode = tx_rnbase_util_Templates::getSubpartFromFile($file, $subpartName);
     if (!$templateCode) {
         return '<!-- NO TEMPLATE OR SUBPART ' . $subpartName . ' FOUND -->';
     }
     // Is there a customized language field configured
     $langField = DEFAULT_LOCAL_FIELD;
     $locUid = $conf->getCObj()->data[$langField];
     // Save original uid
     if ($conf->get('forcedIdField')) {
         $langField = $conf->get('forcedIdField');
         // Copy localized UID
         $conf->getCObj()->data[DEFAULT_LOCAL_FIELD] = $conf->getCObj()->data[$langField];
     }
     // Check if there is a valid uid given.
     $parentUid = intval($conf->getCObj()->data[DEFAULT_LOCAL_FIELD] ? $conf->getCObj()->data[DEFAULT_LOCAL_FIELD] : $conf->getCObj()->data['uid']);
     if (!$parentUid) {
         return '<!-- Invalid data record given -->';
     }
     $damPics = $this->fetchFileList($tsConf, $conf->getCObj());
     $conf->getCObj()->data[DEFAULT_LOCAL_FIELD] = $locUid;
     // Reset UID
     $offset = intval($conf->get('offset'));
     $limit = intval($conf->get('limit'));
     if (!$limit && $offset && count($damPics)) {
         $damPics = array_slice($damPics, $offset);
     } elseif ($limit && count($damPics)) {
         $damPics = array_slice($damPics, $offset, $limit);
     }
     $damDb = tx_rnbase::makeInstance('tx_dam_db');
     $medias = array();
     while (list($uid, $baseRecord) = each($damPics)) {
         $mediaObj = tx_rnbase::makeInstance('tx_rnbase_model_media', $baseRecord['uid']);
         // Localize data (DAM 1.1.0)
         if (method_exists($damDb, 'getRecordOverlay')) {
             $loc = $damDb->getRecordOverlay('tx_dam', $mediaObj->getRecord(), array('sys_language_uid' => $GLOBALS['TSFE']->sys_language_uid));
             if ($loc) {
                 $mediaObj->setProperty($loc);
             }
         }
         $mediaObj->setParentuid($parentUid);
         $medias[] = $mediaObj;
     }
     $listBuilder = tx_rnbase::makeInstance('tx_rnbase_util_ListBuilder');
     $out = $listBuilder->render($medias, FALSE, $templateCode, 'tx_rnbase_util_MediaMarker', 'media.', 'MEDIA', $conf->getFormatter());
     // Now set the identifier
     $markerArray['###MEDIA_PARENTUID###'] = $parentUid;
     $out = tx_rnbase_util_BaseMarker::substituteMarkerArrayCached($out, $markerArray);
     return $out;
 }
 /**
  * Prints out the module HTML
  *
  * @return	void
  */
 function printContent()
 {
     $this->content .= $this->getDoc()->endPage();
     $params = $markerArray = $subpartArray = $wrappedSubpartArray = array();
     tx_rnbase::load('tx_rnbase_util_BaseMarker');
     tx_rnbase::load('tx_rnbase_util_Templates');
     tx_rnbase_util_BaseMarker::callModules($this->content, $markerArray, $subpartArray, $wrappedSubpartArray, $params, $this->getConfigurations()->getFormatter());
     $content = tx_rnbase_util_Templates::substituteMarkerArrayCached($this->content, $markerArray, $subpartArray, $wrappedSubpartArray);
     echo $content;
 }
 /**
  * Returns a token string.
  * @return string
  */
 protected static function getToken()
 {
     if (!self::$token) {
         self::$token = md5(microtime());
     }
     return self::$token;
 }
 /**
  * @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);
     }
 }
 /**
  * Typoscript USER function for rendering DAM images.
  * This is a minimal Setup:
  * <pre>
  * yourObject.imagecol = USER
  * yourObject.imagecol {
  *   userFunc=tx_rnbase_util_TSFAL->printImages
  *   includeLibs = EXT:rn_base/util/class.tx_rnbase_util_TSFAL.php
  *   refField=imagecol
  *   refTable=tx_yourextkey_tablename
  *   template = EXT:rn_base/res/simplegallery.html
  *   # media is the fal reference record
  *   media {
  *     # field file contains the complete image path
  *     file = IMAGE
  *     file.file.import.field = file
  *   }
  *   # Optional setting for limit
  *   # limit = 1
  * }
  * </pre>
  * There are three additional fields in media record: file, file1 and thumbnail containing the complete
  * image path.
  * The output is rendered via HTML template with ListBuilder. Have a look at EXT:rn_base/res/simplegallery.html
  * Possible Typoscript options:
  * refField: DAM reference field of the media records (defined in TCA and used to locate the record in MM-Table)
  * refTable: should be the tablename where the DAM record is referenced to
  * template: Full path to HTML template file.
  * media: Formatting options of the DAM record. Have a look at tx_dam to find all column names
  * limit: Limits the number of medias
  * offset: Start media output with an offset
  * forcedIdField: force another reference column (other than UID or _LOCALIZED_UID)
  *
  *
  * @param string $content
  * @param array $tsConf
  * @return string
  */
 public function printImages($content, $tsConf)
 {
     tx_rnbase::load('tx_rnbase_util_Templates');
     $conf = $this->createConf($tsConf);
     $file = $conf->get('template');
     $file = $file ? $file : 'EXT:rn_base/res/simplegallery.html';
     $subpartName = $conf->get('subpartName');
     $subpartName = $subpartName ? $subpartName : '###DAM_IMAGES###';
     $templateCode = tx_rnbase_util_Templates::getSubpartFromFile($file, $subpartName);
     if (!$templateCode) {
         return '<!-- NO TEMPLATE OR SUBPART ' . $subpartName . ' FOUND -->';
     }
     // Is there a customized language field configured
     $langField = DEFAULT_LOCAL_FIELD;
     $locUid = $conf->getCObj()->data[$langField];
     // Save original uid
     if ($conf->get('forcedIdField')) {
         $langField = $conf->get('forcedIdField');
         // Copy localized UID
         $conf->getCObj()->data[DEFAULT_LOCAL_FIELD] = $conf->getCObj()->data[$langField];
     }
     // Check if there is a valid uid given.
     $parentUid = intval($conf->getCObj()->data[DEFAULT_LOCAL_FIELD] ? $conf->getCObj()->data[DEFAULT_LOCAL_FIELD] : $conf->getCObj()->data['uid']);
     if (!$parentUid) {
         return '<!-- Invalid data record given -->';
     }
     $medias = self::fetchFilesByTS($conf, $conf->getCObj());
     $listBuilder = tx_rnbase::makeInstance('tx_rnbase_util_ListBuilder');
     $out = $listBuilder->render($medias, FALSE, $templateCode, 'tx_rnbase_util_MediaMarker', 'media.', 'MEDIA', $conf->getFormatter());
     // Now set the identifier
     $markerArray = array('###MEDIA_PARENTUID###' => $parentUid);
     $out = tx_rnbase_util_BaseMarker::substituteMarkerArrayCached($out, $markerArray);
     return $out;
 }
 protected function getOuterMarker($marker, $template)
 {
     $outerMarker = $marker;
     $len = strlen($marker) - 1;
     if ($marker[$len] == 'Y' && !tx_rnbase_util_BaseMarker::containsMarker($template, $marker . 'S###')) {
         $outerMarker = substr($marker, 0, $len) . 'IE';
     }
     return $outerMarker;
 }
 /**
  * Erzeugt Marker für das Module Template,
  * um die Ausgabe der Export funktionen zu implementieren.
  * Folgende Marker werden erzeugt:
  * ###EXPORT_BUTTONS###
  */
 public function parseTemplate($template)
 {
     tx_rnbase::load('tx_rnbase_util_BaseMarker');
     if (!tx_rnbase_util_BaseMarker::containsMarker($template, 'EXPORT_BUTTONS')) {
         return $template;
     }
     $configuration = $this->getConfigurations();
     $confId = $this->getConfId() . 'types.';
     $buttons = '';
     foreach ($this->getExportTypes() as $type) {
         $buttons .= $this->renderButton($type);
     }
     if (!empty($buttons)) {
         $buttons = $this->getButtonStyles() . $buttons;
     }
     $markerArray = array();
     $markerArray['###EXPORT_BUTTONS###'] = $buttons;
     $out = tx_rnbase_util_Templates::substituteMarkerArrayCached($template, $markerArray);
     return $out;
 }
 /**
  * render plugin data and additional flexdata
  *
  * @param string $templateCode
  * @param tx_rnbase_configurations $configurations
  * @return string
  */
 protected function renderPluginData($templateCode, tx_rnbase_configurations $configurations)
 {
     // render only, if there is an controller
     if (!$this->getController()) {
         return $templateCode;
     }
     // check, if there are plugin markers to render
     if (!tx_rnbase_util_BaseMarker::containsMarker($templateCode, 'PLUGIN_')) {
         return $templateCode;
     }
     $confId = $this->getController()->getConfId();
     $markerArray = array();
     // build the data to render
     $pluginData = array_merge((array) $configurations->getCObj()->data, $configurations->getExploded($confId . 'plugin.flexdata.'));
     // check for unused columns
     $ignoreColumns = tx_rnbase_util_BaseMarker::findUnusedCols($pluginData, $templateCode, 'PLUGIN');
     // create the marker array with the parsed columns
     $markerArray = $configurations->getFormatter()->getItemMarkerArrayWrapped($pluginData, $confId . 'plugin.', $ignoreColumns, 'PLUGIN_');
     return tx_rnbase_util_BaseMarker::substituteMarkerArrayCached($templateCode, $markerArray);
 }