コード例 #1
0
ファイル: AclMenuComponent.php プロジェクト: manorms/MyHouse
 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;
 }
コード例 #2
0
ファイル: AclMenuHelper.php プロジェクト: manorms/MyHouse
 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);
 }