/** * Prepare a feature to be edited * * @param Feature $model * @return */ public function prepareForEdit($model) { $project = $this->projectService->getProject((int) $this->_getParam('projectid', $model->projectid)); $parentFeature = $this->projectService->getFeature((int) $this->_getParam('parent')); if ($project == null) { $this->flash("Specified project not found"); $this->renderView('error.php'); return; } $this->view->project = $project; if ($parentFeature) { $this->view->parentfeature = $parentFeature->id; } if ($model->id) { $this->view->linkedToFeatures = $this->itemLinkService->getLinkedItems($model, 'from', 'Feature'); $this->view->linkedFromFeatures = $this->itemLinkService->getLinkedItems($model, 'to', 'Feature'); } else { $model->milestone = $this->_getParam('milestone'); } $this->view->projects = $this->projectService->getProjectsForClient($project->clientid); $this->view->projectFeatures = $this->featureService->getFeatures(array('projectid=' => $project->id)); $this->view->projectTasks = $this->projectService->getTasks(array('projectid=' => $project->id), 'title asc'); $this->view->priorities = array('Must Have', 'Should Have', 'Would Like', 'Nice To Have'); $this->view->statuses = $model->constraints['status']->getValues(); $this->view->linkedTasks = array(); if ($model->id) { $this->view->linkedTasks = $this->itemLinkService->getLinkedItemsOfType($model, 'from', 'Task'); } parent::prepareForEdit($model); }
/** * Provides an overview of the traceability of this project */ public function traceabilityAction() { $project = $this->byId(); $type = $this->_getParam('type'); $targetId = $this->_getParam('targetid'); $dir = $this->_getParam('dir'); $selected = null; if ($type != null && $targetId != null) { $selected = $this->byId($targetId, $type); } if ($project == null && $selected == null) { $this->flash("Could not load project"); $this->redirect('index'); return; } $items = new ArrayObject(); // Start with getting all the links from requirements if ($selected == null) { // Just get all the features to start with $featureService = za()->getService('FeatureService'); /* @var $featureService FeatureService */ $items = $featureService->getFeatures(array('projectid=' => $project->id)); $this->view->linkedFrom = $project; } else { $items = $this->itemLinkService->getLinkedItems($selected, $dir); $this->view->linkedFrom = $selected; } $this->view->dir = $dir; $this->view->items = $items; $this->view->model = $project; $this->renderView('project/traceability.php'); }
/** * 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); } }