Ejemplo n.º 1
0
 public function post_project_issue()
 {
     $issues = Input::get('weights');
     foreach ($issues as $index => $id) {
         $issue = Project\Issue::load_issue($id);
         $issue->weight = $index;
         $issue->save();
     }
     return json_encode($issues);
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 public function post_issue_assign()
 {
     Project\Issue::find(Input::get('issue_id'))->reassign(Input::get('user_id'));
 }
Ejemplo n.º 4
0
echo __('tinyissue.label_closed');
?>
</label> <?php 
echo __('tinyissue.by');
?>
 <strong><?php 
echo $user->firstname . ' ' . $user->lastname;
?>
</strong> 
				<span class="time">
					<?php 
echo date('F jS \\a\\t g:i A', strtotime($activity->created_at));
?>
				</span>
				<?php 
if (Project\Issue::current()->status == 0 && Auth::user()->permission('issue-modify')) {
    ?>
				<a href="<?php 
    echo Project\Issue::current()->to('status?status=1');
    ?>
" class="button success"><?php 
    echo __('tinyissue.reopen');
    ?>
</a>				
				<?php 
}
?>
		</div>
	</div>
</li>
Ejemplo n.º 5
0
 /**
  * Delete a project and it's children
  *
  * @param  Project  $project
  * @return void
  */
 public static function delete_project($project)
 {
     $id = $project->id;
     $project->delete();
     /* Delete all children from the project */
     Project\Issue::where('project_id', '=', $id)->delete();
     Project\Issue\Comment::where('project_id', '=', $id)->delete();
     Project\User::where('project_id', '=', $id)->delete();
     User\Activity::where('parent_id', '=', $id)->delete();
 }
Ejemplo n.º 6
0
Route::filter('ajax', function () {
    if (!Request::ajax()) {
        return Response::error('404');
    }
});
Route::filter('project', function () {
    // find project id from issue object
    if (Request::route()->parameters[0] == 0) {
        return;
    }
    Project::load_project(Request::route()->parameters[0]);
    if (!Project::current()) {
        return Response::error('404');
    }
});
Route::filter('issue', function () {
    Project\Issue::load_issue(Request::route()->parameters[1]);
    if (!Project\Issue::current()) {
        return Response::error('404');
    }
    // load project
    if (Request::route()->parameters[0] == 0) {
        Request::route()->parameters = array(Project\Issue::current()->project_id, Project\Issue::current()->id);
        Project::load_project(Request::route()->parameters[0]);
    }
});
Route::filter('permission', function ($permission) {
    if (!Auth::user()->permission($permission)) {
        return Response::error('500');
    }
});
Ejemplo n.º 7
0
 /**
  * Show general application stats
  * /administration
  *
  * @return View
  */
 public function get_index()
 {
     return $this->layout->with('active', 'dashboard')->nest('content', 'administration.index', array('users' => User::where('deleted', '=', 0)->count(), 'active_projects' => Project::where('status', '=', 1)->count(), 'archived_projects' => Project::where('status', '=', 0)->count(), 'issues' => Project\Issue::count_issues()));
 }
Ejemplo n.º 8
0
			</p>

			<?php 
    echo Form::hidden('session', Crypter::encrypt(Auth::user()->id));
    ?>
			<?php 
    echo Form::hidden('project_id', $project->id);
    ?>
			<?php 
    echo Form::hidden('token', md5($project->id . time() . \Auth::user()->id . rand(1, 100)));
    ?>
			<?php 
    echo Form::token();
    ?>
		</form>

	</div>
		
	</div>

	<?php 
} else {
    ?>
	<?php 
    echo HTML::link(Project\Issue::current()->to('status?status=1'), __('tinyissue.reopen_issue'));
    ?>
	<?php 
}
?>
</div>
Ejemplo n.º 9
0
    if (Request::forged()) {
        return Response::error('500');
    }
});
Route::filter('auth', function () {
    if (Auth::guest()) {
        return Redirect::to('login');
    }
});
Route::filter('ajax', function () {
    if (!Request::ajax()) {
        return Response::error('404');
    }
});
Route::filter('project', function () {
    Project::load_project(Request::route()->parameters[0]);
    if (!Project::current()) {
        return Response::error('404');
    }
});
Route::filter('issue', function () {
    Project\Issue::load_issue(Request::route()->parameters[1]);
    if (!Project\Issue::current()) {
        return Response::error('404');
    }
});
Route::filter('permission', function ($permission) {
    if (!Auth::user()->permission($permission)) {
        return Response::error('500');
    }
});
Ejemplo n.º 10
0
 /**
  * Change the status of a issue
  * /project/(:num)/issue/(:num)/status
  *
  * @return Redirect
  */
 public function get_status()
 {
     $status = Input::get('status', 0);
     if ($status == 0) {
         $message = 'This issue has been closed. It is now read-only.';
     } else {
         $message = 'This issue has been reopened. You can now work the issue.';
     }
     Project\Issue::current()->change_status($status);
     return Redirect::to(Project\Issue::current()->to())->with('notice', $message);
 }
Ejemplo n.º 11
0
 /**
  * Change the status of a issue
  * /project/(:num)/issue/(:num)/status
  *
  * @return Redirect
  */
 public function get_status()
 {
     $status = Input::get('status', 0);
     if ($status == 0) {
         $message = __('tinyissue.issue_has_been_closed');
     } else {
         $message = __('tinyissue.issue_has_been_reopened');
     }
     Project\Issue::current()->change_status($status);
     return Redirect::to(Project\Issue::current()->to())->with('notice', $message);
 }
Ejemplo n.º 12
0
 /**
  * Update a todo
  *
  * @param int       $user_id
  * @param int       $issue_id
  * @return array
  */
 public static function update_todo($issue_id = 0, $new_status = 1)
 {
     $user_id = Auth::user()->id;
     $todo = Todo::load_todo($issue_id, $user_id);
     if (!$todo) {
         return array('success' => FALSE, 'errors' => __('tinyissue.todos_err_loadfailed'));
     }
     // Sanity check on status value.
     // @TODO Handle N configurable status codes
     $new_status = (int) $new_status;
     if ($new_status >= 0 && $new_status <= 3) {
         $todo->status = $new_status;
         $todo->save();
         // Close issue if todo is moved to closed lane.
         if ($new_status == 0) {
             $issue = Project\Issue::find($issue_id);
             if (!empty($issue)) {
                 $issue->change_status(0);
             }
         }
         return array('success' => TRUE);
     } else {
         return array('success' => FALSE, 'errors' => __('tinyissue.todos_err_update'));
     }
 }