Commit 46c033fc27f792e34561435b8309b94fc42d6a3a
1 parent
f7d6dd22
Exists in
master
and in
29 other branches
ActionItem371: user can now create tasks for its friends
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2407 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
10 changed files
with
88 additions
and
27 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
@@ -26,9 +26,18 @@ class TasksController < MyProfileController | @@ -26,9 +26,18 @@ class TasksController < MyProfileController | ||
26 | @ticket = Ticket.new(params[:ticket]) | 26 | @ticket = Ticket.new(params[:ticket]) |
27 | @ticket.requestor = profile | 27 | @ticket.requestor = profile |
28 | if request.post? | 28 | if request.post? |
29 | - @ticket.save! | ||
30 | - redirect_to :action => 'index' | 29 | + if @ticket.save |
30 | + redirect_to :action => 'index' | ||
31 | + end | ||
31 | end | 32 | end |
32 | end | 33 | end |
33 | 34 | ||
35 | + def list_requested | ||
36 | + @tasks = Task.find_all_by_requestor_id(profile.id) | ||
37 | + end | ||
38 | + | ||
39 | + def ticket_details | ||
40 | + @ticket = Ticket.find(:first, :conditions => ['(requestor_id = ? or target_id = ?) and id = ?', profile.id, profile.id, params[:id]]) | ||
41 | + end | ||
42 | + | ||
34 | end | 43 | end |
app/models/task.rb
@@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
12 | class Task < ActiveRecord::Base | 12 | class Task < ActiveRecord::Base |
13 | 13 | ||
14 | module Status | 14 | module Status |
15 | + include GetText | ||
15 | # the status of tasks just created | 16 | # the status of tasks just created |
16 | ACTIVE = 1 | 17 | ACTIVE = 1 |
17 | 18 | ||
@@ -20,6 +21,10 @@ class Task < ActiveRecord::Base | @@ -20,6 +21,10 @@ class Task < ActiveRecord::Base | ||
20 | 21 | ||
21 | # the status os a task that was successfully finished | 22 | # the status os a task that was successfully finished |
22 | FINISHED = 3 | 23 | FINISHED = 3 |
24 | + | ||
25 | + def self.names | ||
26 | + [nil, N_('Active'), N_('Cancelled'), N_('Finished')] | ||
27 | + end | ||
23 | end | 28 | end |
24 | 29 | ||
25 | belongs_to :requestor, :class_name => 'Person', :foreign_key => :requestor_id | 30 | belongs_to :requestor, :class_name => 'Person', :foreign_key => :requestor_id |
app/models/ticket.rb
1 | class Ticket < Task | 1 | class Ticket < Task |
2 | - | ||
3 | - serialize :data, Hash | ||
4 | - | ||
5 | - def data | ||
6 | - self[:data] ||= {} | ||
7 | - end | ||
8 | - | ||
9 | - def title | ||
10 | - data[:title] | ||
11 | - end | ||
12 | - | ||
13 | - def title= value | ||
14 | - data[:title] = value | ||
15 | - end | ||
16 | - | ||
17 | - def description | ||
18 | - data[:description] | ||
19 | - end | ||
20 | - | ||
21 | - def description= value | ||
22 | - data[:description] = value | ||
23 | - end | ||
24 | - | 2 | + acts_as_having_settings :field => :data |
3 | + settings_items :title, :description, :closing_statment | ||
25 | end | 4 | end |
@@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
1 | +<h2><%= _('Processing ticket: %s') % task.title %></h2> | ||
2 | + | ||
3 | +<%= task.description %> | ||
4 | + | ||
5 | +<% form_for('task', task, :url => { :action => 'close', :id => task.id}) do |f| %> | ||
6 | + | ||
7 | + <%= labelled_form_field(_('Closing statment'), f.text_area(:closing_statment) ) %> | ||
8 | + | ||
9 | + <div> | ||
10 | + <%= radio_button_tag(:decision, 'finish', true) %> | ||
11 | + <%= _('OK') %> | ||
12 | + </div> | ||
13 | + <div> | ||
14 | + <%= radio_button_tag(:decision, 'cancel', false) %> | ||
15 | + <%= _('Cancel') %> | ||
16 | + </div> | ||
17 | + | ||
18 | + <% button_bar do %> | ||
19 | + <%= submit_button(:ok, _('OK')) %> | ||
20 | + <% end %> | ||
21 | + | ||
22 | +<% end %> |
app/views/tasks/index.rhtml
@@ -14,5 +14,7 @@ | @@ -14,5 +14,7 @@ | ||
14 | 14 | ||
15 | <% button_bar do %> | 15 | <% button_bar do %> |
16 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> | 16 | <%= button(:edit, _('View processed tasks'), :action => 'processed') %> |
17 | + <%= button(:edit, _('View my requested tasks'), :action => 'list_requested') %> | ||
18 | + <%= button(:new, _('Create task'), :action => 'new') %> | ||
17 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> | 19 | <%= button(:back, _('Back to control panel'), :controller => 'profile_editor') %> |
18 | <% end %> | 20 | <% end %> |
@@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
1 | +<%= _('Tasks that I requested') %> | ||
2 | + | ||
3 | +<ul> | ||
4 | + <% @tasks.each do |task| %> | ||
5 | + <li> | ||
6 | + <strong><%= task.respond_to?(:title) ? link_to( task.title, :action => 'ticket_details', :id => task.id) : task.description %></strong><br/> | ||
7 | + <small> | ||
8 | + <%= _('Created:') + ' ' + show_date(task.created_at) %> | ||
9 | + — | ||
10 | + <%= _('Status:') + ' ' + task.status.to_s %> | ||
11 | + </small> | ||
12 | + </li> | ||
13 | + <% end %> | ||
14 | +</ul> | ||
15 | + | ||
16 | +<% button_bar do %> | ||
17 | + <%= button :back, _('Back'), :action => 'index' %> | ||
18 | +<% end %> |
app/views/tasks/new.rhtml
1 | <% labelled_form_for :ticket, @ticket do |f| %> | 1 | <% labelled_form_for :ticket, @ticket do |f| %> |
2 | <%= f.text_field :title %> | 2 | <%= f.text_field :title %> |
3 | <%= display_form_field( _('Owner: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) %> | 3 | <%= display_form_field( _('Owner: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) %> |
4 | - <%= f.text_area :description %> | 4 | + <%= f.text_area :description %> |
5 | 5 | ||
6 | <% button_bar do %> | 6 | <% button_bar do %> |
7 | - <%= submit_button('save', _('Create')) %> | 7 | + <%= submit_button('save', _('Create'), :cancel => {:action => 'index'}) %> |
8 | <% end %> | 8 | <% end %> |
9 | <% end %> | 9 | <% end %> |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +<h2><%= _('Ticket: %s') % @ticket.title %></h2> | ||
2 | +<p><small> | ||
3 | + <%= _('Created at %s by %s') % [@ticket.created_at.to_date, link_to(@ticket.requestor.name, @ticket.requestor.url)] %><br/> | ||
4 | + <%= _('Owner: %s') % link_to(@ticket.target.name, @ticket.target.url) %> | ||
5 | +</small></p> | ||
6 | + | ||
7 | +<p><%= _('Status: %s') % gettext(Task::Status.names[@ticket.status]) %></p> | ||
8 | + | ||
9 | +<div> | ||
10 | + <p><%= _('Description: %s') % @ticket.description %></p> | ||
11 | +</div> | ||
12 | + | ||
13 | +<% if @ticket.closing_statment %> | ||
14 | + <p><%= _('Closing statement: %s') % @ticket.closing_statment %></p> | ||
15 | +<% end %> | ||
16 | + | ||
17 | +<% button_bar do %> | ||
18 | + <%= button :back, _('Back'), :action => 'index' %> | ||
19 | +<% end %> |
test/functional/tasks_controller_test.rb
@@ -121,4 +121,10 @@ class TasksControllerTest < Test::Unit::TestCase | @@ -121,4 +121,10 @@ class TasksControllerTest < Test::Unit::TestCase | ||
121 | assert_equal profile, assigns(:ticket).requestor | 121 | assert_equal profile, assigns(:ticket).requestor |
122 | end | 122 | end |
123 | 123 | ||
124 | + should 'list tasks that this profile created' do | ||
125 | + task = Ticket.create!(:title => 'test', :requestor => profile) | ||
126 | + get :list_requested, :profile => profile.identifier | ||
127 | + | ||
128 | + assert_includes assigns(:tasks), task | ||
129 | + end | ||
124 | end | 130 | end |
test/unit/ticket_test.rb