/**
  * Get a list of the new features
  *
  */
 public function featurelistAction()
 {
     $from = za()->getUser()->getLastLogin();
     $type = $this->_getParam('type');
     $date = $type == 'new' ? 'created' : 'updated';
     $this->view->features = $this->featureService->getFeatures(array($date . ' > ' => $from), "{$date} desc", 1, 10);
     $this->view->listType = $type;
     $this->renderRawView('feature/ajax-feature-list.php');
 }
Exemple #2
0
 /**
  * Override the edit action to supply some selectable relationships
  *
  * @param MappedObject $model
  */
 public function prepareForEdit($model = null)
 {
     if ($this->view->model == null) {
         $this->flash("Invalid request specified");
         $this->redirect('error');
         return;
     }
     $this->view->issueHistory = $this->issueService->getIssueHistory($this->view->model);
     $pid = (int) $this->_getParam('projectid');
     $cid = (int) $this->_getParam('clientid');
     if ($this->view->model->projectid) {
         $pid = $this->view->model->projectid;
     }
     if ($this->view->model->clientid) {
         $cid = $this->view->model->clientid;
     }
     // Which one?
     if ($pid) {
         $this->view->project = $this->projectService->getProject($pid);
         $this->view->client = $this->clientService->getClient($this->view->project->clientid);
         // figure out the releases available for this project
         $this->view->releases = $this->issueService->getProjectReleases($this->view->project);
     } else {
         if ($cid) {
             $this->view->client = $this->clientService->getClient($cid);
             $this->view->releases = array();
         }
     }
     if ($this->view->client != null) {
         $this->view->categories = $this->issueService->getIssueCategoriesForCompany($this->view->client);
     } else {
         $this->view->categories = array();
     }
     // if it's a new issue, and it's a normal user set it to be private by default
     // User can always specify a different one though
     if (!$this->view->model->id && za()->getUser()->hasRole(User::ROLE_USER)) {
         $this->view->model->isprivate = true;
     }
     $this->view->users = $this->userService->getUserList();
     $this->view->severities = $this->view->model->constraints['severity']->getValues();
     $this->view->types = $this->view->model->constraints['issuetype']->getValues();
     $this->view->statuses = $this->view->model->constraints['status']->getValues();
     if ($this->view->model->id) {
         $this->view->notes = $this->notificationService->getNotesFor($this->view->model);
         $this->view->existingWatch = $this->notificationService->getWatch(za()->getUser(), $this->view->model->id, 'Issue');
         $this->view->userStatuses = $this->view->model->getUserStatuses();
         $clientUsers = $this->userService->getUsersForClient($this->view->model->clientid);
         foreach ($this->view->users as $user) {
             $clientUsers->append($user);
         }
         $this->view->allUsers = $clientUsers;
         $this->view->subscribers = $this->notificationService->getSubscribers($this->view->model->id, 'Issue');
         $this->view->project = $this->projectService->getProject($this->view->model->projectid);
         $this->view->client = $this->clientService->getClient($this->view->model->clientid);
         $this->view->files = $this->issueService->getIssueFiles($this->view->model);
         $path = 'Clients/' . $this->view->client->title . '/Issues/' . $this->view->model->id;
         $this->view->filePath = $path;
         // Get all the features for this project
         $this->view->projectFeatures = $this->featureService->getFeatures(array('projectid=' => $this->view->model->projectid));
         $this->view->projectTasks = $this->projectService->getTasks(array('projectid=' => $this->view->project->id), 'title asc');
         $this->view->linkedTasks = $this->itemLinkService->getLinkedItems($this->view->model, 'from', 'Task');
         $this->view->linkedToFeatures = $this->itemLinkService->getLinkedItems($this->view->model, 'from', 'Feature');
         $this->view->linkedFromFeatures = $this->itemLinkService->getLinkedItems($this->view->model, 'to', 'Feature');
     }
     $this->view->clients = $this->clientService->getClients();
     if ($this->view->client) {
         $this->view->projects = $this->projectService->getProjectsForClient($this->view->client->id);
     }
 }
Exemple #3
0
 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;
 }