Example #1
0
 /**
  * Override Mage_Catalog_Model_Observer _addCategoriesToMenu method to remove the links for the categories having unclickable attribute set
  *
  * @param Varien_Data_Tree_Node_Collection|array $categories
  * @param Varien_Data_Tree_Node $parentCategoryNode
  * @param Mage_Page_Block_Html_Topmenu $menuBlock
  * @param bool $addTags
  */
 protected function _addCategoriesToMenu($categories, $parentCategoryNode, $menuBlock, $addTags = false)
 {
     //Get collection of unclickable category ids in the menu
     $categoryModel = Mage::getModel('catalog/category');
     foreach ($categories as $category) {
         if (!$category->getIsActive()) {
             continue;
         }
         $nodeId = 'category-node-' . $category->getId();
         $categoryModel->setId($category->getId());
         if ($addTags) {
             $menuBlock->addModelTags($categoryModel);
         }
         $tree = $parentCategoryNode->getTree();
         //Set javascript:; as category url if category attribute is unclickable
         $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => in_array($category->getId(), $this->unClickableIds) ? self::NOLINK : Mage::helper('catalog/category')->getCategoryUrl($category), 'is_active' => $this->_isActiveMenuCategory($category));
         $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $parentCategoryNode);
         $parentCategoryNode->addChild($categoryNode);
         $flatHelper = Mage::helper('catalog/category_flat');
         if ($flatHelper->isEnabled() && $flatHelper->isBuilt(true)) {
             $subcategories = (array) $category->getChildrenNodes();
         } else {
             $subcategories = $category->getChildren();
         }
         $this->_addCategoriesToMenu($subcategories, $categoryNode, $menuBlock, $addTags);
     }
 }
Example #2
0
 /**
  * Recursively adds categories to top menu
  *
  * @param Varien_Data_Tree_Node_Collection|array $categories
  * @param Varien_Data_Tree_Node $parentCategoryNode
  * @param Mage_Page_Block_Html_Topmenu $menuBlock
  * @param bool $addTags
  */
 protected function _addCategoriesToMenu($categories, $parentCategoryNode, $menuBlock, $addTags = false)
 {
     $categoryModel = Mage::getModel('catalog/category');
     foreach ($categories as $category) {
         if (!$category->getIsActive()) {
             continue;
         }
         $nodeId = 'category-node-' . $category->getId();
         $categoryModel->setId($category->getId());
         if ($addTags) {
             $menuBlock->addModelTags($categoryModel);
         }
         //check if there is a cms page set in category
         if ($category->getCmsPage()) {
             $categoryUrl = Mage::helper('cms/page')->getPageUrl($category->getCmsPage());
         } else {
             $categoryUrl = Mage::helper('catalog/category')->getCategoryUrl($category);
         }
         $tree = $parentCategoryNode->getTree();
         $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => $categoryUrl, 'is_active' => $this->_isActiveMenuCategory($category));
         $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $parentCategoryNode);
         $parentCategoryNode->addChild($categoryNode);
         $flatHelper = Mage::helper('catalog/category_flat');
         if ($flatHelper->isEnabled() && $flatHelper->isBuilt(true)) {
             $subcategories = (array) $category->getChildrenNodes();
         } else {
             $subcategories = $category->getChildren();
         }
         $this->_addCategoriesToMenu($subcategories, $categoryNode, $menuBlock, $addTags);
     }
 }
Example #3
0
 /**
  * @param Varien_Data_Tree_Node $menuTree
  * @return string
  */
 protected function _drawTwoLevelMenu(Varien_Data_Tree_Node $menuTree)
 {
     $children = $menuTree->getChildren();
     $html = '<li>';
     $html .= '<a href="' . $menuTree->getUrl() . '"><span>' . $this->escapeHtml($menuTree->getName()) . '</span></a>';
     $html .= '<div class="drop"><div class="drop-holder"><div class="col-frame"><div class="col-holder">';
     $index = 1;
     foreach ($children as $child) {
         $html .= '<div class="col">';
         $html .= '<strong class="title-drop">' . $this->escapeHtml($child->getName()) . '</strong><ul>';
         $secondLevelChildren = $child->getChildren();
         $childrenCount = $secondLevelChildren->count();
         $key = 0;
         foreach ($secondLevelChildren as $ch) {
             if ($key == 5) {
                 break;
             }
             $html .= '<li><a href="' . $ch->getUrl() . '">' . $this->escapeHtml($ch->getName()) . '</a></li>';
             $key++;
         }
         $html .= '</ul>';
         if ($childrenCount > 5 || $childrenCount == 0) {
             $html .= '<a class="all-links" href="' . $child->getUrl() . '">All ' . $this->escapeHtml($child->getName()) . '</a>';
         }
         $html .= '</div>';
         if ($index % 3 == 0 && $index > 0) {
             $html .= '</div><div class="col-holder">';
         }
         $index++;
     }
     $html .= '</div></div></div></div>';
     $html .= '</li>';
     return $html;
 }
 /**
  * Inject links into the top navigation
  *
  * @param Fishpig_Wordpress_Model_Resource_Menu_Item_Collection $items
  * @param Varien_Data_Tree_Node $parentNode
  * @return bool
  */
 protected function _injectLinks($items, $parentNode)
 {
     if (!$parentNode) {
         return false;
     }
     foreach ($items as $item) {
         try {
             $nodeId = 'wp-node-' . $item->getId();
             $data = array('name' => $item->getLabel(), 'id' => $nodeId, 'url' => $item->getUrl(), 'is_active' => $item->isItemActive());
             if ($data['is_active']) {
                 $parentNode->setIsActive(true);
                 $buffer = $parentNode;
                 while ($buffer->getParent()) {
                     $buffer = $buffer->getParent();
                     $buffer->setIsActive(true);
                 }
             }
             $itemNode = new Varien_Data_Tree_Node($data, 'id', $parentNode->getTree(), $parentNode);
             $parentNode->addChild($itemNode);
             if (count($children = $item->getChildrenItems()) > 0) {
                 $this->_injectLinks($children, $itemNode);
             }
         } catch (Exception $e) {
             Mage::helper('wordpress')->log($e->getMessage());
         }
     }
     return true;
 }
 /**
  * Get JSON of a tree node or an associative array
  *
  * @param Varien_Data_Tree_Node|array $node
  * @param int $level
  * @return string
  */
 protected function _getNodeJson($node, $level = 1)
 {
     $item = array();
     $item['text'] = $this->htmlEscape($node->getName());
     if ($this->_withProductCount) {
         $item['text'] .= ' (' . $node->getProductCount() . ')';
     }
     $item['id'] = $node->getId();
     $item['path'] = $node->getData('path');
     $item['cls'] = 'folder ' . ($node->getIsActive() ? 'active-category' : 'no-active-category');
     $item['allowDrop'] = false;
     $item['allowDrag'] = false;
     if ($node->hasChildren()) {
         $item['children'] = array();
         foreach ($node->getChildren() as $child) {
             $item['children'][] = $this->_getNodeJson($child, $level + 1);
         }
     }
     if (empty($item['children']) && (int) $node->getChildrenCount() > 0) {
         $item['children'] = array();
     }
     if (!empty($item['children'])) {
         $item['expanded'] = true;
     }
     if (in_array($node->getId(), $this->getCategoryIds())) {
         $item['checked'] = true;
     }
     return $item;
 }
 /**
  * Inject links into the top navigation
  *
  * @param Mage_Core_Model_Resource_Db_Collection_Abstract $items
  * @param Varien_Data_Tree_Node $parentNode
  * @return bool
  */
 protected function _injectLinks($items, $parentNode)
 {
     if (!$parentNode) {
         return false;
     }
     foreach ($items as $item) {
         if (!$item->canIncludeInMenu()) {
             continue;
         }
         $children = $item->getSplashPages();
         if ($children && count($children->addOrderByName()->addFieldToFilter('include_in_menu', 1)->load()) === 0) {
             continue;
         }
         $data = array('name' => $item->getName(), 'id' => $item->getMenuNodeId(), 'url' => $item->getUrl(), 'is_active' => $item->isActive());
         if ($data['is_active']) {
             $parentNode->setIsActive(true);
             $buffer = $parentNode;
             while ($buffer->getParent()) {
                 $buffer = $buffer->getParent();
                 $buffer->setIsActive(true);
             }
         }
         $itemNode = new Varien_Data_Tree_Node($data, 'id', $parentNode->getTree(), $parentNode);
         $parentNode->addChild($itemNode);
         if ($children) {
             $this->_injectLinks($children, $itemNode);
         }
     }
     return true;
 }
Example #7
0
 /**
  * @param Varien_Data_Tree_Node $category
  * @param int $level
  * @param boolean $last
  * @return string
  */
 function drawItem($category, $categoryDepth = 0, $last = false)
 {
     $html = '';
     if (!$category->getIsActive() && !$this->categoryIsRoot($category)) {
         return $html;
     }
     if (!$this->categoryHasProductUnderIt($category)) {
         return;
     }
     $html .= '<li>';
     $html .= '<div class="vaf-cat-toggler">';
     $html .= $this->htmlEscape($this->categoryName($category));
     $html .= '<div class="vaf-toggle-icon vaf-toggle-icon-plus"></div>';
     $html .= '</div>' . "\n";
     $html .= '<div class="vaf-toggle">';
     if ($category->hasChildren()) {
         $htmlChildren = $this->drawCategoryCollection($category, $categoryDepth);
         if (!empty($htmlChildren)) {
             $html .= '<ul >' . "\n" . $htmlChildren . '</ul>';
         }
     }
     $html .= $this->drawProductCollection($category);
     $html .= '</div>';
     $html .= '</li>' . "\n";
     return $html;
 }
Example #8
0
 /**
  * @param Varien_Data_Tree_Node $menuTree
  * @param string                $childrenWrapClass
  *
  * @return string
  */
 protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
 {
     $html = '';
     $counter = 1;
     $children = $menuTree->getChildren();
     $parentLevel = $menuTree->getLevel();
     $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1;
     $childrenCount = $children->count();
     $parentPositionClass = $menuTree->getPositionClass();
     $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-';
     foreach ($children as $child) {
         $child->setLevel($childLevel);
         $child->setIsFirst($counter == 1);
         $child->setIsLast($counter == $childrenCount);
         $child->setPositionClass($itemPositionClassPrefix . $counter);
         $outermostClassCode = '';
         $outermostClass = $menuTree->getOutermostClass();
         if ($childLevel == 0 && $outermostClass) {
             $outermostClassCode = ' class="' . $outermostClass . '" ';
             $child->setClass($outermostClass);
         }
         $blockName = $childLevel == 0 ? 'bennoislost.easy-navigation.renderer.with-children' : 'bennoislost.easy-navigation.renderer.single';
         $html .= $this->_renderBlockItem($blockName, $childrenWrapClass, $child, $outermostClassCode);
         $counter++;
     }
     return $html;
 }
Example #9
0
    public function BuildBranch(Varien_Data_Tree_Node $node)
    {
        $buildString = '<li style="padding-left: 16px;">';
        $buildString .= '<div class="tree-level-' . $node->getLevel() . '">';
        if ($node->getChildrenCount() != 0) {
            $buildString .= '<div class="opener" id="opener' . $node->getId() . '"  OnClick="OpenMe(this)"></div>';
        } else {
            $buildString .= '<div class="child"></div>';
        }
        $buildString .= '
			<input type="checkbox" class="inputcb" id="inputcb' . $node->getId() . '" OnClick="Decide(this)" enabled="false"/>
			<div class="folder"></div>
			<a tabindex="1" href="#" hidefocus="on" id="linkItem"><span unselectable="on" id="extdd-' . $node->getLevel() . '">' . $node->getName() . '</a>
		';
        $buildString .= '</div>';
        if ($node->getChildrenCount() != 0) {
            $buildString .= '<ul id="ToOpen' . $node->getId() . '">';
            foreach ($node->getChildren() as $child) {
                $buildString .= $this->BuildBranch($child);
            }
            $buildString .= '</ul>';
        }
        $buildString .= '</li>';
        return $buildString;
    }
Example #10
0
 /**
  * Check if click able enabled for category.
  *
  * @param Varien_Data_Tree_Node|Mage_Catalog_Model_Category $category
  * @return bool
  */
 protected function _isCategoryClickAble($category)
 {
     $isCategoryClickAbleStatus = true;
     $isCategoryClickAble = $category->getData(Monsoon_Test_Helper_Data::IS_CLICK_ABLE_LINK_CODE);
     if ($isCategoryClickAble !== null && (bool) $isCategoryClickAble === false) {
         $isCategoryClickAbleStatus = false;
     }
     return $isCategoryClickAbleStatus;
 }
Example #11
0
 /**
  * {@inheritDoc}
  */
 protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
 {
     $html = '';
     $children = $menuTree->getChildren();
     $parentLevel = $menuTree->getLevel();
     $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1;
     $counter = 1;
     $childrenCount = $children->count();
     $parentPositionClass = $menuTree->getPositionClass();
     $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-';
     foreach ($children as $child) {
         $child->setLevel($childLevel);
         $child->setIsFirst($counter == 1);
         $child->setIsLast($counter == $childrenCount);
         $child->setPositionClass($itemPositionClassPrefix . $counter);
         $outermostClassCode = '';
         $outermostClass = $menuTree->getOutermostClass();
         if ($childLevel == 0 && $outermostClass) {
             $outermostClassCode = ' class="' . $outermostClass . '" ';
             $child->setClass($outermostClass);
         }
         if ($child->hasChildren()) {
             $outermostClassCode .= ' data-toggle="dropdown" ';
         }
         $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>';
         $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '><span>';
         $html .= $this->escapeHtml($child->getName());
         if ($child->hasChildren()) {
             $html .= ' <b class="caret"></b>';
         }
         $html .= '</span></a>';
         if ($child->hasChildren()) {
             if (!empty($childrenWrapClass)) {
                 $html .= '<div class="' . $childrenWrapClass . '">';
             }
             $html .= '<ul class="level' . $childLevel . ' dropdown-menu">';
             if (Mage::getStoreConfig('catalog/navigation/top_in_dropdown') && $childLevel == 0) {
                 $prefix = Mage::getStoreConfig('catalog/navigation/top_in_dropdown_prefix');
                 $suffix = Mage::getStoreConfig('catalog/navigation/top_in_dropdown_suffix');
                 $html .= '<li class="level1 level-top-in-dropdown">';
                 $html .= '<a href="' . $child->getUrl() . '"><span>';
                 $html .= $this->escapeHtml($this->__($prefix) . ' ' . $child->getName() . ' ' . $suffix);
                 $html .= '</span></a>';
                 $html .= '</li>';
                 $html .= '<li class="divider"></li>';
             }
             $html .= $this->_getHtml($child, $childrenWrapClass);
             $html .= '</ul>';
             if (!empty($childrenWrapClass)) {
                 $html .= '</div>';
             }
         }
         $html .= '</li>';
         $counter++;
     }
     return $html;
 }
Example #12
0
 /**
  * Adds a node to this node
  */
 public function add(Varien_Data_Tree_Node $node)
 {
     $node->setParent($this->_container);
     // Set the Tree for the node
     if ($this->_container->getTree() instanceof Varien_Data_Tree) {
         $node->setTree($this->_container->getTree());
     }
     $this->_nodes[$node->getId()] = $node;
     return $node;
 }
Example #13
0
 /**
  * Export product collection
  *
  * @param Varien_Data_Tree_Node $category
  */
 protected function _exportProductCollection($category)
 {
     $categoryModel = Mage::getModel('catalog/category')->load($category->getId());
     $this->setCategory($categoryModel)->setLayer(Mage::getSingleton('catalog/layer'));
     foreach ($this->_getProductCollection() as $product) {
         $product->load($product->getEntityId());
         Mage::app()->getRequest()->setParam('id', $product->getId());
         $this->_getExportModel(self::TYPE_PRODUCT)->setProduct($product)->exportData();
         $this->_getExportModel(self::TYPE_GALLERY)->setProduct($product)->exportData();
         $this->_getExportModel(self::TYPE_REVIEW)->setProduct($product)->exportData();
     }
 }
Example #14
0
 /**
  * Recursively generates top menu html from data that is specified in $menuTree
  *
  * @param Varien_Data_Tree_Node $menuTree
  * @param string $childrenWrapClass
  * @return string
  */
 protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
 {
     $html = '';
     $children = $menuTree->getChildren();
     $parentLevel = $menuTree->getLevel();
     $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1;
     $counter = 1;
     $childrenCount = $children->count();
     $parentPositionClass = $menuTree->getPositionClass();
     $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-';
     $brandCategoryId = Mage::getStoreConfig('brand/brand/category_id');
     $_helperBrands = Mage::helper('brand');
     $brandUrl = Mage::getUrl($_helperBrands->getBrandsUrl());
     foreach ($children as $child) {
         $child->setLevel($childLevel);
         $child->setIsFirst($counter == 1);
         $child->setIsLast($counter == $childrenCount);
         $child->setPositionClass($itemPositionClassPrefix . $counter);
         $outermostClassCode = '';
         $outermostClass = $menuTree->getOutermostClass();
         if ($childLevel == 0 && $outermostClass) {
             $outermostClassCode = ' class="' . $outermostClass . '" ';
             $child->setClass($outermostClass);
         }
         $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>';
         $categoryId = str_replace("category-node-", "", $child->getId());
         //$url=($categoryId==$brandCategoryId)?$brandUrl:$child->getUrl();
         $url = $child->getUrl();
         $html .= '<a href="' . $url . '" ' . $outermostClassCode . '><span>' . $this->escapeHtml($child->getName()) . '</span></a>';
         if ($child->hasChildren()) {
             if (!empty($childrenWrapClass)) {
                 $html .= '<div class="' . $childrenWrapClass . '">';
             }
             $html .= '<ul class="level' . $childLevel . '">';
             /*if($childLevel==0)
              	{
                	 $html .= '<div class="submenu">';
              	}*/
             $html .= $this->_getHtml($child, $childrenWrapClass);
             /*if($childLevel==0)
               {
                 $html .= '</div>';
               }*/
             $html .= '</ul>';
             if (!empty($childrenWrapClass)) {
                 $html .= '</div>';
             }
         }
         $html .= '</li>';
         $counter++;
     }
     return $html;
 }
Example #15
0
 /**
  * Checks whether category belongs to active category's path
  *
  * @param Varien_Data_Tree_Node $category
  * @return bool
  */
 protected function _isActiveMenuCategory($category)
 {
     $catalogLayer = Mage::getSingleton('catalog/layer');
     if (!$catalogLayer) {
         return false;
     }
     $currentCategory = $catalogLayer->getCurrentCategory();
     if (!$currentCategory) {
         return false;
     }
     $categoryPathIds = explode(',', $currentCategory->getPathInStore());
     return in_array($category->getId(), $categoryPathIds);
 }
Example #16
0
 public function getPath(&$prevNodes = array())
 {
     if ($this->_parent) {
         array_push($prevNodes, $this);
         $this->_parent->getPath($prevNodes);
     }
     return $prevNodes;
 }
Example #17
0
 /**
  * Returns categories with include_in_mega_menu set to yes in Admin
  *
  * @return Varien_Data_Tree_Node_Collection
  */
 public function getCategories()
 {
     $root = Mage::app()->getStore()->getRootCategoryId();
     $tree = Mage::getResourceModel('catalog/category_tree');
     /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
     $nodes = $tree->loadNode($root);
     $categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect(array('name', 'url_key', 'is_active', 'mega_menu_block', 'mega_menu_sort_order'))->addAttributeToSort('mega_menu_sort_order', 'ASC')->addAttributeToFilter('include_in_mega_menu', 1);
     foreach ($categories as $category) {
         $categoryData = $this->getCategoryData($category);
         $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $nodes);
         $categoryChildren = $this->getSubcategories($category);
         foreach ($categoryChildren as $child) {
             $childData = $this->getCategoryData($child);
             $childCategoryNode = new Varien_Data_Tree_Node($childData, 'id', $tree, $nodes);
             $categoryNode->addChild($childCategoryNode);
         }
         $nodes->addChild($categoryNode);
     }
     return $nodes->getChildren();
 }
Example #18
0
 public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0)
 {
     $level++;
     $values[$node->getId()]['value'] = $node->getId();
     if ($level > 3) {
         $values[$node->getId()]['label'] = str_repeat("-", $level) . $node->getName();
     } else {
         $values[$node->getId()]['label'] = $node->getName();
     }
     foreach ($node->getChildren() as $child) {
         $values = $this->buildCategoriesMultiselectValues($child, $values, $level);
     }
     return $values;
 }
Example #19
0
 protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
 {
     $html = '';
     $children = $menuTree->getChildren();
     $parentLevel = $menuTree->getLevel();
     $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1;
     $counter = 1;
     $childrenCount = $children->count();
     $parentPositionClass = $menuTree->getPositionClass();
     $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-';
     foreach ($children as $child) {
         $child->setLevel($childLevel);
         $child->setIsFirst($counter == 1);
         $child->setIsLast($counter == $childrenCount);
         $child->setPositionClass($itemPositionClassPrefix . $counter);
         $outermostClassCode = '';
         $outermostClass = $menuTree->getOutermostClass();
         if ($childLevel == 0 && $outermostClass) {
             $outermostClassCode = ' class="' . $outermostClass . '" ';
             $child->setClass($outermostClass);
         }
         $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>';
         $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '  class="nav-link">' . $this->escapeHtml($child->getName()) . '</a>';
         if ($child->hasChildren()) {
             if (!empty($childrenWrapClass)) {
                 $html .= '<div class="' . $childrenWrapClass . '">';
             }
             $html .= '<ul class="level' . $childLevel . '">';
             $html .= $this->_getHtml($child, $childrenWrapClass);
             $html .= '</ul>';
             if (!empty($childrenWrapClass)) {
                 $html .= '</div>';
             }
             $html .= '<span class="subnav-toggle"><i class="icon icon-angle-down"></i><i class="icon icon-angle-up"></i></span>';
         }
         $html .= '</li>';
         $counter++;
     }
     return $html;
 }
Example #20
0
 protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass)
 {
     $html = '';
     $children = $menuTree->getChildren();
     foreach ($children as $child) {
         $menu_class = "";
         if ($child->hasChildren()) {
             $menu_class = "has-submenu";
         }
         $html .= '<li class="' . $menu_class . '"">';
         $html .= '<a href="' . $child->getUrl() . '"><span>' . $this->escapeHtml($child->getName()) . '</span></a>';
         if ($child->hasChildren()) {
             $html .= '<ul class="left-submenu">
                 <li class="back"><a href="#">' . $this->__('Back') . '</a></li>';
             $html .= '<li><a href="' . $child->getUrl() . '">' . $this->__('View All ') . $this->escapeHtml($child->getName()) . '</a></li>';
             $html .= $this->_getHtml($child, $childrenWrapClass);
             $html .= '</ul>';
         }
         $html .= '</li>';
     }
     return $html;
 }
Example #21
0
 function nodeToArray(Varien_Data_Tree_Node $node)
 {
     $result = array();
     $result['category_id'] = $node->getId();
     $result['parent_id'] = $node->getParentId();
     $result['name'] = $node->getName();
     $result['is_active'] = $node->getIsActive();
     $result['position'] = $node->getPosition();
     $result['level'] = $node->getLevel();
     $result['children'] = array();
     foreach ($node->getChildren() as $child) {
         $result['children'][] = $this->nodeToArray($child);
     }
     return $result;
 }
Example #22
0
 /**
  * Recursively adds CMS pages to top menu
  *
  * @param Varien_Data_Tree_Node_Collection|array $pages
  * @param Varien_Data_Tree_Node $parentPageNode
  * @param Mage_Page_Block_Html_Topmenu $menuBlock
  * @param bool $addTags
  */
 protected function _addPagesToMenu($pages, $parentPageNode, $menuBlock, $addTags = false)
 {
     $pageModel = Mage::getModel('cms/page');
     foreach ($pages as $page) {
         if (!$page->getIsActive() || !$page->getIncludeInMenu() || !$this->_isAllowed($page)) {
             continue;
         }
         $nodeId = 'page-node-' . $page->getId();
         $pageModel->setId($page->getId());
         if ($addTags) {
             $menuBlock->addModelTags($pageModel);
         }
         $tree = $parentPageNode->getTree();
         $pageData = array('name' => $page->getTitle(), 'id' => $nodeId, 'url' => $page->getUrl(), 'is_active' => $this->_isActiveMenuPage($page));
         $pageNode = new Varien_Data_Tree_Node($pageData, 'id', $tree, $parentPageNode);
         $parentPageNode->addChild($pageNode);
         $children = $page->getChildren();
         if (Mage::helper('cms/page')->isPermissionsEnabled($this->_helper->getStore())) {
             $children->addPermissionsFilter($this->_helper->getCustomerGroupId());
         }
         $this->_addPagesToMenu($children, $pageNode, $menuBlock, $addTags);
     }
 }
Example #23
0
 /**
  * @param Varien_Data_Tree_Node $node
  * @param array $values
  * @param int $level
  * @return array
  */
 protected function _buildCategoriesValues(Varien_Data_Tree_Node $node, $values, $level = 0)
 {
     ++$level;
     $values[$node->getId()]['value'] = $node->getId();
     $values[$node->getId()]['label'] = str_repeat('--', $level) . $node->getName();
     foreach ($node->getChildren() as $child) {
         $values = $this->_buildCategoriesValues($child, $values, $level);
     }
     return $values;
 }
Example #24
0
 private function nodeToArray(Varien_Data_Tree_Node $node)
 {
     $result = array();
     $category = Mage::getModel('catalog/category')->load($node->getId());
     if ($category->getAvailableForSupplier() == 1) {
         $result['category_id'] = $node->getId();
         $result['parent_id'] = $node->getParentId();
         $result['name'] = $node->getName();
         $result['is_active'] = $node->getIsActive();
         $result['position'] = $node->getPosition();
         $result['level'] = $node->getLevel();
     }
     $result['children'] = array();
     foreach ($node->getChildren() as $child) {
         $result['children'][] = $this->nodeToArray($child);
     }
     return $result;
 }
Example #25
0
 protected function _getMenuItemClasses(Varien_Data_Tree_Node $item)
 {
     $classes = array();
     $classes[] = 'level' . $item->getLevel();
     $classes[] = $item->getPositionClass();
     if ($item->getIsFirst()) {
         $classes[] = 'first';
     }
     if ($item->getIsActive()) {
         $classes[] = 'li_on';
     }
     if ($item->getIsLast()) {
         $classes[] = 'last';
     }
     if ($item->getClass()) {
         $classes[] = $item->getClass();
     }
     if ($item->hasChildren()) {
         $classes[] = 'parent';
     }
     return $classes;
 }
 public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0)
 {
     $nonEscapableNbspChar = html_entity_decode('&#160;', ENT_NOQUOTES, 'UTF-8');
     $level++;
     $values[$node->getId()]['value'] = $node->getId();
     $values[$node->getId()]['label'] = str_repeat($nonEscapableNbspChar, ($level - 1) * 5) . $node->getName();
     foreach ($node->getChildren() as $child) {
         $values = $this->buildCategoriesMultiselectValues($child, $values, $level);
     }
     return $values;
 }
Example #27
0
 public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0)
 {
     $level++;
     if ($level == 3) {
         //we have to show only third level category in drop down
         $values[$node->getId()]['value'] = $node->getId();
         $values[$node->getId()]['label'] = $node->getName();
     }
     foreach ($node->getChildren() as $child) {
         $values = $this->buildCategoriesMultiselectValues($child, $values, $level);
     }
     return $values;
 }
 /** @param Varien_Data_Tree_Node $category */
 function categoryIsRoot($category)
 {
     return $category->getId() == Mage::app()->getStore()->getRootCategoryId();
 }
Example #29
0
 /**
  * Convert categories tree to array recursively
  *
  * @param  Varien_Data_Tree_Node $node
  * @return array
  */
 protected function _getNodesArray($node)
 {
     $result = array('id' => (int) $node->getId(), 'parent_id' => (int) $node->getParentId(), 'children_count' => (int) $node->getChildrenCount(), 'is_active' => (bool) $node->getIsActive(), 'name' => $node->getName(), 'level' => (int) $node->getLevel(), 'product_count' => (int) $node->getProductCount());
     if (is_array($this->_allowedCategoryIds) && !in_array($result['id'], $this->_allowedCategoryIds)) {
         $result['disabled'] = true;
     }
     if ($node->hasChildren()) {
         $result['children'] = array();
         foreach ($node->getChildren() as $childNode) {
             $result['children'][] = $this->_getNodesArray($childNode);
         }
     }
     $result['cls'] = ($result['is_active'] ? '' : 'no-') . 'active-category';
     $result['expanded'] = !empty($result['children']);
     return $result;
 }
 protected function _addChildNodes($children, $path, $parentNode, $withChildren = false, $level = 0)
 {
     if (isset($children[$path])) {
         foreach ($children[$path] as $child) {
             $nodeId = isset($child[$this->_idField]) ? $child[$this->_idField] : false;
             if ($parentNode && $nodeId && ($node = $parentNode->getChildren()->searchById($nodeId))) {
                 $node->addData($child);
             } else {
                 $node = new Varien_Data_Tree_Node($child, $this->_idField, $this, $parentNode);
                 $node->setLevel($node->getData($this->_levelField));
                 $node->setPathId($node->getData($this->_pathField));
                 $this->addNode($node, $parentNode);
             }
             if ($withChildren) {
                 $this->_loaded = false;
                 $node->loadChildren(1);
                 $this->_loaded = false;
             }
             if ($path) {
                 $childrenPath = explode('/', $path);
             } else {
                 $childrenPath = array();
             }
             $childrenPath[] = $node->getId();
             $childrenPath = implode('/', $childrenPath);
             $this->_addChildNodes($children, $childrenPath, $node, $withChildren, $level + 1);
         }
     }
 }