FluidTYPO3\Vhs\ViewHelpers\Menu\BrowseViewHelper::render PHP Метод

render() публичный Метод

public render ( ) : string
Результат string
    public function render()
    {
        $defaultUid = $GLOBALS['TSFE']->id;
        $showAccessProtected = (bool) $this->arguments['showAccessProtected'];
        $pageUid = (int) (null !== $this->arguments['pageUid'] ? $this->arguments['pageUid'] : $defaultUid);
        $currentUid = (int) ($this->arguments['currentPageUid'] ? $this->arguments['currentPageUid'] : $defaultUid);
        $currentPage = $this->pageService->getPage($currentUid, $showAccessProtected);
        $parentUid = (int) (null !== $this->arguments['pageUid'] ? $pageUid : $currentPage['pid']);
        $parentPage = $this->pageService->getPage($parentUid, $showAccessProtected);
        $menuData = $this->getMenu($parentUid);
        $pageUids = array_keys($menuData);
        $uidCount = count($pageUids);
        $firstUid = $pageUids[0];
        $lastUid = $pageUids[$uidCount - 1];
        $nextUid = null;
        $prevUid = null;
        for ($i = 0; $i < $uidCount; $i++) {
            if ((int) $pageUids[$i] === $currentUid) {
                if ($i > 0) {
                    $prevUid = $pageUids[$i - 1];
                }
                if ($i < $uidCount) {
                    $nextUid = $pageUids[$i + 1];
                }
                break;
            }
        }
        $pages = [];
        if (true === (bool) $this->arguments['renderFirst']) {
            $pages['first'] = $menuData[$firstUid];
        }
        if (null !== $prevUid) {
            $pages['prev'] = $menuData[$prevUid];
        }
        if (true === (bool) $this->arguments['renderUp']) {
            $pages['up'] = $parentPage;
        }
        if (null !== $nextUid) {
            $pages['next'] = $menuData[$nextUid];
        }
        if (true === (bool) $this->arguments['renderLast']) {
            $pages['last'] = $menuData[$lastUid];
        }
        $menuItems = $this->parseMenu($pages);
        $menu = [];
        if (true === isset($pages['first'])) {
            $menu['first'] = $menuItems['first'];
            $menu['first']['linktext'] = $this->getCustomLabelOrPageTitle('labelFirst', $menuItems['first']);
        }
        if (true === isset($pages['prev'])) {
            $menu['prev'] = $menuItems['prev'];
            $menu['prev']['linktext'] = $this->getCustomLabelOrPageTitle('labelPrevious', $menuItems['prev']);
        }
        if (true === isset($pages['up'])) {
            $menu['up'] = $menuItems['up'];
            $menu['up']['linktext'] = $this->getCustomLabelOrPageTitle('labelUp', $menuItems['up']);
        }
        if (true === isset($pages['next'])) {
            $menu['next'] = $menuItems['next'];
            $menu['next']['linktext'] = $this->getCustomLabelOrPageTitle('labelNext', $menuItems['next']);
        }
        if (true === isset($pages['last'])) {
            $menu['last'] = $menuItems['last'];
            $menu['last']['linktext'] = $this->getCustomLabelOrPageTitle('labelLast', $menuItems['last']);
        }
        $this->backupVariables();
        $this->templateVariableContainer->add($this->arguments['as'], $menu);
        $output = $this->renderContent($menu);
        $this->templateVariableContainer->remove($this->arguments['as']);
        $this->restoreVariables();
        return $output;
    }