/**
  * 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();
     $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);
     $this->tag->setContent($this->renderChildren());
     return $this->tag->render();
 }
Esempio n. 2
0
 /**
  * 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();
 }
 /**
  * Test if type can be set
  *
  * @test
  * @return void
  */
 public function typeCanBeSet()
 {
     $type = 123;
     $this->newsDomainModelInstance->setType($type);
     $this->assertEquals($type, $this->newsDomainModelInstance->getType());
 }
 /**
  * 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();
 }