diff --git a/app/models/user.rb b/app/models/user.rb index 5776d14d..1da1f0ba 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -60,19 +60,23 @@ class User < ActiveRecord::Base return projects end 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 = scope_conditions[:state] ? "AND projects.state = '#{scope_conditions[:state]}' " : "" + projects_with_active_todos = Project.find_by_sql([ + "SELECT projects.id, count(todos.id) as p_count " + + "FROM projects " + + "LEFT OUTER JOIN todos ON todos.project_id = projects.id "+ + "WHERE projects.user_id = ? AND " + + "NOT (todos.state='completed' OR todos.state='deferred' OR todos.state='pending') " + 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 + " GROUP BY projects.id ORDER by p_count DESC",user_id]) + all_project_ids = Project.find_by_sql([ + "SELECT id FROM projects WHERE projects.user_id = ? " + query_state, user_id + ]) + ids_in_new_positions = projects_with_active_todos.map{|p| p.id} + ids_of_unselected_projects = all_project_ids.map{|p| p.id} - ids_in_new_positions + self.update_positions(ids_in_new_positions + ids_of_unselected_projects) + + return find(:all, :conditions => scope_conditions) end end has_many :active_projects, diff --git a/app/views/projects/_project_state_group.rhtml b/app/views/projects/_project_state_group.rhtml index 9ac672fb..ba84cd0c 100644 --- a/app/views/projects/_project_state_group.rhtml +++ b/app/views/projects/_project_state_group.rhtml @@ -2,10 +2,10 @@

<%= project_state_group.length %><%= t('states.'+state+'_plural' )%> <%= t('common.projects') %>

diff --git a/config/locales/nl.yml b/config/locales/nl.yml index c2c320c5..a22fdb34 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -26,12 +26,12 @@ nl: drag_handle: SLEEP sort: by_task_count_title: Sorteer op aantal acties - by_task_count_title_confirm: Weet u zeker dat u deze projecten alphabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. - alphabetically: Alphabetisch + by_task_count_title_confirm: Weet u zeker dat u deze op aantal acties wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. + alphabetically: Alfabetisch sort: Sorteer - alphabetically_title: Sorteer projecten alphabetisch - alphabetically_confirm: Weet u zeker dat u deze projecten alphabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. - by_task_count: Bij aantal acties + alphabetically_title: Sorteer projecten alfabetisch + alphabetically_confirm: Weet u zeker dat u deze projecten alfabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. + by_task_count: Op aantal acties create: Maken contexts: Contexten fourth: Vierde