diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 5bcc7091..bc2ec16a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -268,4 +268,26 @@ class ApplicationController < ActionController::Base end end + def all_done_todos_for(object) + object_name = object.class.name.downcase # context or project + @source_view = object_name + @page_title = t("#{object_name.pluralize}.all_completed_tasks_title", "#{object_name}_name".to_sym => object.name) + + @done = object.todos.completed.paginate :page => params[:page], :per_page => 20, :order => 'completed_at DESC', :include => Todo::DEFAULT_INCLUDES + @count = @done.size + render :template => 'todos/all_done' + end + + def done_todos_for(object) + object_name = object.class.name.downcase # context or project + @source_view = object_name + eval("@#{object_name} = object") + @page_title = t("#{object_name.pluralize}.completed_tasks_title", "#{object_name}_name".to_sym => object.name) + + @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(object) + @count = @done_today.size + @done_rest_of_week.size + @done_rest_of_month.size + + render :template => 'todos/done' + end + end diff --git a/app/controllers/contexts_controller.rb b/app/controllers/contexts_controller.rb index 476e69ef..98cb3dea 100644 --- a/app/controllers/contexts_controller.rb +++ b/app/controllers/contexts_controller.rb @@ -154,24 +154,11 @@ class ContextsController < ApplicationController end def done_todos - @source_view = 'context' - @context = current_user.contexts.find(params[:id]) - @page_title = t('contexts.completed_tasks_title', :context_name => @context.name) - - @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(@context) - @count = @done_today.size + @done_rest_of_week.size + @done_rest_of_month.size - - render :template => 'todos/done' + done_todos_for current_user.contexts.find(params[:id]) end def all_done_todos - @source_view = 'context' - @context = current_user.contexts.find(params[:id]) - @page_title = t('contexts.all_completed_tasks_title', :context_name => @context.name) - - @done = @context.todos.completed.paginate :page => params[:page], :per_page => 20, :order => 'completed_at DESC', :include => Todo::DEFAULT_INCLUDES - @count = @done.size - render :template => 'todos/all_done' + all_done_todos_for current_user.contexts.find(params[:id]) end protected diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index ee521a95..13cb3572 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -303,24 +303,11 @@ class ProjectsController < ApplicationController end def done_todos - @source_view = 'project' - @project = current_user.projects.find(params[:id]) - @page_title = t('projects.completed_tasks_title', :project_name => @project.name) - - @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(@project) - @count = @done_today.size + @done_rest_of_week.size + @done_rest_of_month.size - - render :template => 'todos/done' + done_todos_for current_user.projects.find(params[:id]) end def all_done_todos - @source_view = 'project' - @project = current_user.projects.find(params[:id]) - @page_title = t('projects.all_completed_tasks_title', :project_name => @project.name) - - @done = @project.todos.completed.paginate :page => params[:page], :per_page => 20, :order => 'completed_at DESC', :include => Todo::DEFAULT_INCLUDES - @count = @done.size - render :template => 'todos/all_done' + all_done_todos_for current_user.projects.find(params[:id]) end protected