Commit 4ac8b06aabe5b2c1859b883d8b61f79d58f4d877
Exists in
staging
and in
4 other branches
Merge branch 'processed_tasks' into production
Conflicts: public/stylesheets/tasks.css
Showing
5 changed files
with
84 additions
and
5 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
@@ -27,7 +27,26 @@ class TasksController < MyProfileController | @@ -27,7 +27,26 @@ class TasksController < MyProfileController | ||
27 | end | 27 | end |
28 | 28 | ||
29 | def processed | 29 | def processed |
30 | - @tasks = Task.to(profile).without_spam.closed.sort_by(&:created_at) | 30 | + @filter_requestor = params[:filter_requestor].presence |
31 | + @filter_type = params[:filter_type].presence | ||
32 | + @filter_text = params[:filter_text].presence | ||
33 | + @filter_status = params[:filter_status].presence | ||
34 | + @filter_created_from = Date.parse(params[:filter_created_from]) unless params[:filter_created_from].blank? | ||
35 | + @filter_created_until = Date.parse(params[:filter_created_until]) unless params[:filter_created_until].blank? | ||
36 | + @filter_closed_from = Date.parse(params[:filter_closed_from]) unless params[:filter_closed_from].blank? | ||
37 | + @filter_closed_until = Date.parse(params[:filter_closed_until]) unless params[:filter_closed_until].blank? | ||
38 | + | ||
39 | + @tasks = Task.to(profile).without_spam.closed.order(:created_at) | ||
40 | + @tasks = @tasks.of(@filter_type) | ||
41 | + @tasks = @tasks.where(:status => params[:filter_status]) unless @filter_status.blank? | ||
42 | + @tasks = @tasks.where('tasks.created_at >= ?', @filter_created_from.beginning_of_day) unless @filter_created_from.blank? | ||
43 | + @tasks = @tasks.where('tasks.created_at <= ?', @filter_created_until.end_of_day) unless @filter_created_until.blank? | ||
44 | + @tasks = @tasks.joins(:requestor).like('profiles.name', @filter_requestor) unless @filter_requestor.blank? | ||
45 | + @tasks = @tasks.like('tasks.data', @filter_text) unless @filter_text.blank? | ||
46 | + | ||
47 | + @tasks = @tasks.paginate(:per_page => Task.per_page, :page => params[:page]) | ||
48 | + | ||
49 | + @task_types = Task.closed_types_for(profile) | ||
31 | end | 50 | end |
32 | 51 | ||
33 | def change_responsible | 52 | def change_responsible |
app/models/task.rb
@@ -278,6 +278,10 @@ class Task < ActiveRecord::Base | @@ -278,6 +278,10 @@ class Task < ActiveRecord::Base | ||
278 | Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } | 278 | Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } |
279 | end | 279 | end |
280 | 280 | ||
281 | + def self.closed_types_for(profile) | ||
282 | + Task.to(profile).closed.select('distinct type').map { |t| [t.class.name, t.title] } | ||
283 | + end | ||
284 | + | ||
281 | def opened? | 285 | def opened? |
282 | status == Task::Status::ACTIVE || status == Task::Status::HIDDEN | 286 | status == Task::Status::ACTIVE || status == Task::Status::HIDDEN |
283 | end | 287 | end |
app/views/tasks/processed.html.erb
1 | +<%= stylesheet_link_tag 'tasks' %> | ||
2 | + | ||
3 | +<div class="task-processed"> | ||
1 | <h1><%= _("%s's processed tasks") % profile.name %></h1> | 4 | <h1><%= _("%s's processed tasks") % profile.name %></h1> |
2 | 5 | ||
6 | +<div class="task-processed-filter"> | ||
7 | +<% | ||
8 | + type_collection = [[nil, _('All')]] + @task_types | ||
9 | +%> | ||
10 | + <%= form_tag '#', :method => 'get' do %> | ||
11 | + <%= field_set_tag _('Filter'), :class => 'filter_fields' do %> | ||
12 | + <div> | ||
13 | + <%= labelled_select(_('Type of task')+': ', :filter_type, :first, :last, @filter_type, type_collection, {:id => 'filter-type'}) %> | ||
14 | + <%= labelled_select(_('Status:'), :filter_status, :last, :first, @filter_status, [[_('Any'), nil], [Task::Status.names[Task::Status::CANCELLED], 2], [Task::Status.names[Task::Status::FINISHED], 3] ]) %> | ||
15 | + </div> | ||
16 | + | ||
17 | + <div> | ||
18 | + <%= labelled_text_field(_('Text Filter:'), :filter_text, @filter_text) %> | ||
19 | + <%= labelled_text_field(_('Requestor Name:'), :filter_requestor, @filter_requestor) %> | ||
20 | + </div> | ||
21 | + | ||
22 | + <%= labelled_form_field(_('Creation date'), date_range_field(:filter_created_from, :filter_created_until, @filter_created_from, @filter_created_until, '%Y-%m-%d', { :change_month => true, :change_year => true, :date_format => 'yy-mm-dd' }, { :size => 14, :from_id => 'filter_created_from', :to_id => 'filter_created_until' })) %> | ||
23 | + <%= labelled_form_field(_('Processed date'), date_range_field(:filter_closed_from, :filter_closed_until, @filter_closed_from, @filter_closed_until, '%Y-%m-%d', { :change_month => true, :change_year => true, :date_format => 'yy-mm-dd' }, { :size => 14, :from_id => 'filter_closed_from', :to_id => 'filter_closed_until' })) %> | ||
24 | + | ||
25 | + <p> | ||
26 | + <%= submit_button(:search, _('Search')) %> | ||
27 | + </p> | ||
28 | + <% end %> | ||
29 | + <% end %> | ||
30 | +</div> | ||
31 | + | ||
3 | <p> | 32 | <p> |
4 | <% if @tasks.empty? %> | 33 | <% if @tasks.empty? %> |
5 | <em><%= _('No processed tasks.') %></em> | 34 | <em><%= _('No processed tasks.') %></em> |
6 | <% else %> | 35 | <% else %> |
7 | - <ul> | 36 | + <ul class="task-list"> |
8 | <% @tasks.each do |item| %> | 37 | <% @tasks.each do |item| %> |
9 | - <li> | ||
10 | - <strong><%= task_information(item) %></strong> <br/> | 38 | + <li class="task"> |
39 | + <div class="title"> | ||
40 | + <strong><%= task_information(item) %></strong> <br/> | ||
41 | + </div> | ||
42 | + <div> | ||
43 | + <span><%= _('Status: ') %></span> | ||
44 | + <span> | ||
45 | + <%= Task::Status.names[item.status] %> | ||
46 | + </span> | ||
47 | + </div> | ||
11 | <small> | 48 | <small> |
12 | <%= _('Created:') +' '+ show_date(item.created_at) %> | 49 | <%= _('Created:') +' '+ show_date(item.created_at) %> |
13 | — | 50 | — |
@@ -16,9 +53,12 @@ | @@ -16,9 +53,12 @@ | ||
16 | </li> | 53 | </li> |
17 | <% end %> | 54 | <% end %> |
18 | </ul> | 55 | </ul> |
56 | + <%= pagination_links(@tasks)%> | ||
19 | <% end %> | 57 | <% end %> |
20 | </p> | 58 | </p> |
21 | 59 | ||
22 | <% button_bar do %> | 60 | <% button_bar do %> |
23 | <%= button(:back, _('Back'), :action => 'index') %> | 61 | <%= button(:back, _('Back'), :action => 'index') %> |
24 | <% end %> | 62 | <% end %> |
63 | + | ||
64 | +</div> |
public/stylesheets/tasks.css
@@ -94,3 +94,19 @@ | @@ -94,3 +94,19 @@ | ||
94 | height: 24px; | 94 | height: 24px; |
95 | background: url('/images/loading-small.gif') right center no-repeat | 95 | background: url('/images/loading-small.gif') right center no-repeat |
96 | } | 96 | } |
97 | + | ||
98 | +.task-processed li { | ||
99 | + background-color: rgb(240, 240, 240); | ||
100 | + border-radius: 8px; | ||
101 | + margin: 10px 0; | ||
102 | + list-style-type: none; | ||
103 | + padding: 12px; | ||
104 | +} | ||
105 | + | ||
106 | +.task-processed ul { | ||
107 | + padding: 0; | ||
108 | +} | ||
109 | + | ||
110 | +.task-processed .task-list .task .title { | ||
111 | + border-bottom: 1px solid rgb(221, 221, 221); | ||
112 | +} |
test/functional/tasks_controller_test.rb
@@ -77,7 +77,7 @@ class TasksControllerTest < ActionController::TestCase | @@ -77,7 +77,7 @@ class TasksControllerTest < ActionController::TestCase | ||
77 | 77 | ||
78 | assert_response :success | 78 | assert_response :success |
79 | assert_template 'processed' | 79 | assert_template 'processed' |
80 | - assert_kind_of Array, assigns(:tasks) | 80 | + assert !assigns(:tasks).nil? |
81 | end | 81 | end |
82 | 82 | ||
83 | should 'display task created_at' do | 83 | should 'display task created_at' do |