/**
  * @return bool|\Knp\Menu\ItemInterface
  */
 public function createAdminMenu()
 {
     // Default to homepage
     $liveRoute = null;
     $livePath = null;
     $draftRoute = null;
     $draftPath = null;
     $menu = $this->factory->createItem('root');
     $sonataAdmin = null;
     $entity = null;
     $defaultHome = $this->router->generate('networking_init_cms_default');
     $adminLocale = $this->request->getSession()->get('admin/_locale');
     $class = 'nav navbar-nav';
     if ($this->request->isXmlHttpRequest()) {
         $class = 'initnav';
     }
     if ($this->isLoggedIn) {
         $editPath = false;
         $menu->setChildrenAttribute('class', $class . ' pull-right');
         $dashboardUrl = $this->router->generate('sonata_admin_dashboard');
         if ($sonataAdminParam = $this->request->get('_sonata_admin')) {
             $possibleAdmins = explode('|', $sonataAdminParam);
             foreach ($possibleAdmins as $adminCode) {
                 // we are in the admin area
                 $sonataAdmin = $this->adminPool->getAdminByAdminCode($adminCode);
                 if ($id = $this->request->get('id')) {
                     $entity = $sonataAdmin->getObject($id);
                 }
             }
         } else {
             // we are in the frontend
             $entity = $this->request->get('_content');
         }
         if ($entity instanceof VersionableInterface) {
             if ($snapShot = $entity->getSnapshot()) {
                 $liveRoute = $this->router->generate($this->getRoute($snapShot->getRoute()));
             }
             $draftRoute = $this->router->generate($entity->getRoute());
             $pageAdmin = $this->adminPool->getAdminByAdminCode('networking_init_cms.admin.page');
             $editPath = $pageAdmin->generateObjectUrl('edit', $entity);
             $language = $entity->getRoute()->getLocale();
         } elseif ($entity instanceof ResourceVersionInterface) {
             $liveRoute = $this->router->generate($this->getRoute($entity->getRoute()));
             $draftRoute = $this->router->generate($this->getRoute($entity->getPage()->getRoute()));
             $pageAdmin = $this->adminPool->getAdminByAdminCode('networking_init_cms.admin.page');
             $editPath = $pageAdmin->generateObjectUrl('edit', $entity->getPage());
             $language = $entity->getRoute()->getLocale();
         }
         if (!isset($language)) {
             $language = $this->request->getLocale();
         }
         if ($draftRoute) {
             $draftPath = $this->router->generate('networking_init_view_draft', array('locale' => $language, 'path' => base64_encode($draftRoute)));
         } else {
             $draftPath = $this->router->generate('networking_init_view_draft', array('locale' => $language, 'path' => base64_encode($this->request->getBaseUrl())));
         }
         if ($liveRoute) {
             $livePath = $this->router->generate('networking_init_view_live', array('locale' => $language, 'path' => base64_encode($liveRoute)));
         } else {
             $livePath = $this->router->generate('networking_init_view_live', array('locale' => $language, 'path' => base64_encode($this->request->getBaseUrl())));
         }
         $session = $this->request->getSession();
         $lastActionUrl = $dashboardUrl;
         $lastActions = $session->get('_networking_initcms_admin_tracker');
         if ($lastActions) {
             $lastActionArray = json_decode($lastActions);
             if (count($lastActionArray)) {
                 if ($this->request->get('_route') == 'sonata_admin_dashboard' || $sonataAdmin) {
                     $lastAction = next($lastActionArray);
                 } else {
                     $lastAction = reset($lastActionArray);
                 }
                 if ($lastAction) {
                     $lastActionUrl = $lastAction->url;
                 }
             }
         }
         if ($editPath && !$sonataAdmin) {
             $menu->addChild('Edit', array('label' => $this->translator->trans('link_action_edit', array(), 'SonataAdminBundle', $adminLocale), 'uri' => $editPath));
             $this->addIcon($menu['Edit'], array('icon' => 'pencil', 'append' => false));
         }
         if (!$sonataAdmin && $this->request->get('_route') != 'sonata_admin_dashboard') {
             $menu->addChild('Admin', array('uri' => $lastActionUrl));
         }
         $viewStatus = $this->request->getSession()->get('_viewStatus');
         $translator = $this->translator;
         $webLink = $translator->trans('link.website_' . $viewStatus, array(), 'NetworkingInitCmsBundle', $adminLocale);
         if ($editPath && !$sonataAdmin) {
             $webLink = $translator->trans('link.website_' . $viewStatus, array(), 'NetworkingInitCmsBundle', $adminLocale);
         }
         $dropdown = $menu->addChild($webLink, array('dropdown' => true, 'caret' => true));
         if ($draftPath) {
             $dropdown->addChild($translator->trans('view_website.status_draft', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $draftPath, 'linkAttributes' => array('class' => 'color-draft')));
         }
         if ($livePath) {
             $dropdown->addChild($translator->trans('view_website.status_published', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $livePath, 'linkAttributes' => array('class' => 'color-published')));
         }
         if (!$draftPath && !$livePath) {
             $dropdown->addChild($translator->trans('view_website.status_draft', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $defaultHome, 'linkAttributes' => array('class' => 'color-draft')));
             $dropdown->addChild($translator->trans('view_website.status_published', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $defaultHome));
         }
     }
     return $menu;
 }
示例#2
0
 public function createPreviewMenu(Request $request)
 {
     // Default to homepage
     $liveRoute = null;
     $livePath = null;
     $draftRoute = null;
     $draftPath = null;
     $menu = $this->factory->createItem('root');
     $sonataAdmin = null;
     $entity = null;
     $defaultHome = $this->router->generate('networking_init_cms_default');
     $adminLocale = $request->getSession()->get('admin/_locale');
     if ($this->isLoggedIn) {
         $editPath = false;
         $menu->setChildrenAttribute('class', 'nav');
         if ($sonataAdminParam = $request->get('_sonata_admin')) {
             $possibleAdmins = explode('|', $sonataAdminParam);
             foreach ($possibleAdmins as $adminCode) {
                 // we are in the admin area
                 $sonataAdmin = $this->adminPool->getAdminByAdminCode($adminCode);
                 if ($id = $request->get('id')) {
                     $entity = $sonataAdmin->getObject($id);
                 }
             }
         } else {
             // we are in the frontend
             $entity = $request->get('_content');
         }
         if ($entity instanceof VersionableInterface) {
             if ($snapShot = $entity->getSnapshot()) {
                 $liveRoute = $this->router->generate($snapShot->getRoute());
             }
             $draftRoute = $this->router->generate($entity->getRoute());
             $pageAdmin = $this->adminPool->getAdminByAdminCode('networking_init_cms.admin.page');
             $language = $entity->getRoute()->getLocale();
         } elseif ($entity instanceof ResourceVersionInterface) {
             $liveRoute = $this->router->generate($entity->getRoute());
             $draftRoute = $this->router->generate($entity->getPage()->getRoute());
             $pageAdmin = $this->adminPool->getAdminByAdminCode('networking_init_cms.admin.page');
             $language = $entity->getRoute()->getLocale();
         }
         if (!isset($language)) {
             $language = $request->getLocale();
         }
         if ($draftRoute) {
             $draftPath = $this->router->generate('networking_init_view_draft', array('locale' => $language, 'path' => base64_encode($draftRoute)));
         } else {
             $draftPath = $this->router->generate('networking_init_view_draft', array('locale' => $language, 'path' => base64_encode($this->request->getBaseUrl())));
         }
         if ($liveRoute) {
             $livePath = $this->router->generate('networking_init_view_live', array('locale' => $language, 'path' => base64_encode($liveRoute)));
         } else {
             $livePath = $this->router->generate('networking_init_view_live', array('locale' => $language, 'path' => base64_encode($this->request->getBaseUrl())));
         }
         $translator = $this->translator;
         $webLink = $translator->trans('link.website_', array(), 'NetworkingInitCmsBundle', $adminLocale);
         $dropdown = $menu->addChild($webLink, array('dropdown' => true, 'caret' => true));
         if ($draftPath) {
             $dropdown->addChild($translator->trans('view_website.status_draft', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $draftPath, 'linkAttributes' => array('class' => 'color-draft')));
         }
         if ($livePath) {
             $dropdown->addChild($translator->trans('view_website.status_published', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $livePath, 'linkAttributes' => array('class' => 'color-published')));
         }
         if (!$draftPath && !$livePath) {
             $dropdown->addChild($translator->trans('view_website.status_draft', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $defaultHome, 'linkAttributes' => array('class' => 'color-draft')));
             $dropdown->addChild($translator->trans('view_website.status_published', array(), 'NetworkingInitCmsBundle', $adminLocale), array('uri' => $defaultHome));
         }
     }
     return $menu;
 }