/**
  * @param $xml
  * @return mixed
  */
 public function execBlock($xml)
 {
     $languageMenu = array();
     $currentLocale = $this->locale->getLocale()->id;
     $currentMenuItem = $this->route->getCurrentMenuItem();
     foreach ($currentMenuItem->translations as $translation) {
         $url = $translation->getUrl(true);
         $languageMenu[$translation->locale->id] = array('enable' => $translation->active, 'url' => $url, 'active' => $translation->locale->id === $currentLocale, 'name' => $translation->locale->name);
     }
     foreach ($languageMenu as $locale => $language) {
         if ($language['enable'] === false) {
             $menuItem = $currentMenuItem;
             do {
                 $menuItem = $menuItem->parent;
             } while ($menuItem->parent);
             $translation = $menuItem->getTranslation($locale);
             $languageMenu[$locale]['url'] = $translation ? $translation->url : '/';
         } else {
             $localeData = $this->db->getRepository('\\Fraym\\Locale\\Entity\\Locale')->findOneById($locale);
             $localeData = explode('_', strtolower($localeData->locale));
             $this->template->addHeadData('<link rel="alternate" hreflang="' . $localeData[0] . '" href="' . $language['url'] . '" />', 'hreflang_' . $localeData[0]);
         }
     }
     $this->languageMenuController->renderHtml($languageMenu);
 }
Example #2
0
 /**
  * @param $xml
  * @return mixed
  */
 public function execBlock($xml)
 {
     $languageMenu = array();
     $currentLocale = $this->locale->getLocale()->id;
     $defaultLocale = $this->locale->getDefaultLocale();
     $currentMenuItem = $this->route->getCurrentMenuItem();
     $locales = $this->db->getRepository('\\Fraym\\Locale\\Entity\\Locale')->findAll();
     foreach ($currentMenuItem->translations as $translation) {
         $url = $translation->url === '' ? '/' : $translation->url;
         $languageMenu[$translation->locale->id] = array('url' => $url, 'active' => $translation->locale->id === $currentLocale, 'name' => $translation->locale->name);
     }
     foreach ($locales as $locale) {
         if (!isset($languageMenu[$locale->id])) {
             $menuItem = $currentMenuItem;
             do {
                 $m = $menuItem->parent;
                 if ($m) {
                     $menuItem = $m;
                 }
             } while ($m);
             foreach ($menuItem->translations as $mTranslation) {
                 if ($mTranslation->locale->id === $locale->id) {
                     $url = $mTranslation->url;
                     break;
                 } elseif ($mTranslation->locale->id === $defaultLocale->id) {
                     $url = $mTranslation->url;
                 }
             }
             $languageMenu[$locale->id] = array('url' => $url === '' ? '/' : $url, 'active' => $locale->id === $currentLocale, 'name' => $locale->name);
         }
     }
     $this->languageMenuController->renderHtml($languageMenu);
 }
Example #3
0
 /**
  * @param $xml
  */
 protected function listFilter($xml)
 {
     $listPageUrl = '';
     $listPage = $this->db->getRepository('\\Fraym\\Menu\\Entity\\MenuItem')->findOneById($xml->listPage);
     if ($listPage) {
         $listPageUrl = $listPage->getUrl($this->route, true);
     }
     if ((string) $xml->view == 'list-category') {
         $categories = $this->db->createQueryBuilder()->select("c")->from('\\Extension\\News\\Entity\\Category', 'c')->join('c.news', 'n')->leftJoin('n.sites', 's')->where("s = :site OR n.sites IS EMPTY")->orderBy("c.name", 'asc')->setParameter('site', $this->route->getCurrentMenuItem()->site)->getQuery()->getResult();
         return $this->newsController->renderNewsCategories($listPageUrl, $categories);
     } elseif ((string) $xml->view == 'list-tag') {
         $tags = $this->db->createQueryBuilder()->select("t")->from('\\Extension\\News\\Entity\\Tag', 't')->join('t.news', 'n')->leftJoin('n.sites', 's')->where("s = :site OR n.sites IS EMPTY")->orderBy("t.name", 'asc')->setParameter('site', $this->route->getCurrentMenuItem()->site)->getQuery()->getResult();
         return $this->newsController->renderNewsTags($listPageUrl, $tags);
     }
 }
Example #4
0
 /**
  * @param null $contentId
  * @return mixed|string
  */
 private function getDataFromBlocksByContentId($contentId = null)
 {
     $html = '';
     $blocks = $this->findBlocks($this->route->getCurrentMenuItem()->id, $contentId);
     if ($blocks && is_array($blocks)) {
         foreach ($blocks as $block) {
             $html .= $this->parseBlock($block);
         }
     }
     return $html;
 }