Beispiel #1
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 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;
 }
 /**
  * Filter the fetched menu according to visibility etc.
  *
  * @param array $menu
  * @param array $rootLine
  * @param array $parentPage
  * @return array
  */
 protected function parseMenu($menu, $rootLine, array $parentPage = NULL)
 {
     $classFirst = $this->arguments['classFirst'];
     $classLast = $this->arguments['classLast'];
     $filtered = array();
     $allowedDocumentTypes = $this->allowedDoktypeList();
     foreach ($menu as $uid => $page) {
         if (TRUE === isset($page['tx_realurl_exclude']) && TRUE === (bool) $page['tx_realurl_exclude'] && TRUE === (bool) $this->arguments['resolveExclude']) {
             continue;
         } elseif (TRUE === isset($page['tx_cooluri_exclude']) && TRUE === (bool) $page['tx_cooluri_exclude'] && TRUE === (bool) $this->arguments['resolveExclude']) {
             continue;
         } elseif (TRUE === $this->pageSelect->hidePageForLanguageUid($page['uid'], $GLOBALS['TSFE']->sys_language_uid)) {
             continue;
         } elseif (TRUE === in_array($page['doktype'], $allowedDocumentTypes)) {
             $filtered[$uid] = $this->getMenuItemEntry($page, $rootLine, $parentPage);
         }
     }
     $length = count($filtered);
     if (0 < $length) {
         $idx = 1;
         foreach ($filtered as $uid => $page) {
             if (1 === $idx) {
                 $filtered[$uid]['class'] = trim($filtered[$uid]['class'] . ' ' . $classFirst);
             }
             if ($length === $idx) {
                 $filtered[$uid]['class'] = trim($filtered[$uid]['class'] . ' ' . $classLast);
             }
             $idx++;
         }
     }
     return $filtered;
 }
 /**
  * @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);
     }
 }
 /**
  * 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();
 }