Commit 4ac8b06aabe5b2c1859b883d8b61f79d58f4d877

Authored by Victor Costa
2 parents 13a3feca e21366f1

Merge branch 'processed_tasks' into production

Conflicts:
	public/stylesheets/tasks.css
app/controllers/my_profile/tasks_controller.rb
... ... @@ -27,7 +27,26 @@ class TasksController < MyProfileController
27 27 end
28 28  
29 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 50 end
32 51  
33 52 def change_responsible
... ...
app/models/task.rb
... ... @@ -278,6 +278,10 @@ class Task &lt; ActiveRecord::Base
278 278 Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] }
279 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 285 def opened?
282 286 status == Task::Status::ACTIVE || status == Task::Status::HIDDEN
283 287 end
... ...
app/views/tasks/processed.html.erb
  1 +<%= stylesheet_link_tag 'tasks' %>
  2 +
  3 +<div class="task-processed">
1 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 32 <p>
4 33 <% if @tasks.empty? %>
5 34 <em><%= _('No processed tasks.') %></em>
6 35 <% else %>
7   - <ul>
  36 + <ul class="task-list">
8 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 48 <small>
12 49 <%= _('Created:') +' '+ show_date(item.created_at) %>
13 50 &nbsp; &#151; &nbsp;
... ... @@ -16,9 +53,12 @@
16 53 </li>
17 54 <% end %>
18 55 </ul>
  56 + <%= pagination_links(@tasks)%>
19 57 <% end %>
20 58 </p>
21 59  
22 60 <% button_bar do %>
23 61 <%= button(:back, _('Back'), :action => 'index') %>
24 62 <% end %>
  63 +
  64 +</div>
... ...
public/stylesheets/tasks.css
... ... @@ -94,3 +94,19 @@
94 94 height: 24px;
95 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 &lt; ActionController::TestCase
77 77  
78 78 assert_response :success
79 79 assert_template 'processed'
80   - assert_kind_of Array, assigns(:tasks)
  80 + assert !assigns(:tasks).nil?
81 81 end
82 82  
83 83 should 'display task created_at' do
... ...