diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 7856235b..b8437feb 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -34,7 +34,40 @@ class ProjectsController < ApplicationController end def review - puts "MUAUAUAUAUAUAUAUA" + ## select project that need reviewing + @projects_to_review = Array.new + current_user.projects.each do |project| + @projects_to_review.push project if project.needs_review?(current_user) + end + + ## select project that are stalled + @stalled_projects = Array.new + current_user.projects.each do |project| + @stalled_projects.push project if project.stalled? + end + + ## select project that are stalled + @blocked_projects = Array.new + current_user.projects.each do |project| + @blocked_projects.push project if project.blocked? + end + + @contexts = current_user.contexts.all + init_not_done_counts(['project']) + init_project_hidden_todo_counts(['project']) + if params[:only_active_with_no_next_actions] + @projects = current_user.projects.active.select { |p| count_undone_todos(p) == 0 } + else + @projects = current_user.projects.all + end + + @page_title = t('projects.list_reviews') + @count = @projects_to_review.count + @blocked_projects.count + @stalled_projects.count + + @no_projects = current_user.projects.empty? + current_user.projects.cache_note_counts + @new_project = current_user.projects.build + render end def done diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index f0171d11..aadb3303 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -68,7 +68,8 @@ module ProjectsHelper end def needsreview_class(item) - ### FIXME: need to check to do this with active projects only + raise "item must be a Project " unless item.kind_of? Project + if item.needs_review?(current_user) return "needsreview" else @@ -76,5 +77,4 @@ module ProjectsHelper end end - end diff --git a/app/models/project.rb b/app/models/project.rb index 7a3730ab..8f9478a5 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -108,7 +108,28 @@ class Project < ActiveRecord::Base end def needs_review?(current_user) - return (last_reviewed < current_user.time ) # - current_user.prefs.review_period.days) + return false unless !nil? + return true if last_reviewed.nil? + return (active? && (last_reviewed < current_user.time - current_user.prefs.review_period.days)) + end + + def blocked? + ## mutually exclusive for stalled and blocked + return false if stalled? + is_blocked = true + todos.each do |t| + is_blocked = false if (!t.completed? && !t.deferred? && !t.pending?) + end + return is_blocked + end + + def stalled? + return true if todos.count == 0 + is_stalled = true + todos.each do |t| + is_stalled = false if (!t.completed?) + end + return is_stalled end diff --git a/app/views/layouts/standard.html.erb b/app/views/layouts/standard.html.erb index 86409650..f47cfa96 100644 --- a/app/views/layouts/standard.html.erb +++ b/app/views/layouts/standard.html.erb @@ -64,6 +64,7 @@