예제 #1
0
 protected function processNodes(&$nodes, $uri, $level = 1, $label = 'level', $type = null)
 {
     $hasActive = false;
     foreach ($nodes as &$node) {
         $node['url'] = \CMF::link($node['url']);
         $node['active'] = ltrim($node['url'], "/") == ltrim($uri, "/");
         $node['parent_active'] = false;
         if (isset($node['type'])) {
             $node['type'] = \Inflector::classify($node['type']);
         } else {
             if (!is_null($type)) {
                 $node['type'] = $type;
             }
         }
         if (isset($node['__children']) && count($node['__children']) > 0) {
             $newlevel = $level + 1;
             $node['parent_active'] = $this->processNodes($node['__children'], $uri, $newlevel, $label, $type);
             if ($node['active'] || $node['parent_active']) {
                 $levelid = $label ? $label . '_level' . $newlevel : 'level' . $newlevel;
                 $parent = $node;
                 unset($parent['__children']);
                 if ($node['parent_active'] && $node['active']) {
                     $node['active'] = false;
                 }
                 $parent = array($parent);
                 $this->{$levelid} = array_merge($parent, $node['__children']);
             }
         }
         if ($node['parent_active'] || $node['active']) {
             $node['parent_active'] = $hasActive = true;
             $crumbs_label = $label ? $label . '_crumbs' : 'crumbs';
             $crumbs = $this->{$crumbs_label};
             $crumbs[$level - 1] = $node;
             $this->{$crumbs_label} = $crumbs;
         }
     }
     return $hasActive;
 }
예제 #2
0
 public function __toString()
 {
     return \CMF::link(strval($this->url));
 }