/**
  * @return string
  */
 public function render()
 {
     if ('BE' === TYPO3_MODE) {
         return;
     }
     $languages = $this->arguments['languages'];
     if (TRUE === $languages instanceof \Traversable) {
         $languages = iterator_to_array($languages);
     } elseif (TRUE === is_string($languages)) {
         $languages = GeneralUtility::trimExplode(',', $languages, TRUE);
     } else {
         $languages = (array) $languages;
     }
     $pageUid = intval($this->arguments['pageUid']);
     $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage'];
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
     $languageUid = 0;
     if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid, $normalWhenNoLanguage)) {
         $languageUid = $currentLanguageUid;
     } elseif (0 !== $currentLanguageUid) {
         if (TRUE === $this->pageSelect->hidePageForLanguageUid($pageUid, 0, $normalWhenNoLanguage)) {
             return;
         }
     }
     if (FALSE === empty($languages[$languageUid])) {
         return $languages[$languageUid];
     }
     return $languageUid;
 }
示例#2
0
 /**
  * @return mixed
  */
 public function render()
 {
     if ('BE' === TYPO3_MODE) {
         return '';
     }
     $pageUid = $this->arguments['pageUid'];
     $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage'];
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
     $languageUid = 0;
     if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid, $normalWhenNoLanguage)) {
         $languageUid = $currentLanguageUid;
     } else {
         if (0 !== $currentLanguageUid) {
             if (TRUE === $this->pageSelect->hidePageForLanguageUid($pageUid, 0, $normalWhenNoLanguage)) {
                 return '';
             }
         }
     }
     $uriBuilder = $this->controllerContext->getUriBuilder();
     $uri = $uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(TRUE)->setArguments(array('L' => $languageUid))->build();
     $this->tag->addAttribute('rel', 'canonical');
     $this->tag->addAttribute('href', $uri);
     $renderedTag = $this->tag->render();
     if (1 === intval($GLOBALS['TSFE']->config['config']['disableAllHeaderCode'])) {
         return $renderedTag;
     }
     $GLOBALS['TSFE']->getPageRenderer()->addMetaTag($renderedTag);
 }
 /**
  * @return mixed
  */
 public function render()
 {
     // Get page via pageUid argument or current id
     $pageUid = intval($this->arguments['pageUid']);
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $page = $this->pageSelect->getPage($pageUid);
     // Add the page overlay
     $languageUid = intval($GLOBALS['TSFE']->sys_language_uid);
     if (0 !== $languageUid) {
         $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $languageUid);
         if (TRUE === is_array($pageOverlay)) {
             $page = GeneralUtility::array_merge_recursive_overrule($page, $pageOverlay, FALSE, FALSE);
         }
     }
     $content = NULL;
     // Check if field should be returned or assigned
     $field = $this->arguments['field'];
     if (TRUE === empty($field)) {
         $content = $page;
     } elseif (TRUE === isset($page[$field])) {
         $content = $page[$field];
     }
     // Return if no assign
     $as = $this->arguments['as'];
     if (TRUE === empty($as)) {
         return $content;
     }
     $variables = array($as => $content);
     $output = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables);
     return $output;
 }
示例#4
0
 /**
  * @return mixed
  */
 public function render()
 {
     // Get page via pageUid argument or current id
     $pageUid = intval($this->arguments['pageUid']);
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $page = $this->pageSelect->getPage($pageUid);
     // Add the page overlay
     $languageUid = intval($GLOBALS['TSFE']->sys_language_uid);
     if (0 !== $languageUid) {
         $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $languageUid);
         if (TRUE === is_array($pageOverlay)) {
             if (TRUE === method_exists('TYPO3\\CMS\\Core\\Utility\\ArrayUtility', 'mergeRecursiveWithOverrule')) {
                 ArrayUtility::mergeRecursiveWithOverrule($page, $pageOverlay, FALSE, FALSE);
             } else {
                 $page = GeneralUtility::array_merge_recursive_overrule($page, $pageOverlay, FALSE, FALSE);
             }
         }
     }
     $content = NULL;
     // Check if field should be returned or assigned
     $field = $this->arguments['field'];
     if (TRUE === empty($field)) {
         $content = $page;
     } elseif (TRUE === isset($page[$field])) {
         $content = $page[$field];
     }
     return $this->renderChildrenWithVariableOrReturnInput($content);
 }
示例#5
0
 /**
  * Get the selected page.
  *
  * @return array
  */
 private function getPage()
 {
     $pageUid = intval($this->arguments['pageUid']);
     if ($pageUid === 0) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     return $this->pageSelect->getPage($pageUid);
 }
示例#6
0
 /**
  * @return mixed
  */
 public function render()
 {
     $pageUid = $this->arguments['pageUid'];
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $rootLineData = $this->pageSelect->getRootLine($pageUid);
     return $this->renderChildrenWithVariableOrReturnInput($rootLineData);
 }
 /**
  * Render method
  *
  * @param integer $pageUid
  * @param boolean $includeHidden
  * @param boolean $showHiddenInMenu
  * @return string
  */
 public function render($pageUid = NULL, $includeHidden = FALSE, $showHiddenInMenu = FALSE)
 {
     if (NULL === $pageUid || TRUE === empty($pageUid) || 0 === intval($pageUid)) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $menu = $this->pageSelect->getMenu($pageUid, array(), '', $showHiddenInMenu);
     $pageHasSubPages = 0 < count($menu);
     if (TRUE === $pageHasSubPages) {
         return $this->renderThenChild();
     } else {
         return $this->renderElseChild();
     }
 }
 /**
  * @return mixed
  */
 public function render()
 {
     $pageUid = $this->arguments['pageUid'];
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $rootLineData = $this->pageSelect->getRootLine($pageUid);
     $as = $this->arguments['as'];
     if (TRUE === empty($as)) {
         return $rootLineData;
     }
     $variables = array($as => $rootLineData);
     $output = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables);
     return $output;
 }
示例#9
0
 /**
  * This method decides if the condition is TRUE or FALSE. It can be overriden in extending viewhelpers to adjust functionality.
  *
  * @param array $arguments ViewHelper arguments to evaluate the condition for this ViewHelper, allows for flexiblity in overriding this method.
  * @return bool
  */
 protected static function evaluateCondition($arguments = NULL)
 {
     $pageUid = $arguments['pageUid'];
     $includeHidden = $arguments['includeHidden'];
     $showHiddenInMenu = $arguments['showHiddenInMenu'];
     if (NULL === $pageUid || TRUE === empty($pageUid) || 0 === intval($pageUid)) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     if (self::$pageSelect === NULL) {
         $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
         self::$pageSelect = $objectManager->get('FluidTYPO3\\Vhs\\Service\\PageSelectService');
     }
     $menu = self::$pageSelect->getMenu($pageUid, array(), '', $showHiddenInMenu);
     $pageHasSubPages = 0 < count($menu);
     return TRUE === $pageHasSubPages;
 }
示例#10
0
 /**
  * @param $pageUid
  * @param string $where
  * @return array
  */
 public function getMenu($pageUid, $where = '')
 {
     $excludePages = $this->processPagesArgument($this->arguments['excludePages']);
     $showHiddenInMenu = (bool) $this->arguments['showHiddenInMenu'];
     $allowedDoktypeList = $this->allowedDoktypeList();
     $menuData = $this->pageSelect->getMenu($pageUid, $excludePages, $where, $showHiddenInMenu, FALSE, $allowedDoktypeList);
     return $menuData;
 }
示例#11
0
 /**
  * @param $pageUid
  * @param string $where
  * @return array
  */
 public function getMenu($pageUid, $where = '')
 {
     $excludePages = $this->processPagesArgument($this->arguments['excludePages']);
     $showHiddenInMenu = (bool) $this->arguments['showHiddenInMenu'];
     $allowedDoktypeList = $this->allowedDoktypeList();
     $menuData = $this->pageSelect->getMenu($pageUid, $excludePages, $where, $showHiddenInMenu, FALSE, $allowedDoktypeList);
     foreach ($menuData as $key => $page) {
         if (TRUE === $this->pageSelect->hidePageForLanguageUid($page['uid'], $GLOBALS['TSFE']->sys_language_uid)) {
             unset($menuData[$key]);
         }
     }
     return $menuData;
 }
 /**
  * @return string
  */
 public function render()
 {
     if ('BE' === TYPO3_MODE) {
         return;
     }
     $languages = $this->arguments['languages'];
     if (TRUE === $languages instanceof \Traversable) {
         $languages = iterator_to_array($languages);
     } elseif (TRUE === is_string($languages)) {
         $languages = GeneralUtility::trimExplode(',', $languages, TRUE);
     } else {
         $languages = (array) $languages;
     }
     $pageUid = intval($this->arguments['pageUid']);
     $normalWhenNoLanguage = $this->arguments['normalWhenNoLanguage'];
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
     unset($languages[$currentLanguageUid]);
     /** @var UriBuilder $uriBuilder */
     $uriBuilder = $this->controllerContext->getUriBuilder();
     $uriBuilder = $uriBuilder->reset()->setTargetPageUid($pageUid)->setCreateAbsoluteUri(TRUE);
     $this->tagBuilder->reset();
     $this->tagBuilder->setTagName('link');
     $this->tagBuilder->addAttribute('rel', 'alternate');
     /** @var PageRenderer $pageRenderer */
     $pageRenderer = $GLOBALS['TSFE']->getPageRenderer();
     $usePageRenderer = 1 !== intval($GLOBALS['TSFE']->config['config']['disableAllHeaderCode']);
     $output = '';
     foreach ($languages as $languageUid => $languageName) {
         if (FALSE === $this->pageSelect->hidePageForLanguageUid($pageUid, $languageUid, $normalWhenNoLanguage)) {
             $uri = $uriBuilder->setArguments(array('L' => $languageUid))->build();
             $this->tagBuilder->addAttribute('href', $uri);
             $this->tagBuilder->addAttribute('hreflang', $languageName);
             $renderedTag = $this->tagBuilder->render();
             if (TRUE === $usePageRenderer) {
                 $pageRenderer->addMetaTag($renderedTag);
             } else {
                 $output .= $renderedTag . LF;
             }
         }
     }
     if (FALSE === $usePageRenderer) {
         return trim($output);
     }
 }
示例#13
0
 /**
  * Get content records based on column and pid
  *
  * @param integer $limit
  * @param string $order
  * @return array
  */
 protected function getContentRecords($limit = NULL, $order = NULL)
 {
     $pageUid = $this->getPageUid();
     $slide = (int) $this->arguments['slide'];
     $slideCollectReverse = (bool) $this->arguments['slideCollectReverse'];
     $slideCollect = (int) $this->arguments['slideCollect'];
     if (0 < $slideCollect) {
         // $slideCollect overrides $slide to automatically start sliding if
         // collection is enabled.
         $slide = $slideCollect;
     }
     // find out which storage page UIDs to read from, respecting slide depth
     $storagePageUids = array();
     if (0 === $slide) {
         $storagePageUids[] = $pageUid;
     } else {
         $rootLine = $this->pageSelect->getRootLine($pageUid, NULL, $slideCollectReverse);
         if (-1 !== $slide) {
             $rootLine = array_slice($rootLine, 0, $slide);
         }
         foreach ($rootLine as $page) {
             $storagePageUids[] = (int) $page['uid'];
         }
     }
     // select content elements, respecting slide and slideCollect.
     $contentRecords = array();
     do {
         $storagePageUid = array_shift($storagePageUids);
         $contentFromPageUid = $this->getContentRecordsFromPage($storagePageUid, $limit, $order);
         if (0 < count($contentFromPageUid)) {
             $contentRecords = array_merge($contentRecords, $contentFromPageUid);
             if (0 === $slideCollect) {
                 // stop collecting because argument said so and we've gotten at least one record now.
                 break;
             }
         }
     } while (0 < count($storagePageUids));
     if (TRUE === (bool) $this->arguments['render']) {
         $contentRecords = $this->getRenderedRecords($contentRecords);
     } else {
         $contentRecords = $contentRecords;
     }
     return $contentRecords;
 }
示例#14
0
 /**
  * Render method
  * @return NULL|string
  */
 public function render()
 {
     // Check if link wizard link
     $pageUid = $this->arguments['pageUid'];
     $additionalParameters = (array) $this->arguments['additionalParams'];
     if (FALSE === is_numeric($pageUid)) {
         $linkConfig = GeneralUtility::unQuoteFilenames($pageUid, TRUE);
         if (TRUE === isset($linkConfig[0])) {
             $pageUid = $linkConfig[0];
         }
         if (TRUE === isset($linkConfig[1]) && '-' !== $linkConfig[1]) {
             $this->tag->addAttribute('target', $linkConfig[1]);
         }
         if (TRUE === isset($linkConfig[2]) && '-' !== $linkConfig[2]) {
             $this->tag->addAttribute('class', $linkConfig[2]);
         }
         if (TRUE === isset($linkConfig[3]) && '-' !== $linkConfig[3]) {
             $this->tag->addAttribute('title', $linkConfig[3]);
         }
         if (TRUE === isset($linkConfig[4]) && '-' !== $linkConfig[4]) {
             $additionalParametersString = trim($linkConfig[4], '&');
             $additionalParametersArray = GeneralUtility::trimExplode('&', $additionalParametersString);
             foreach ($additionalParametersArray as $parameter) {
                 list($key, $value) = GeneralUtility::trimExplode('=', $parameter);
                 $additionalParameters[$key] = $value;
             }
         }
     }
     // Get page via pageUid argument or current id
     $pageUid = intval($pageUid);
     if (0 === $pageUid) {
         $pageUid = $GLOBALS['TSFE']->id;
     }
     $page = $this->pageSelect->getPage($pageUid);
     if (TRUE === empty($page)) {
         return NULL;
     }
     // Do not render the link, if the page should be hidden
     $currentLanguageUid = $GLOBALS['TSFE']->sys_language_uid;
     $hidePage = $this->pageSelect->hidePageForLanguageUid($pageUid, $currentLanguageUid);
     if (TRUE === $hidePage) {
         return NULL;
     }
     // Get the title from the page or page overlay
     if (0 < $currentLanguageUid) {
         $pageOverlay = $this->pageSelect->getPageOverlay($pageUid, $currentLanguageUid);
         $title = $this->getTitleValue($pageOverlay);
     } else {
         $title = $this->getTitleValue($page);
     }
     // Check if we should assign page title to the template variable container
     $pageTitleAs = $this->arguments['pageTitleAs'];
     if (FALSE === empty($pageTitleAs)) {
         $variables = array($pageTitleAs => $title);
     } else {
         $variables = array();
     }
     // Render childs to see if an alternative title content should be used
     $renderedTitle = ViewHelperUtility::renderChildrenWithVariables($this, $this->templateVariableContainer, $variables);
     if (FALSE === empty($renderedTitle)) {
         $title = $renderedTitle;
     }
     $uriBuilder = $this->controllerContext->getUriBuilder();
     $uri = $uriBuilder->reset()->setTargetPageUid($pageUid)->setTargetPageType($this->arguments['pageType'])->setNoCache($this->arguments['noCache'])->setUseCacheHash(!$this->arguments['noCacheHash'])->setSection($this->arguments['section'])->setLinkAccessRestrictedPages($this->arguments['linkAccessRestrictedPages'])->setArguments($additionalParameters)->setCreateAbsoluteUri($this->arguments['absolute'])->setAddQueryString($this->arguments['addQueryString'])->setArgumentsToBeExcludedFromQueryString((array) $this->arguments['argumentsToBeExcludedFromQueryString'])->build();
     $this->tag->addAttribute('href', $uri);
     $this->tag->setContent($title);
     return $this->tag->render();
 }
 /**
  * Get content records based on column and pid
  *
  * @param integer $limit
  * @param string $order
  * @return array
  */
 protected function getContentRecords($limit = NULL, $order = NULL)
 {
     if (NULL === $limit && FALSE === empty($this->arguments['limit'])) {
         $limit = intval($this->arguments['limit']);
     }
     if (NULL === $order && FALSE === empty($this->arguments['order'])) {
         $order = $this->arguments['order'];
     }
     $loadRegister = FALSE;
     if (FALSE === empty($this->arguments['loadRegister'])) {
         $this->contentObject->cObjGetSingle('LOAD_REGISTER', $this->arguments['loadRegister']);
         $loadRegister = TRUE;
     }
     $pageUid = $GLOBALS['TSFE']->id;
     if (FALSE === empty($this->arguments['pageUid'])) {
         $pageUid = $this->arguments['pageUid'];
     } elseif (FALSE === empty($GLOBALS['TSFE']->page['content_from_pid'])) {
         $pageUid = $GLOBALS['TSFE']->page['content_from_pid'];
     }
     $pageUid = intval($pageUid);
     if (FALSE === empty($order)) {
         $sortDirection = strtoupper(trim($this->arguments['sortDirection']));
         if ('ASC' !== $sortDirection && 'DESC' !== $sortDirection) {
             $sortDirection = 'ASC';
         }
         $order = $order . ' ' . $sortDirection;
     }
     $slide = intval($this->arguments['slide']);
     $slideCollect = intval($this->arguments['slideCollect']);
     $slide = min($slide, $slideCollect);
     $slideCollectReverse = (bool) $this->arguments['slideCollectReverse'];
     $rootLine = NULL;
     if (0 !== $slide) {
         $rootLine = $this->pageSelect->getRootLine($pageUid, NULL, $slideCollectReverse);
     }
     $colPos = intval($this->arguments['column']);
     $contentUids = $this->arguments['contentUids'];
     $content = array();
     $hideUntranslated = (bool) $this->arguments['hideUntranslated'];
     $currentLanguage = $GLOBALS['TSFE']->sys_language_content;
     $languageCondition = '(sys_language_uid IN (-1,' . $currentLanguage . ')';
     if (0 < $currentLanguage) {
         if (TRUE === $hideUntranslated) {
             $languageCondition .= ' AND l18n_parent > 0';
         }
         $nestedQuery = $GLOBALS['TYPO3_DB']->SELECTquery('l18n_parent', 'tt_content', 'sys_language_uid = ' . $currentLanguage . $GLOBALS['TSFE']->cObj->enableFields('tt_content'));
         $languageCondition .= ' AND uid NOT IN (' . $nestedQuery . ')';
     }
     $languageCondition .= ')';
     do {
         if (0 !== $slide) {
             $page = array_shift($rootLine);
             if (TRUE === empty($page)) {
                 break;
             }
             $pageUid = $page['uid'];
         }
         if (TRUE === is_array($contentUids)) {
             $conditions = 'uid IN (' . implode(',', $contentUids) . ')';
         } else {
             $conditions = "pid = '" . $pageUid . "' AND colPos = '" . $colPos . "'" . $GLOBALS['TSFE']->cObj->enableFields('tt_content') . ' AND ' . $languageCondition;
         }
         $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'tt_content', $conditions, 'uid', $order, $limit);
         if (TRUE === (bool) $this->arguments['render'] && FALSE === empty($rows)) {
             $content = $this->getRenderedRecords($rows);
         } else {
             $content = $rows;
         }
         if (0 !== count($content) && 0 === $slideCollect) {
             break;
         }
     } while (--$slide !== -1);
     if (TRUE === $loadRegister) {
         $this->contentObject->cObjGetSingle('RESTORE_REGISTER', '');
     }
     return $content;
 }