get the done view on a context and a project

This commit is contained in:
Reinier Balt 2011-06-17 14:30:32 +02:00
parent 35fe362b93
commit a58e832945
10 changed files with 96 additions and 14 deletions

View file

@ -224,6 +224,24 @@ class ApplicationController < ActionController::Base
def prefered_auth?
self.class.prefered_auth?
end
def get_done_today(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES})
start_of_this_day = Time.zone.now.beginning_of_day
completed_todos.completed_after(start_of_this_day).all(includes)
end
def get_done_this_week(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES})
start_of_this_week = Time.zone.now.beginning_of_week
start_of_this_day = Time.zone.now.beginning_of_day
completed_todos.completed_after(start_of_this_week).completed_before(start_of_this_day).all(includes)
end
def get_done_this_month(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES})
start_of_this_month = Time.zone.now.beginning_of_month
start_of_this_week = Time.zone.now.beginning_of_week
completed_todos.completed_after(start_of_this_month).completed_before(start_of_this_week).all(includes)
end
private

View file

@ -165,6 +165,29 @@ class ContextsController < ApplicationController
redirect_to :action => 'index'
end
def done_todos
@source_view = 'context'
@page_title = t('context.completed_tasks_title')
completed_todos = current_user.contexts.find(params[:id]).todos.completed
@done_today = get_done_today(completed_todos)
@done_this_week = get_done_this_week(completed_todos)
@done_this_month = get_done_this_month(completed_todos)
@count = @done_today.size + @done_this_week.size + @done_this_month.size
render :template => 'todos/done'
end
def all_done_todos
@source_view = 'context'
@page_title = t('context.completed_tasks_title')
@done = current_user.contexts.find(params[:id]).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
protected
def update_state_counts

View file

@ -215,6 +215,29 @@ class ProjectsController < ApplicationController
@contexts = current_user.contexts
end
def done_todos
@source_view = 'project'
@page_title = t('project.completed_tasks_title')
completed_todos = current_user.projects.find(params[:id]).todos.completed
@done_today = get_done_today(completed_todos)
@done_this_week = get_done_this_week(completed_todos)
@done_this_month = get_done_this_month(completed_todos)
@count = @done_today.size + @done_this_week.size + @done_this_month.size
render :template => 'todos/done'
end
def all_done_todos
@source_view = 'project'
@page_title = t('project.completed_tasks_title')
@done = current_user.projects.find(params[:id]).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
protected
def update_state_counts

View file

@ -472,15 +472,10 @@ class TodosController < ApplicationController
@page_title = t('todos.completed_tasks_title')
completed_todos = current_user.todos.completed
start_of_this_day = Time.zone.now.beginning_of_day
start_of_this_week = Time.zone.now.beginning_of_week
start_of_this_month = Time.zone.now.beginning_of_month
start_of_previous_month = (Time.zone.now.beginning_of_month - 1.day).beginning_of_month
includes = {:include => Todo::DEFAULT_INCLUDES}
@done_today = completed_todos.completed_after(start_of_this_day).all(includes)
@done_this_week = completed_todos.completed_after(start_of_this_week).completed_before(start_of_this_day).all(includes)
@done_this_month = completed_todos.completed_after(start_of_this_month).completed_before(start_of_this_week).all(includes)
@done_today = get_done_today(completed_todos)
@done_this_week = get_done_this_week(completed_todos)
@done_this_month = get_done_this_month(completed_todos)
@count = @done_today.size + @done_this_week.size + @done_this_month.size
end

View file

@ -275,5 +275,27 @@ module ApplicationHelper
javascript_include_tag("i18n/jquery.ui.datepicker-#{locale}.js")
end
end
def determine_done_path
case @controller.controller_name
when "contexts"
done_todos_context_path(@context)
when "projects"
done_todos_project_path(@project)
else
done_todos_path
end
end
def determine_all_done_path
case @controller.controller_name
when "contexts"
all_done_todos_context_path(@context)
when "projects"
all_done_todos_project_path(@project)
else
all_done_todos_path
end
end
end

View file

@ -44,7 +44,7 @@ class Todo < ActiveRecord::Base
named_scope :completed_before, lambda { |date| {:conditions => ["todos.completed_at < ? ", date] } }
STARRED_TAG_NAME = "starred"
DEFAULT_INCLUDES = [ :project, :context, :tags, :taggings, :pending_successors, :successors, :predecessors, :recurring_todo ]
DEFAULT_INCLUDES = [ :project, :context, :tags, :taggings, :recurring_todo ]
# regular expressions for dependencies
RE_TODO = /[^']+/

View file

@ -3,7 +3,7 @@
suppress_project ||= false
-%>
<div class="container completed" id="completed_container">
<div class=add_note_link><%= link_to "Show all", done_todos_path%></div>
<div class=add_note_link><%= link_to "Show all", determine_done_path%></div>
<h2>
<% if collapsible %>
<a href="#" class="container_toggle" id="toggle_completed"><%= image_tag("collapse.png") %></a>

View file

@ -26,6 +26,6 @@
<% end -%>
</div>
<p>You can see all completed actions <%= link_to "here", all_done_todos_path %></p>
<p>You can see all completed actions <%= link_to "here", determine_all_done_path %></p>
</div><!-- End of display_box -->

View file

@ -8,7 +8,7 @@ ActionController::Routing::Routes.draw do |map|
users.signup 'signup', :action => "new"
end
map.resources :contexts, :collection => {:order => :post} do |contexts|
map.resources :contexts, :collection => {:order => :post}, :member => {:done_todos => :get, :all_done_todos => :get} do |contexts|
contexts.resources :todos, :name_prefix => "context_"
end
@ -16,7 +16,8 @@ ActionController::Routing::Routes.draw do |map|
contexts.done_contexts 'contexts/done', :action => 'done'
end
map.resources :projects, :collection => {:order => :post, :alphabetize => :post, :actionize => :post} do |projects|
map.resources :projects, :collection => {:order => :post, :alphabetize => :post, :actionize => :post},
:member => {:done_todos => :get, :all_done_todos => :get} do |projects|
projects.resources :todos, :name_prefix => "project_"
end

View file

@ -54,6 +54,6 @@ module Tracks
def deferred_todo_count
self.todos.count_in_state(:deferred)
end
end
end