protected function getChildDataProject(Project $project, $options = null) { $data = array(); switch ($options) { case 'subprojects': $children = $project->getSubProjects(); foreach ($children as $child) { $item = new stdClass(); $item->id = get_class($child) . '-' . $child->id; $item->text = $child->title . ' <a href="' . build_url('project', 'view', array('id' => $child->id)) . '"><img src="' . resource('images/bullet_go.png') . '" /></a>'; $item->expanded = false; $item->classes = "project-item iconed"; $item->hasChildren = true; $data[] = $item; } break; case 'milestones': $children = $project->getMilestones(); foreach ($children as $child) { $item = new stdClass(); $item->id = get_class($child) . '-' . $child->id . '-tasks'; $item->text = $child->title . ' <a href="' . build_url('project', 'view', array('id' => $child->id)) . '"><img src="' . resource('images/bullet_go.png') . '" /></a>'; $item->expanded = false; $item->classes = "tree-milestone iconed"; $item->hasChildren = true; $data[] = $item; } break; case 'features': $items = $this->featureService->getFeatures(array('projectid=' => $project->id)); foreach ($items as $child) { $item = new stdClass(); $item->id = get_class($child) . '-' . $child->id . '-tasks'; $item->text = $child->title . ' <a href="' . build_url('feature', 'edit', array('id' => $child->id)) . '"><img src="' . resource('images/bullet_go.png') . '" /></a>'; $item->expanded = false; $item->classes = "tree-feature iconed"; $item->hasChildren = true; $data[] = $item; } break; case 'requests': $items = $this->issueService->getIssues(array('projectid=' => $project->id, 'status <> ' => Issue::STATUS_CLOSED)); foreach ($items as $child) { $item = new stdClass(); $item->id = get_class($child) . '-' . $child->id . '-tasks'; $item->text = $child->title . ' <a href="' . build_url('issue', 'edit', array('id' => $child->id)) . '"><img src="' . resource('images/bullet_go.png') . '" /></a>'; $item->expanded = false; $item->classes = "tree-request iconed"; $item->hasChildren = true; $data[] = $item; } break; case 'tasks': $items = $this->projectService->getTasks(array('projectid=' => $project->id, 'complete=' => 0)); foreach ($items as $child) { $item = new stdClass(); $item->id = get_class($child) . '-' . $child->id . ''; ob_start(); $this->view->percentageBar($child->getPercentage()); $bar = ob_get_clean(); $item->text = $bar . $child->title . ' <a href="' . build_url('task', 'edit', array('id' => $child->id)) . '"><img src="' . resource('images/bullet_go.png') . '" /></a>'; $item->expanded = false; $item->classes = "tree-task iconed"; $item->hasChildren = false; $data[] = $item; } break; default: $subProjects = $project->getSubProjects(); if (count($subProjects)) { $option = new stdClass(); $option->text = 'Sub Projects'; $option->id = get_class($project) . '-' . $project->id . '-subprojects'; $option->classes = "tree-folder iconed"; $option->hasChildren = true; $data[] = $option; } if ($project->hasMilestones()) { $option = new stdClass(); $option->text = 'Milestones'; $option->id = get_class($project) . '-' . $project->id . '-milestones'; $option->classes = "tree-folder iconed"; $option->hasChildren = true; $data[] = $option; } // see if there are features $items = $this->featureService->getFeatures(array('projectid=' => $project->id)); if (count($items)) { $option = new stdClass(); $option->text = 'Features'; $option->id = get_class($project) . '-' . $project->id . '-features'; $option->classes = "tree-folder iconed"; $option->hasChildren = true; $data[] = $option; } // see if there are requests $items = $this->issueService->getIssues(array('projectid=' => $project->id, 'status <> ' => Issue::STATUS_CLOSED)); if (count($items)) { $option = new stdClass(); $option->text = 'Requests'; $option->id = get_class($project) . '-' . $project->id . '-requests'; $option->classes = "tree-folder iconed"; $option->hasChildren = true; $data[] = $option; } break; } return $data; }