public function indexAction()
 {
     $this->setCanonicalUrl($this->view->url(array(), 'cms', true));
     $this->setTitle(Axis::translate('cms')->__('Pages'), null, false);
     $categories = Axis::single('cms/category')->select(array('id', 'parent_id'))->addCategoryContentTable()->columns(array('ccc.link', 'ccc.title'))->addActiveFilter()->addSiteFilter(Axis::getSiteId())->addLanguageIdFilter(Axis_Locale::getLanguageId())->order('cc.parent_id')->where('ccc.link IS NOT NULL')->fetchAssoc();
     $pages = Axis::single('cms/page')->select(array('id', 'name'))->join(array('cpca' => 'cms_page_category'), 'cp.id = cpca.cms_page_id', 'cms_category_id')->join('cms_page_content', 'cp.id = cpc.cms_page_id', array('link', 'title'))->where('cp.is_active = 1')->where('cpc.language_id = ?', Axis_Locale::getLanguageId())->where('cpca.cms_category_id IN (?)', array_keys($categories))->order('cpca.cms_category_id')->fetchAssoc();
     $menu = new Zend_Navigation();
     foreach ($categories as $_category) {
         $title = empty($_category['title']) ? $_category['link'] : $_category['title'];
         $page = new Zend_Navigation_Page_Mvc(array('category_id' => $_category['id'], 'label' => $title, 'title' => $title, 'route' => 'cms_category', 'params' => array('cat' => $_category['link']), 'class' => 'icon-folder'));
         $_container = $menu->findBy('category_id', $_category['parent_id']);
         if (null === $_container) {
             $_container = $menu;
         }
         $_container->addPage($page);
     }
     foreach ($pages as $_page) {
         $title = empty($_page['title']) ? $_page['link'] : $_page['title'];
         $page = new Zend_Navigation_Page_Mvc(array('label' => $title, 'title' => $title, 'route' => 'cms_page', 'params' => array('page' => $_page['link']), 'class' => 'icon-page'));
         $_container = $menu->findBy('category_id', $_page['cms_category_id']);
         $_container->addPage($page);
     }
     $this->view->menu = $menu;
     $this->render();
 }
Exemple #2
0
 /**
  * Устанавливает активную ветку на основе текущего раздела
  *
  * @return Phorm_Widget_Categories_Menu
  */
 private function setActiveBranch()
 {
     if (isset($this->_params['categoryinfo']['categoryid']) && ($current = $this->_categories->findBy('id', $this->_params['categoryinfo']['categoryid']))) {
         $current->set('active', true);
         while ($current = $this->_categories->findBy('id', $current->get('cparent'))) {
             $current->set('active', true);
         }
     }
     return $this->_categories;
 }
Exemple #3
0
 /**
  * This method tests the privileges required to see a given link
  *
  * @param string $propertyValue the value of the property for finding page
  * @param string $role          the role to test against
  * @param bool   $result        expected result
  * @param string $propertyName  if given method will try to find the given page
  *                              by this property instead of by label
  *
  * @dataProvider getAccessSampleData
  *
  * @return void
  */
 public function testNavigationAccess($propertyValue, $role, $result, $propertyName = 'label')
 {
     $acl = $this->getNavigationAcl();
     if (!$acl) {
         $this->markTestSkipped('You must override the getAcl method in order to use this test');
     }
     $page = $this->_navigation->findBy($propertyName, $propertyValue);
     $this->assertNotNull($page, sprintf("A page with %s set to %s should exists in navigation", ucfirst($propertyName), $propertyValue));
     $menu = new Zend_View_Helper_Navigation_Menu();
     $menu->setRole($role)->setAcl($acl);
     $this->assertSame($result, $menu->accept($page), "Page with label {$page->label} is not accepted for role " . ($role instanceof Zend_Acl_Role_Interface ? $role->getRoleId() : $role));
 }
 public function createAction()
 {
     $this->_helper->layout->disableLayout();
     $filename = $this->_getParam('filename');
     $alpha = new Zend_Filter_Alnum();
     $filename = $alpha->filter($filename);
     $filename .= '.xml';
     $siteId = $this->_getParam('site_id');
     $menu = new Zend_Navigation();
     $gmDate = gmdate('Y-m-d');
     $locales = Axis::single('locale/language')->select(array('id', 'locale'))->fetchPairs();
     foreach ($locales as $languageId => &$_locale) {
         $_locale = Axis_Locale::getLanguageUrl($_locale);
     }
     $categories = Axis::single('catalog/category')->select('*')->addName()->addKeyWord()->order('cc.lft')->addSiteFilter($siteId)->addDisabledFilter()->fetchAll();
     $config = Axis::config()->sitemap;
     $changefreq = $config->categories->frequency;
     $priority = $config->categories->priority;
     $_container = $menu;
     $lvl = 0;
     foreach ($categories as $_category) {
         if (!isset($locales[$_category['language_id']])) {
             continue;
         }
         $uri = $this->view->hurl(array('cat' => array('value' => $_category['id'], 'seo' => $_category['key_word']), 'locale' => $locales[$_category['language_id']], 'controller' => 'catalog', 'action' => 'view'), false, true);
         $page = new Zend_Navigation_Page_Uri(array('label' => $_category['name'], 'title' => $_category['name'], 'uri' => $uri, 'order' => $_category['lft'], 'visible' => 'enabled' === $_category['status'] ? true : false, 'lastmod' => $gmDate, 'changefreq' => $changefreq, 'priority' => $priority, 'id' => $_category['id'] . $_category['language_id']));
         $lvl = $lvl - $_category['lvl'] + 1;
         for ($i = 0; $i < $lvl; $i++) {
             $_container = $_container->getParent();
         }
         $lvl = $_category['lvl'];
         $_container->addPage($page);
         $_container = $page;
     }
     $products = Axis::single('catalog/product_category')->select()->distinct()->from('catalog_product_category', array())->joinLeft('catalog_product', 'cp.id = cpc.product_id', array('id'))->addName()->addKeyWord()->addActiveFilter()->addDateAvailableFilter()->addSiteFilter($siteId)->columns(array('category_id' => 'cc.id'))->fetchAll();
     $changefreq = $config->products->frequency;
     $priority = $config->products->priority;
     foreach ($products as $_product) {
         if (!isset($locales[$_product['language_id']])) {
             continue;
         }
         $uri = $this->view->hurl(array('cat' => array('value' => $_product['id'], 'seo' => $_product['key_word']), 'locale' => $locales[$_product['language_id']], 'controller' => 'catalog', 'action' => 'view'), false, true);
         $page = new Zend_Navigation_Page_Uri(array('label' => $_product['name'], 'title' => $_product['name'], 'uri' => $uri, 'lastmod' => $gmDate, 'changefreq' => $changefreq, 'priority' => $priority));
         $_container = $menu->findBy('id', $_product['category_id'] . $_product['language_id']);
         if (null !== $_container) {
             $_container->addPage($page);
         }
     }
     $categories = Axis::single('cms/category')->select(array('id', 'parent_id'))->addCategoryContentTable()->columns(array('ccc.link', 'ccc.title', 'ccc.language_id'))->addActiveFilter()->addSiteFilter($siteId)->where('ccc.link IS NOT NULL')->fetchAll();
     $changefreq = $config->cms->frequency;
     $priority = $config->cms->priority;
     foreach ($categories as $_category) {
         if (!isset($locales[$_category['language_id']])) {
             continue;
         }
         $title = empty($_category['title']) ? $_category['link'] : $_category['title'];
         $page = new Zend_Navigation_Page_Mvc(array('label' => $title, 'title' => $title, 'route' => 'cms_category', 'params' => array('cat' => $_category['link'], 'locale' => $locales[$_category['language_id']]), 'id' => 'cms' . $_category['id'] . $_category['language_id'], 'lastmod' => $gmDate, 'changefreq' => $changefreq, 'priority' => $priority));
         $_container = $menu->findBy('id', 'cms' . $_category['parent_id'] . $_category['language_id']);
         if (null === $_container) {
             $_container = $menu;
         }
         $_container->addPage($page);
     }
     $pages = array();
     if ($config->cms->showPages && !empty($categories)) {
         $pages = Axis::single('cms/page')->select(array('id', 'name'))->join(array('cpca' => 'cms_page_category'), 'cp.id = cpca.cms_page_id', 'cms_category_id')->join('cms_page_content', 'cp.id = cpc.cms_page_id', array('link', 'title', 'language_id'))->where('cp.is_active = 1')->where('cpca.cms_category_id IN (?)', array_keys($categories))->fetchAll();
         foreach ($pages as $_page) {
             $title = empty($_page['title']) ? $_page['link'] : $_page['title'];
             $page = new Zend_Navigation_Page_Mvc(array('label' => $title, 'title' => $title, 'route' => 'cms_page', 'params' => array('page' => $_page['link'], 'locale' => $locales[$_page['language_id']]), 'lastmod' => $gmDate, 'changefreq' => $changefreq, 'priority' => $priority));
             $_container = $menu->findBy('id', 'cms' . $_page['cms_category_id'] . $_page['language_id']);
             if (null !== $_container) {
                 $_container->addPage($page);
             }
         }
     }
     $content = $this->view->navigation()->sitemap($menu)->setFormatOutput(true)->setUseSitemapValidators(false)->render();
     $this->getResponse()->clearAllHeaders()->setHeader('Content-Description', 'File Transfer', true)->setHeader('Content-Type', 'application/octet-stream', true)->setHeader('Content-Disposition', 'attachment; filename=' . $filename, true)->setHeader('Content-Transfer-Encoding', 'binary', true)->setHeader('Expires', '0', true)->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)->setHeader('Pragma', 'public', true);
     $this->getResponse()->setBody($content);
 }
Exemple #5
0
 private function addCurrentPageUnregistered(Zend_Navigation $nav, Zend_Controller_Request_Abstract $request)
 {
     if ($nav->findBy('id', 'mii-' . $request->getParam('mid'))) {
         return;
     }
     $session = new Zend_Session_Namespace('previousPage');
     if (strcmp(strtolower($request->getActionName()), 'logout') === 0) {
         $session->unsetAll();
     }
     #$session->previousPage = null;
     $previousPage = $session->previousPage;
     $currentPage = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
     $navItem = $nav->findAllBy('active', true);
     if (count($navItem) == 0) {
         $navItem = array('module' => strtolower($request->getModuleName()), 'controller' => strtolower($request->getControllerName()), 'action' => strtolower($request->getActionName()), 'label' => ucfirst(strtolower($request->getActionName())), 'title' => ucfirst(strtolower($request->getActionName())), 'resource' => strtolower($request->getModuleName() . ':' . $request->getControllerName()), 'privilege' => strtolower($request->getActionName()), 'id' => 0, 'miid' => 0, 'visible' => false, 'active' => true);
         if (is_null($previousPage)) {
             $nav->addPage($navItem);
         } else {
             $navCurrentItem = $nav->findBy('id', $session->miid);
             $navCurrentItem->addPage($navItem);
         }
     } else {
         $session->previousPage = $currentPage;
         $navCurrentItem = $nav->findBy('active', true);
         $session->miid = $navCurrentItem->id;
     }
 }