/** * Render link to news item or internal/external pages * * @param Tx_News_Domain_Model_News $newsItem current news object * @param array $settings * @param boolean $uriOnly return only the url without the a-tag * @param array $configuration optional typolink configuration * @return string link */ public function render(Tx_News_Domain_Model_News $newsItem, array $settings = array(), $uriOnly = FALSE, $configuration = array()) { $tsSettings = $settings; /** @var $cObj tslib_cObj */ $cObj = t3lib_div::makeInstance('tslib_cObj'); $newsType = (int) $newsItem->getType(); switch ($newsType) { // internal news case 1: $configuration['parameter'] = $newsItem->getInternalurl(); break; // external news // external news case 2: $configuration['parameter'] = $newsItem->getExternalurl(); break; // normal news record // normal news record default: $configuration = $this->getLinkToNewsItem($newsItem, $tsSettings); } if (isset($tsSettings['link']['typesOpeningInNewWindow'])) { if (t3lib_div::inList($tsSettings['link']['typesOpeningInNewWindow'], $newsType)) { $this->tag->addAttribute('target', '_blank'); } } $url = $cObj->typoLink_URL($configuration); if ($uriOnly) { return $url; } $this->tag->addAttribute('href', $url); $this->tag->setContent($this->renderChildren()); return $this->tag->render(); }
/** * Render link to news item or internal/external pages * * @param Tx_News_Domain_Model_News $newsItem current news object * @param array $settings * @param boolean $uriOnly return only the url without the a-tag * @param array $configuration optional typolink configuration * @param string $content optional content which is linked * @return string link */ public function render(Tx_News_Domain_Model_News $newsItem, array $settings = array(), $uriOnly = FALSE, $configuration = array(), $content = '') { $tsSettings = $this->pluginSettingsService->getSettings(); $this->init(); $newsType = (int) $newsItem->getType(); switch ($newsType) { // internal news case 1: $configuration['parameter'] = $newsItem->getInternalurl(); break; // external news // external news case 2: $configuration['parameter'] = $newsItem->getExternalurl(); break; // normal news record // normal news record default: $configuration = $this->getLinkToNewsItem($newsItem, $tsSettings, $configuration); } if (isset($tsSettings['link']['typesOpeningInNewWindow'])) { if (\TYPO3\CMS\Core\Utility\GeneralUtility::inList($tsSettings['link']['typesOpeningInNewWindow'], $newsType)) { $this->tag->addAttribute('target', '_blank'); } } $url = $this->cObj->typoLink_URL($configuration); if ($uriOnly) { return $url; } $this->tag->addAttribute('href', $url); if (empty($content)) { $content = $this->renderChildren(); } $this->tag->setContent($content); return $this->tag->render(); }
/** * Test if internalurl can be set * * @test * @return void */ public function internalurlCanBeSet() { $internalurl = 'http://foo.org/'; $this->newsDomainModelInstance->setInternalurl($internalurl); $this->assertEquals($internalurl, $this->newsDomainModelInstance->getInternalurl()); }
/** * Render link to news item or internal/external pages * * @param Tx_News_Domain_Model_News $newsItem current news object * @param array $settings * @param boolean $uriOnly return only the url without the a-tag * @param array $configuration optional typolink configuration * @return string link */ public function render(Tx_News_Domain_Model_News $newsItem, array $settings = array(), $uriOnly = FALSE, $configuration = array()) { $tsSettings = $this->pluginSettingsService->getSettings(); /** @var $cObj tslib_cObj */ $cObj = t3lib_div::makeInstance('tslib_cObj'); $newsType = (int) $newsItem->getType(); switch ($newsType) { // internal news case 1: $configuration['parameter'] = $newsItem->getInternalurl(); break; // external news // external news case 2: $configuration['parameter'] = $newsItem->getExternalurl(); break; // normal news record // normal news record default: $detailPid = 0; $detailPidDeterminationMethods = t3lib_div::trimExplode(',', $settings['detailPidDetermination'], TRUE); // if TS is not set, prefer flexform setting if (!isset($settings['detailPidDetermination'])) { $detailPidDeterminationMethods[] = 'flexform'; } foreach ($detailPidDeterminationMethods as $determinationMethod) { if ($callback = $this->detailPidDeterminationCallbacks[$determinationMethod]) { if ($detailPid = call_user_func(array($this, $callback), $settings, $newsItem)) { break; } } } if (!$detailPid) { $detailPid = $GLOBALS['TSFE']->id; } $configuration['useCacheHash'] = 1; $configuration['parameter'] = $detailPid; $configuration['additionalParams'] .= '&tx_news_pi1[news]=' . $newsItem->getUid(); if ((int) $tsSettings['link']['skipControllerAndAction'] !== 1) { $configuration['additionalParams'] .= '&tx_news_pi1[controller]=News' . '&tx_news_pi1[action]=detail'; } // Add date as human readable (30/04/2011) if ($tsSettings['link']['hrDate'] == 1 || $tsSettings['link']['hrDate']['_typoScriptNodeValue'] == 1) { $dateTime = $newsItem->getDatetime(); if (!empty($tsSettings['link']['hrDate']['day'])) { $configuration['additionalParams'] .= '&tx_news_pi1[day]=' . $dateTime->format($tsSettings['link']['hrDate']['day']); } if (!empty($tsSettings['link']['hrDate']['month'])) { $configuration['additionalParams'] .= '&tx_news_pi1[month]=' . $dateTime->format($tsSettings['link']['hrDate']['month']); } if (!empty($tsSettings['link']['hrDate']['year'])) { $configuration['additionalParams'] .= '&tx_news_pi1[year]=' . $dateTime->format($tsSettings['link']['hrDate']['year']); } } } if (isset($tsSettings['link']['typesOpeningInNewWindow'])) { if (t3lib_div::inList($tsSettings['link']['typesOpeningInNewWindow'], $newsType)) { $this->tag->addAttribute('target', '_blank'); } } $url = $cObj->typoLink_URL($configuration); if ($uriOnly) { return $url; } $this->tag->addAttribute('href', $url); $this->tag->setContent($this->renderChildren()); return $this->tag->render(); }