/** * Test if default file format works * * @test * @return void */ public function viewHelperReturnsCorrectJs() { $newsItem = new Tx_News_Domain_Model_News(); $newsItem->setTitle('fobar'); $language = 'en'; $viewHelper = new Tx_News_ViewHelpers_Social_DisqusViewHelper(); $settingsService = $this->getAccessibleMock('Tx_News_Service_SettingsService'); $settingsService->expects($this->any())->method('getSettings')->will($this->returnValue(array('disqusLocale' => $language))); $viewHelper->injectSettingsService($settingsService); $actualResult = $viewHelper->render($newsItem, 'abcdef', 'http://typo3.org/dummy/fobar.html'); $expectedCode = '<script type="text/javascript"> var disqus_shortname = ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue('abcdef', TRUE) . '; var disqus_identifier = ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue('news_' . $newUid, TRUE) . '; var disqus_url = ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue('http://typo3.org/dummy/fobar.html') . '; var disqus_title = ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue('fobar', TRUE) . '; var disqus_config = function () { this.language = ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($language) . '; }; (function() { var dsq = document.createElement("script"); dsq.type = "text/javascript"; dsq.async = true; dsq.src = "http://" + disqus_shortname + ".disqus.com/embed.js"; (document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]).appendChild(dsq); })(); </script>'; $this->assertEquals($expectedCode, $actualResult); }
/** * Test if default file format works * * @test * @return void */ public function viewHelperReturnsCorrectJavaScriptLink() { $viewHelper = new Tx_News_ViewHelpers_Be_MultiEditLinkViewHelper(); $newsItem1 = new Tx_News_Domain_Model_News(); $newsItem1->setTitle('Item 1'); $newsItem1->_setProperty('uid', 3); $newsItem2 = new Tx_News_Domain_Model_News(); $newsItem2->setTitle('Item 2'); $newsItem2->_setProperty('uid', 9); $newsItems = array($newsItem1, $newsItem2); $columns = 'title,description'; $actualResult = $viewHelper->render($newsItems, $columns); $content = 'window.location.href=\'alt_doc.php?returnUrl=\'+T3_THIS_LOCATION+\'&edit[tx_news_domain_model_news][' . '3,9' . ']=edit&columnsOnly=title,description&disHelp=1\';return false;'; $this->assertEquals($content, $actualResult); }
/** * Test if relatedFrom can be set * * @test * @return void */ public function relatedFromCanBeSet() { $news = new Tx_News_Domain_Model_News(); $news->setTitle('fo'); $related = new Tx_Extbase_Persistence_ObjectStorage(); $related->attach($news); $this->newsDomainModelInstance->setRelatedFrom($related); $this->assertEquals($related, $this->newsDomainModelInstance->getRelatedFrom()); }
/** * @param Tx_News_Domain_Model_News $news * @param array $importItem * @param array $importItemOverwrite * @return Tx_News_Domain_Model_News */ protected function hydrateNewsRecord(Tx_News_Domain_Model_News $news, array $importItem, array $importItemOverwrite) { if (!empty($importItemOverwrite)) { $importItem = array_merge($importItem, $importItemOverwrite); } $news->setPid($importItem['pid']); $news->setHidden($importItem['hidden']); $news->setStarttime($importItem['starttime']); $news->setEndtime($importItem['endtime']); $news->setFeGroup($importItem['fe_group']); $news->setTstamp($importItem['tstamp']); $news->setCrdate($importItem['crdate']); $news->setTitle($importItem['title']); $news->setTeaser($importItem['teaser']); $news->setBodytext($importItem['bodytext']); $news->setType($importItem['type']); $news->setKeywords($importItem['keywords']); $news->setDatetime(new DateTime(date('Y-m-d H:i:sP', $importItem['datetime']))); $news->setArchive(new DateTime(date('Y-m-d H:i:sP', $importItem['archive']))); $contentElementUidArray = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode(',', $importItem['content_elements'], TRUE); foreach ($contentElementUidArray as $contentElementUid) { if (is_object($contentElement = $this->ttContentRepository->findByUid($contentElementUid))) { $news->addContentElement($contentElement); } } $news->setInternalurl($importItem['internalurl']); $news->setExternalurl($importItem['externalurl']); $news->setType($importItem['type']); $news->setKeywords($importItem['keywords']); $news->setAuthor($importItem['author']); $news->setAuthorEmail($importItem['author_email']); $news->setImportid($importItem['import_id']); $news->setImportSource($importItem['import_source']); if (is_array($importItem['categories'])) { foreach ($importItem['categories'] as $categoryUid) { if ($this->settings['findCategoriesByImportSource']) { $category = $this->categoryRepository->findOneByImportSourceAndImportId($this->settings['findCategoriesByImportSource'], $categoryUid); } else { $category = $this->categoryRepository->findByUid($categoryUid); } if ($category) { $news->addCategory($category); } } } /** @var $basicFileFunctions \TYPO3\CMS\Core\Utility\File\BasicFileUtility */ $basicFileFunctions = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Utility\\File\\BasicFileUtility'); // media relation if (is_array($importItem['media'])) { foreach ($importItem['media'] as $mediaItem) { // multi media if ($mediaItem['type'] === Tx_News_Domain_Model_Media::MEDIA_TYPE_MULTIMEDIA) { if (($media = $this->getMultiMediaIfAlreadyExists($news, $mediaItem['multimedia'])) === FALSE) { $media = $this->objectManager->get('Tx_News_Domain_Model_Media'); $media->setMultimedia($mediaItem['multimedia']); $news->addMedia($media); } if (isset($mediaItem['caption'])) { $media->setDescription($mediaItem['caption']); } if (isset($mediaItem['copyright'])) { $media->setCopyright($mediaItem['copyright']); } if (isset($mediaItem['showinpreview'])) { $media->setShowinpreview($mediaItem['showinpreview']); } $media->setType($mediaItem['type']); $media->setPid($importItem['pid']); // Images FAL enabled } elseif ($this->emSettings->getUseFal() > 0) { // get fileobject by given identifier (file UID, combined identifier or path/filename) try { $file = $this->getResourceFactory()->retrieveFileOrFolderObject($mediaItem['image']); } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $exception) { $file = FALSE; } // no file found skip processing of this item if ($file === FALSE) { continue; } /** @var $media Tx_News_Domain_Model_FileReference */ if (!($media = $this->getIfFalRelationIfAlreadyExists($news->getFalMedia(), $file))) { // file not inside a storage then search for existing file or copy the one form storage 0 to the import folder if ($file->getStorage()->getUid() === 0) { // search DB for same file based on hash (to prevent duplicates) $existingFile = $this->findFileByHash($file->getSha1()); // no exciting file then copy file to import folder if ($existingFile === NULL) { $file = $this->getResourceStorage()->copyFile($file, $this->getImportFolder()); // temp work around (uid is not correctly set in $file, fixed in https://review.typo3.org/#/c/26520/) $file = $this->getResourceFactory()->getFileObjectByStorageAndIdentifier($this->emSettings->getStorageUidImporter(), $file->getIdentifier()); } else { $file = $existingFile; } } $media = $this->objectManager->get('Tx_News_Domain_Model_FileReference'); $media->setFileUid($file->getUid()); $news->addFalMedia($media); } if ($media) { $media->setTitle($mediaItem['title']); $media->setAlternative($mediaItem['alt']); $media->setDescription($mediaItem['caption']); $media->setShowinpreview($mediaItem['showinpreview']); $media->setPid($importItem['pid']); } } else { if (!($media = $this->getMediaIfAlreadyExists($news, $mediaItem['image']))) { $uniqueName = $basicFileFunctions->getUniqueName($mediaItem['image'], PATH_site . self::UPLOAD_PATH); copy(PATH_site . $mediaItem['image'], $uniqueName); $media = $this->objectManager->get('Tx_News_Domain_Model_Media'); $news->addMedia($media); $media->setImage(basename($uniqueName)); } $media->setTitle($mediaItem['title']); $media->setAlt($mediaItem['alt']); $media->setCaption($mediaItem['caption']); $media->setType($mediaItem['type']); $media->setShowinpreview($mediaItem['showinpreview']); $media->setPid($importItem['pid']); } } } // related files if (is_array($importItem['related_files'])) { // FAL enabled if ($this->emSettings->getUseFal() > 0) { foreach ($importItem['related_files'] as $fileItem) { // get fileObject by given identifier (file UID, combined identifier or path/filename) try { $file = $this->getResourceFactory()->retrieveFileOrFolderObject($fileItem['file']); } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $exception) { $file = FALSE; } // no file found skip processing of this item if ($file === FALSE) { continue; } /** @var $relatedFile Tx_News_Domain_Model_FileReference */ if (!($relatedFile = $this->getIfFalRelationIfAlreadyExists($news->getFalRelatedFiles(), $file))) { // file not inside a storage then search for existing file or copy the one form storage 0 to the import folder if ($file->getStorage()->getUid() === 0) { // search DB for same file based on hash (to prevent duplicates) $existingFile = $this->findFileByHash($file->getSha1()); // no exciting file then copy file to import folder if ($existingFile === NULL) { $file = $this->getResourceStorage()->copyFile($file, $this->getImportFolder()); // temp work around (uid is not correctly set in $file, fixed in https://review.typo3.org/#/c/26520/) $file = $this->getResourceFactory()->getFileObjectByStorageAndIdentifier($this->emSettings->getStorageUidImporter(), $file->getIdentifier()); } else { $file = $existingFile; } } $relatedFile = $this->objectManager->get('Tx_News_Domain_Model_FileReference'); $relatedFile->setFileUid($file->getUid()); $news->addFalRelatedFile($relatedFile); } if ($relatedFile) { $relatedFile->setTitle($fileItem['title']); $relatedFile->setDescription($fileItem['description']); $relatedFile->setPid($importItem['pid']); } } } else { foreach ($importItem['related_files'] as $file) { if (!($relatedFile = $this->getRelatedFileIfAlreadyExists($news, $file['file']))) { $uniqueName = $basicFileFunctions->getUniqueName($file['file'], PATH_site . self::UPLOAD_PATH); copy(PATH_site . $file['file'], $uniqueName); $relatedFile = $this->objectManager->get('Tx_News_Domain_Model_File'); $news->addRelatedFile($relatedFile); $relatedFile->setFile(basename($uniqueName)); } $relatedFile->setTitle($file['title']); $relatedFile->setDescription($file['description']); $relatedFile->setPid($importItem['pid']); } } } if (is_array($importItem['related_links'])) { foreach ($importItem['related_links'] as $link) { /** @var $relatedLink Tx_News_Domain_Model_Link */ if (($relatedLink = $this->getRelatedLinkIfAlreadyExists($news, $link['uri'])) === FALSE) { $relatedLink = $this->objectManager->get('Tx_News_Domain_Model_Link'); $relatedLink->setUri($link['uri']); $news->addRelatedLink($relatedLink); } $relatedLink->setTitle($link['title']); $relatedLink->setDescription($link['description']); $relatedLink->setPid($importItem['pid']); } } return $news; }
/** * @param Tx_News_Domain_Model_News $news * @param array $importItem * @param array $importItemOverwrite * @return Tx_News_Domain_Model_News */ protected function hydrateNewsRecord(Tx_News_Domain_Model_News $news, array $importItem, array $importItemOverwrite) { if (!empty($importItemOverwrite)) { $importItem = array_merge($importItem, $importItemOverwrite); } $news->setPid($importItem['pid']); $news->setHidden($importItem['hidden']); $news->setStarttime($importItem['starttime']); $news->setEndtime($importItem['endtime']); $news->setTitle($importItem['title']); $news->setTeaser($importItem['teaser']); $news->setBodytext($importItem['bodytext']); $news->setType($importItem['type']); $news->setKeywords($importItem['keywords']); $news->setDatetime(new DateTime(date('Y-m-d H:i:sP', $importItem['datetime']))); $news->setArchive(new DateTime(date('Y-m-d H:i:sP', $importItem['archive']))); $contentElementUidArray = Tx_Extbase_Utility_Arrays::trimExplode(',', $importItem['content_elements'], TRUE); foreach ($contentElementUidArray as $contentElementUid) { if (is_object($contentElement = $this->ttContentRepository->findByUid($contentElementUid))) { $news->addContentElement($contentElement); } } $news->setInternalurl($importItem['internalurl']); $news->setExternalurl($importItem['externalurl']); $news->setType($importItem['type']); $news->setKeywords($importItem['keywords']); $news->setAuthor($importItem['author']); $news->setAuthorEmail($importItem['author_email']); $news->setImportid($importItem['import_id']); $news->setImportSource($importItem['import_source']); if (is_array($importItem['categories'])) { foreach ($importItem['categories'] as $categoryUid) { if ($this->settings['findCategoriesByImportSource']) { $category = $this->categoryRepository->findOneByImportSourceAndImportId($this->settings['findCategoriesByImportSource'], $categoryUid); } else { $category = $this->categoryRepository->findByUid($categoryUid); } if ($category) { $news->addCategory($category); } } } /** @var $basicFileFunctions t3lib_basicFileFunctions */ $basicFileFunctions = t3lib_div::makeInstance('t3lib_basicFileFunctions'); // media relation if (is_array($importItem['media'])) { foreach ($importItem['media'] as $mediaItem) { if (!($media = $this->getMediaIfAlreadyExists($news, $mediaItem['image']))) { $uniqueName = $basicFileFunctions->getUniqueName($mediaItem['image'], PATH_site . self::UPLOAD_PATH); copy(PATH_site . $mediaItem['image'], $uniqueName); $media = $this->objectManager->get('Tx_News_Domain_Model_Media'); $news->addMedia($media); $media->setImage(basename($uniqueName)); } $media->setTitle($mediaItem['title']); $media->setAlt($mediaItem['alt']); $media->setCaption($mediaItem['caption']); $media->setType($mediaItem['type']); $media->setShowinpreview($mediaItem['showinpreview']); $media->setPid($importItem['pid']); } } // related files if (is_array($importItem['related_files'])) { foreach ($importItem['related_files'] as $file) { if (!($relatedFile = $this->getRelatedFileIfAlreadyExists($news, $file['file']))) { $uniqueName = $basicFileFunctions->getUniqueName($file['file'], PATH_site . self::UPLOAD_PATH); copy(PATH_site . $file['file'], $uniqueName); $relatedFile = $this->objectManager->get('Tx_News_Domain_Model_File'); $news->addRelatedFile($relatedFile); $relatedFile->setFile(basename($uniqueName)); } $relatedFile->setTitle($file['title']); $relatedFile->setDescription($file['description']); $relatedFile->setPid($importItem['pid']); } } if (is_array($importItem['related_links'])) { foreach ($importItem['related_links'] as $link) { /** @var $relatedLink Tx_News_Domain_Model_Link */ $relatedLink = $this->objectManager->get('Tx_News_Domain_Model_Link'); $relatedLink->setUri($link['uri']); $relatedLink->setTitle($link['title']); $relatedLink->setDescription($link['description']); $relatedLink->setPid($importItem['pid']); $news->addRelatedLink($relatedLink); } } return $news; }
/** * Test if title can be set * * @test * @return void */ public function titleCanBeSet() { $title = 'News title'; $this->newsDomainModelInstance->setTitle($title); $this->assertEquals($title, $this->newsDomainModelInstance->getTitle()); }