Newscoop\NewscoopBundle\Menu\Builder::prepareContentMenu PHP Метод

prepareContentMenu() приватный Метод

private prepareContentMenu ( $menu, $modern )
    private function prepareContentMenu($menu, $modern)
    {
        $translator = $this->container->get('translator');
        $this->addChild($menu, $translator->trans('Publications'), array('uri' => $this->container->get('router')->generate('newscoop_newscoop_publications_index'), 'resource' => 'publication', 'privilege' => 'manage'));
        if ($menu[$translator->trans('Publications')]) {
            $publicationId = $this->container->get('request')->get('id', 1);
            if (!is_numeric($publicationId)) {
                $publicationId = 1;
            }
            $this->addChild($menu[$translator->trans('Publications')], $translator->trans('publications.title.edit', array(), 'pub'), array('route' => 'newscoop_newscoop_publications_edit', 'routeParameters' => array('id' => $publicationId), 'resource' => 'publication', 'privilege' => 'manage'))->setDisplay(false);
            $this->addChild($menu[$translator->trans('Publications')], $translator->trans('publications.title.remove', array(), 'pub'), array('route' => 'newscoop_newscoop_publications_remove', 'routeParameters' => array('id' => $publicationId), 'resource' => 'publication', 'privilege' => 'manage'))->setDisplay(false);
        }
        $this->addChild($menu, $translator->trans('comments.label.menu', array(), 'new_comments'), array('uri' => $this->container->get('router')->generate('newscoop_newscoop_comments_index'), 'resource' => 'comment', 'privilege' => 'moderate'));
        $this->addChild($menu, $translator->trans('Feedback', array(), 'home'), array('zend_route' => array('module' => 'admin', 'controller' => 'feedback', 'action' => 'index'), 'resource' => 'feedback', 'privilege' => 'manage'));
        $this->addChild($menu, $translator->trans('Media Archive', array(), 'home'), array('zend_route' => array('module' => 'admin', 'controller' => 'media-archive', 'action' => 'index.php')));
        $this->addChild($menu, $translator->trans('Search'), array('zend_route' => array('module' => 'admin', 'controller' => 'universal-list', 'action' => 'index.php')));
        $this->addChild($menu, $translator->trans('Pending articles', array(), 'home'), array('zend_route' => array('module' => 'admin', 'controller' => 'pending_articles', 'action' => 'index.php')));
        $this->addChild($menu, $translator->trans('Featured Article Lists', array(), 'home'), array('uri' => $this->container->get('router')->generate('newscoop_newscoop_playlists_index'), 'resource' => 'playlist', 'privilege' => 'manage'));
        // add content/publications
        $publicationService = $this->container->get('content.publication');
        foreach ($publicationService->getPublicationsForMenu()->getArrayResult() as $publication) {
            $pubId = $publication['id'];
            $this->addChild($menu, $publication['name'], array('uri' => $this->generateZendRoute('admin') . "/issues/?Pub={$pubId}"))->setAttribute('rightdrop', true)->setLinkAttribute('data-toggle', 'rightdrop');
            $query = $this->container->get('em')->getRepository('Newscoop\\Entity\\Issue')->getLatestByPublication($pubId, 11);
            if ($query) {
                $issues = $query->getArrayResult();
            } else {
                $issues = array();
            }
            $moreIssues = count($issues) > 10 ? true : false;
            if ($moreIssues) {
                unset($issues[10]);
            }
            // add content/publication/issue
            $latestPublished = false;
            foreach ($issues as $issue) {
                $issueId = $issue['number'];
                $languageId = $issue['language']['id'];
                $issueName = sprintf('%d. %s (%s)', $issue['number'], $issue['name'], $issue['language']['name']);
                $issueChild = $this->addChild($menu[$publication['name']], $issueName, array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/sections/?Pub={$pubId}&Issue={$issueId}&Language={$languageId}"))->setAttribute('rightdrop', true)->setLinkAttribute('data-toggle', 'rightdrop');
                if (($issue['workflowStatus'] === 'Y' ? true : false) && !$latestPublished) {
                    $issueChild->setLinkAttribute('class', 'latest-published');
                    $latestPublished = true;
                }
                // add content/publication/issue/section
                $firstSections = array();
                foreach ($issue['sections'] as $section) {
                    $firstSections[$section['number']] = $section;
                }
                ksort($firstSections);
                $sectionsCounter = 0;
                foreach ($firstSections as $section) {
                    if ($sectionsCounter < 10) {
                        $sectionId = $section['number'];
                        $sectionName = sprintf('%d. %s', $section['number'], $section['name']);
                        $this->addChild($menu[$publication['name']][$issueName], $sectionName, array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/articles/?f_publication_id={$pubId}&f_issue_number={$issueId}&f_language_id={$languageId}&f_section_number={$sectionId}"));
                        $sectionsCounter++;
                    }
                }
                if (count($issue['sections']) > 0) {
                    if (!$modern) {
                        $this->addChild($menu[$publication['name']][$issueName], null, array())->setAttribute('class', 'divider');
                        $this->addChild($menu[$publication['name']][$issueName], $translator->trans('More...'), array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/sections/?Pub={$pubId}&Issue={$issueId}&Language={$languageId}"));
                    } else {
                        $this->addChild($menu[$publication['name']][$issueName], $translator->trans('More...'), array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/sections/?Pub={$pubId}&Issue={$issueId}&Language={$languageId}"))->setAttribute('divider_prepend', true);
                    }
                }
            }
            if ($moreIssues) {
                if (!$modern) {
                    $this->addChild($menu[$publication['name']], null, array())->setAttribute('class', 'divider');
                    $this->addChild($menu[$publication['name']], $translator->trans('More...'), array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/issues/?Pub={$pubId}"));
                } else {
                    $this->addChild($menu[$publication['name']], $translator->trans('More...'), array('uri' => $this->generateZendRoute('admin', array('zend_route' => array('reset_params' => true))) . "/issues/?Pub={$pubId}"))->setAttribute('divider_prepend', true);
                }
            }
        }
    }