public function _extractItem($items) { $temp = array(); foreach ($items as $index => $item) { $temp[$index]['title'] = set::classicExtract($item, "Item.name"); $temp[$index]['url']['controller'] = set::classicExtract($item, "Item.controller"); $temp[$index]['url']['action'] = set::classicExtract($item, "Item.action"); if (set::classicExtract($item, "children")) { $temp[$index]['children'] = $this->_extractItem(set::classicExtract($item, "children")); } } return $temp; }
protected function _buildItem(&$item, $pos = -1, &$isActive = false) { $item = array_merge($this->defaults, $item); if ($item['separator']) { return $item['separator']; } if (is_null($item['title'])) { return ''; } if (!empty($item['permissions']) && !in_array($this->_group, (array) $item['permissions'])) { return ''; } $children = ''; $nowIsActive = false; if ($hasChildren = is_array($item['children'])) { $this->_depth++; $children = $this->build('children', array(), $item, $nowIsActive); $this->_depth--; } if ($children === '') { $hasChildren = false; } $check = false; if (isset($item['url'])) { if ($item['partialMatch']) { $check = strpos(Router::normalize($this->here), Router::normalize($item['url'])) === 0; } else { $check = Router::normalize($this->here) === Router::normalize($item['url']); } } $isActive = $nowIsActive || $check; $arrClass = array(); if ($pos === 0) { $arrClass[] = $this->settings['firstClass']; } if ($isActive) { $arrClass[] = $this->settings['activeClass']; } if ($hasChildren) { $arrClass[] = $this->settings['childrenClass']; } if ($this->settings['evenOdd']) { $arrClass[] = $pos & 1 ? 'even' : 'odd'; } $class = ''; $arrClass = array_filter($arrClass); if (isset($item['class'])) { if (is_array($item['class'])) { $arrClass = array_merge($arrClass, $item['class']); } else { $arrClass[] = $item['class']; } } if (!empty($arrClass)) { $class = ' class="' . implode(' ', $arrClass) . '"'; } if (isset($item['id'])) { $class = ' id="' . $item['id'] . '"' . $class; } if (is_null($item['url'])) { $url = sprintf($this->settings['noLinkFormat'], (isset($item['icon']) && $item['icon'] != '' ? "<i class='{$item['icon']}'></i> " : "") . "{$item['title']}"); } else { $title = (set::classicExtract($item, 'icon') ? "<i class=\"{$item['icon']}\"></i> " : "") . "<span>{$item['title']}</span>"; $url = $this->Html->link($title, $item['url'], array('escape' => false)); } $pad = str_repeat("\t", $this->_depth); if ($hasChildren) { $urlPad = str_repeat("\t", $this->_depth + 1); $url = "\n" . $urlPad . $url; $children = "\n" . $children . $pad; } return sprintf('%s' . $this->settings['itemFormat'] . "\n", $pad, $class, $url, $children); }