/** * Allow to create artifacts when the item comes from the planning tracker and if * the backlog tracker is at the root of the hierarchy. * * Example: * Given I have a planning Epic -> Release * And Epic has not parent (root of hierarchy) * Then I can create an Epic right in the release * * Counter example: * Given I have a planning Story -> Sprint * And I have a hierarchy Epic -> Story * Then I cannot create Story directly below Sprint * * @param array $allowed_trackers * @return type */ private function appendBacklogTrackerIfRoot(array $allowed_trackers) { $backlog_tracker = array(); if ($this->getTracker() == $this->planning->getPlanningTracker()) { $backlog_hierarchy = $this->planning->getBacklogTracker()->getHierarchy(); if ($backlog_hierarchy->isRoot($this->planning->getBacklogTrackerId())) { $backlog_tracker = array($this->planning->getBacklogTracker()); } } return array_merge($allowed_trackers, $backlog_tracker); }
public function selectedIfBacklogTracker() { if ($this->tracker->getId() == $this->planning->getBacklogTrackerId()) { return 'selected'; } }
protected function buildContentView(Planning_ViewBuilder $view_builder, Planning $planning, Project $project = null) { $already_planned_artifact_ids = $this->getAlreadyPlannedArtifactsIds(); $cross_search_query = $this->getCrossSearchQuery(); $backlog_tracker_ids = $this->hierarchy_factory->getHierarchy(array($planning->getBacklogTrackerId()))->flatten(); $backlog_actions_presenter = new Planning_BacklogActionsPresenter($planning->getBacklogTracker(), $this->milestone, $this->getPlanningRedirectToSelf()); $view = $view_builder->build($this->getCurrentUser(), $project, $cross_search_query, $already_planned_artifact_ids, $backlog_tracker_ids, $planning, $backlog_actions_presenter, $this->getPlanningRedirectToSelf()); return $view; }
/** * Checks whether or not this item can be assigned to a milestone. * * @return bool */ public function isPlannifiable() { return $this->getTracker()->getId() == $this->planning->getBacklogTrackerId(); }