public function get_index() { $status = Input::get('status', 1); $projects_active = Project\User::active_projects(true); $projects_inactive = Project\User::inactive_projects(true); return $this->layout->with('active', 'projects')->nest('content', 'projects.index', array('projects' => $status == 1 ? $projects_active : $projects_inactive, 'active' => $status == 1 ? 'active' : 'archived', 'active_count' => (int) count($projects_active), 'archived_count' => (int) count($projects_inactive))); }
/** * Build the user's dashboard * * @param int $activity_limit * @return array */ public function dashboard($activity_limit = 5) { $dashboard = $users = $issues = $projects = $comments = $activity_type = array(); /* Load the activity types */ foreach (Activity::all() as $row) { $activity_type[$row->id] = $row; } /* Loop through all the active projects */ foreach (Project\User::active_projects() as $project) { $dashboard[$project->id] = array(); $projects[$project->id] = $project; /* Loop through all the logic from the project and cache all the needed data so we don't load the same data twice */ foreach (User\Activity::where('parent_id', '=', $project->id)->order_by('created_at', 'DESC')->take($activity_limit)->get() as $activity) { $dashboard[$project->id][] = $activity; switch ($activity->type_id) { case 2: if (!isset($issues[$activity->item_id])) { $issues[$activity->item_id] = Project\Issue::find($activity->item_id); } if (!isset($users[$activity->user_id])) { $users[$activity->user_id] = static::find($activity->user_id); } if (!isset($comments[$activity->action_id])) { $comments[$activity->action_id] = Project\Issue\Comment::find($activity->action_id); } break; case 5: if (!isset($issues[$activity->item_id])) { $issues[$activity->item_id] = Project\Issue::find($activity->item_id); } if (!isset($users[$activity->user_id])) { $users[$activity->user_id] = static::find($activity->user_id); } if (!isset($users[$activity->action_id])) { $users[$activity->action_id] = static::find($activity->action_id); } break; default: if (!isset($issues[$activity->item_id])) { $issues[$activity->item_id] = Project\Issue::find($activity->item_id); } if (!isset($users[$activity->user_id])) { $users[$activity->user_id] = static::find($activity->user_id); } break; } } } /* Loop through the projects and activity again, building the views for each activity */ $return = array(); foreach ($dashboard as $project_id => $activity) { $return[$project_id] = array('project' => $projects[$project_id], 'activity' => array()); foreach ($activity as $row) { switch ($row->type_id) { case 2: $return[$project_id]['activity'][] = View::make('activity/' . $activity_type[$row->type_id]->activity, array('issue' => $issues[$row->item_id], 'project' => $projects[$project_id], 'user' => $users[$row->user_id], 'comment' => $comments[$row->action_id], 'activity' => $row)); break; case 5: $return[$project_id]['activity'][] = View::make('activity/' . $activity_type[$row->type_id]->activity, array('issue' => $issues[$row->item_id], 'project' => $projects[$project_id], 'user' => $users[$row->user_id], 'assigned' => $users[$row->action_id], 'activity' => $row)); break; case 6: $tag_diff = json_decode($row->data, true); $return[$project_id]['activity'][] = View::make('activity/' . $activity_type[$row->type_id]->activity, array('issue' => $issues[$row->item_id], 'project' => $projects[$project_id], 'user' => $users[$row->user_id], 'tag_diff' => $tag_diff, 'tag_counts' => array('added' => sizeof($tag_diff['added_tags']), 'removed' => sizeof($tag_diff['removed_tags'])), 'activity' => $row)); break; default: $return[$project_id]['activity'][] = View::make('activity/' . $activity_type[$row->type_id]->activity, array('issue' => $issues[$row->item_id], 'project' => $projects[$project_id], 'user' => $users[$row->user_id], 'activity' => $row)); break; } } } return $return; }
<?php $active_projects = Project\User::active_projects(); if (count($active_projects) > 1) { ?> <form class="projects_selector"> <fieldset><label for="projects_select">Projects</label> <select name="projects_select" id="projects_select" onchange="if (this.value) window.location.href=this.value"> <?php foreach ($active_projects as $p) { $selected = $p->id == Project::current()->id ? 'selected' : ''; echo '<option value="' . $p->to() . '" ' . $selected . '>' . $p->name . '</option>'; } if (Auth::user()->permission('project-create')) { ?> <option value="<?php echo URL::to('projects/new'); ?> "><?php echo __('tinyissue.create_a_new_project'); ?> </option> <?php } ?> </select> </fieldset> </form> <?php } ?>
?> </a> <?php } ?> <?php echo __('tinyissue.active_projects'); ?> <span><?php echo __('tinyissue.active_projects_description'); ?> </span> </h2> <ul> <?php foreach (Project\User::active_projects() as $row) { ?> <li> <a href="<?php echo $row->to(); ?> "><?php echo $row->name; ?> </a> </li> <?php } ?> </ul>