diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index cab0bd10..b2489c7d 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -188,16 +188,7 @@ class ProjectsController < ApplicationController def actionize @state = params['state'] - query_state = '' - query_state = 'AND project.state = "' + params['state'] +'" 'if @state - projects = Project.find_by_sql([ - "SELECT project.id, count(todo.id) as p_count " + - "FROM projects as project " + - "LEFT OUTER JOIN todos as todo ON todo.project_id = project.id "+ - "WHERE project.user_id = ? " + - query_state + - " GROUP BY project.id ORDER by p_count DESC",current_user.id]) - @projects = current_user.projects.actionize(projects,:state => @state) if @state + @projects = current_user.projects.actionize(current_user.id, :state => @state) if @state @contexts = current_user.contexts init_not_done_counts(['project']) end diff --git a/app/models/user.rb b/app/models/user.rb index 59e3cdbc..75aeb36d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -51,8 +51,18 @@ class User < ActiveRecord::Base self.update_positions(projects.map{ |p| p.id }) return projects end - def actionize(proj,scope_conditions = {}) - self.update_positions(proj.map{ |p| p.id }) + def actionize(user_id, scope_conditions = {}) + @state = scope_conditions[:state] + query_state = '' + query_state = 'AND project.state = "' + @state +'" 'if @state + projects = Project.find_by_sql([ + "SELECT project.id, count(todo.id) as p_count " + + "FROM projects as project " + + "LEFT OUTER JOIN todos as todo ON todo.project_id = project.id "+ + "WHERE project.user_id = ? AND NOT todo.state='completed' " + + query_state + + " GROUP BY project.id ORDER by p_count DESC",user_id]) + self.update_positions(projects.map{ |p| p.id }) projects = find(:all, :conditions => scope_conditions) return projects end diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 1b3fe5db..ee3df3e4 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -224,8 +224,8 @@ class ProjectsControllerTest < TodoContainerControllerTestBase u = users(:admin_user) post :actionize, :state => "active", :format => 'js' assert_equal 1, projects(:gardenclean).position - assert_equal 2, projects(:moremoney).position - assert_equal 3, projects(:timemachine).position + assert_equal 2, projects(:timemachine).position + assert_equal 3, projects(:moremoney).position end def test_alphabetize_sorts_active_projects_alphabetically