diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index bc2ec16a..84e77b55 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -20,6 +20,7 @@ class ApplicationController < ActionController::Base before_filter :set_time_zone before_filter :set_zindex_counter before_filter :set_locale + append_before_filter :set_group_view_by prepend_before_filter :login_required prepend_before_filter :enable_mobile_content_negotiation after_filter :set_charset @@ -290,4 +291,8 @@ class ApplicationController < ActionController::Base render :template => 'todos/done' end + def set_group_view_by + @group_view_by = params['_group_view_by'] || cookies['group_view_by'] || 'context' + end + end diff --git a/app/controllers/contexts_controller.rb b/app/controllers/contexts_controller.rb index 98cb3dea..e8761822 100644 --- a/app/controllers/contexts_controller.rb +++ b/app/controllers/contexts_controller.rb @@ -42,6 +42,7 @@ class ContextsController < ApplicationController @max_completed = current_user.prefs.show_number_completed @done = @context.todos.completed.limit(@max_completed).reorder("todos.completed_at DESC, todos.created_at DESC").includes(Todo::DEFAULT_INCLUDES) @not_done_todos = @context.todos.active.reorder("todos.due IS NULL, todos.due ASC, todos.created_at ASC").includes(Todo::DEFAULT_INCLUDES) + @todos_without_project = @not_done_todos.select{|t| t.project.nil?} @deferred_todos = @context.todos.deferred.includes(Todo::DEFAULT_INCLUDES) @pending_todos = @context.todos.pending.includes(Todo::DEFAULT_INCLUDES) @@ -49,6 +50,9 @@ class ContextsController < ApplicationController @projects = current_user.projects @contexts = current_user.contexts + @projects_to_show = @projects.active + @contexts_to_show = [@context] + @count = @not_done_todos.count + @deferred_todos.count + @pending_todos.count @page_title = "TRACKS::Context: #{@context.name}" respond_to do |format| diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 13cb3572..ac978c05 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -131,12 +131,14 @@ class ProjectsController < ApplicationController @not_done_todos = @project.todos.active_or_hidden.includes(Todo::DEFAULT_INCLUDES) @deferred_todos = @project.todos.deferred.includes(Todo::DEFAULT_INCLUDES) @pending_todos = @project.todos.pending.includes(Todo::DEFAULT_INCLUDES) + @contexts_to_show = current_user.contexts.active + @projects_to_show = [@project] @done = {} @done = @project.todos.completed. reorder("todos.completed_at DESC"). limit(current_user.prefs.show_number_completed). - includes(Todo::DEFAULT_INCLUDES) unless current_user.prefs.show_number_completed == 0 + includes(Todo::DEFAULT_INCLUDES) unless @max_completed == 0 @count = @not_done_todos.size @down_count = @count + @deferred_todos.size + @pending_todos.size diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index e44aeb38..57378de1 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -3,7 +3,6 @@ class TodosController < ApplicationController skip_before_filter :login_required, :only => [:index, :tag] prepend_before_filter :login_or_feed_token_required, :only => [:index, :tag] append_before_filter :find_and_activate_ready, :only => [:index, :list_deferred] - append_before_filter :set_group_view_by, :only => [:index, :tag, :create, :list_deferred, :destroy, :defer, :update, :toggle_check] protect_from_forgery :except => :check_deferred diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb index 6d1b8a95..ca830024 100644 --- a/app/helpers/todos_helper.rb +++ b/app/helpers/todos_helper.rb @@ -21,13 +21,13 @@ module TodosHelper end end - def show_grouped_todos + def show_grouped_todos(settings = {}) collection = (@group_view_by == 'context') ? @contexts_to_show : @projects_to_show - render(:partial => collection, :locals => { :settings => { + render(:partial => collection, :locals => { :settings => settings.reverse_merge!({ :collapsible => true, :show_empty_containers => @show_empty_containers, :parent_container_type => @group_view_by - }}) + })}) end def default_collection_settings @@ -80,14 +80,14 @@ module TodosHelper :locals => {:settings => settings.reverse_merge!(default_collection_settings)} end - def show_todos_without_project(todos_without_project) + def show_todos_without_project(todos_without_project, settings = {}) render :partial => 'todos/collection', :object => todos_without_project, - :locals => {:settings => { + :locals => {:settings => settings.reverse_merge!({ :collapsible => true, :container_name => "without_project", :parent_container_type => "home" - } + }) } end diff --git a/app/views/contexts/_context.html.erb b/app/views/contexts/_context.html.erb index dab212aa..ceb8d908 100644 --- a/app/views/contexts/_context.html.erb +++ b/app/views/contexts/_context.html.erb @@ -3,7 +3,7 @@ # invalidate the cache every day because of staleness or # rendering of "due in x days" that change without touching updated at of the todo cache [context, @source_view, current_user.date.strftime("%Y%m%d"), @tag_name] do -%> +-%> <%= render :partial => 'todos/collection', :object => @not_done, diff --git a/app/views/contexts/show.html.erb b/app/views/contexts/show.html.erb index 4913b736..0c6c5d1e 100644 --- a/app/views/contexts/show.html.erb +++ b/app/views/contexts/show.html.erb @@ -2,9 +2,13 @@ suffix_completed = t('contexts.last_completed_in_context', :number=>prefs.show_number_completed) deferred_pending_options = {:append_descriptor => nil, :parent_container_type => 'context'} done_todo_options = {:append_descriptor => suffix_completed, :suppress_context => true, :parent_container_type => 'context'} + show_empty_containers = (@group_view_by == 'context') -%>