Commit 35dde2bd92d160d987a924341b59cfbea73b93fa
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'task_taggable' into production
Conflicts: public/stylesheets/tasks.css
Showing
5 changed files
with
57 additions
and
7 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
@@ -38,18 +38,33 @@ class TasksController < MyProfileController | @@ -38,18 +38,33 @@ class TasksController < MyProfileController | ||
38 | 38 | ||
39 | def close | 39 | def close |
40 | failed = {} | 40 | failed = {} |
41 | + save = false | ||
41 | 42 | ||
42 | if params[:tasks] | 43 | if params[:tasks] |
43 | params[:tasks].each do |id, value| | 44 | params[:tasks].each do |id, value| |
44 | decision = value[:decision] | 45 | decision = value[:decision] |
45 | - if request.post? && VALID_DECISIONS.include?(decision) && id && decision != 'skip' | 46 | + |
47 | + if value[:task].is_a?(Hash) && value[:task][:tag_list] | ||
48 | + | ||
46 | task = profile.find_in_all_tasks(id) | 49 | task = profile.find_in_all_tasks(id) |
47 | - begin | ||
48 | - task.update_attributes(value[:task]) | ||
49 | - task.send(decision) | ||
50 | - rescue Exception => ex | ||
51 | - message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" | ||
52 | - failed[ex.message] ? failed[ex.message] << message : failed[ex.message] = [message] | 50 | + task.tag_list = value[:task][:tag_list] |
51 | + value[:task].delete('tag_list') | ||
52 | + | ||
53 | + save = true | ||
54 | + end | ||
55 | + | ||
56 | + if request.post? | ||
57 | + if VALID_DECISIONS.include?(decision) && id && decision != 'skip' | ||
58 | + task ||= profile.find_in_all_tasks(id) | ||
59 | + begin | ||
60 | + task.update_attributes(value[:task]) | ||
61 | + task.send(decision) | ||
62 | + rescue Exception => ex | ||
63 | + message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" | ||
64 | + failed[ex.message] ? failed[ex.message] << message : failed[ex.message] = [message] | ||
65 | + end | ||
66 | + elsif save | ||
67 | + task.save! | ||
53 | end | 68 | end |
54 | end | 69 | end |
55 | end | 70 | 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 | acts_as_having_settings :field => :data | 14 | acts_as_having_settings :field => :data |
15 | + acts_as_ordered_taggable | ||
15 | 16 | ||
16 | module Status | 17 | module Status |
17 | # the status of tasks just created | 18 | # the status of tasks just created |
app/views/tasks/_task.html.erb
@@ -50,6 +50,13 @@ | @@ -50,6 +50,13 @@ | ||
50 | <%= render :partial => partial_for_class(task.class, nil, :reject_details), :locals => {:task => task, :f => f} %> | 50 | <%= render :partial => partial_for_class(task.class, nil, :reject_details), :locals => {:task => task, :f => f} %> |
51 | </div> | 51 | </div> |
52 | <% end %> | 52 | <% end %> |
53 | + | ||
54 | + <div class="formfieldline"> | ||
55 | + <div class="formfield tag-list-fields"> | ||
56 | + <%= labelled_text_field(_('Tags'),"tasks[#{task.id}][task][tag_list]", task.tag_list.to_s, :size => 36, :class => 'tag-list') %> | ||
57 | + </div> | ||
58 | + </div> | ||
59 | + | ||
53 | <% end %> | 60 | <% end %> |
54 | 61 | ||
55 | </div><!-- class="task_box" --> | 62 | </div><!-- class="task_box" --> |
app/views/tasks/index.html.erb
@@ -65,6 +65,13 @@ | @@ -65,6 +65,13 @@ | ||
65 | </p> | 65 | </p> |
66 | </ul> | 66 | </ul> |
67 | 67 | ||
68 | + <script> | ||
69 | + jQuery('.tag-list').inputosaurus({ | ||
70 | + autoCompleteSource: <%= "'/myprofile/#{profile.identifier}/cms/search_tags'," %> | ||
71 | + activateFinalResult : true | ||
72 | + }) | ||
73 | + </script> | ||
74 | + | ||
68 | <%= pagination_links(@tasks)%> | 75 | <%= pagination_links(@tasks)%> |
69 | 76 | ||
70 | <% button_bar do %> | 77 | <% button_bar do %> |
public/stylesheets/tasks.css
@@ -48,3 +48,23 @@ | @@ -48,3 +48,23 @@ | ||
48 | .task_responsible { | 48 | .task_responsible { |
49 | text-align: right; | 49 | text-align: right; |
50 | } | 50 | } |
51 | + | ||
52 | +/* Task tags list */ | ||
53 | + | ||
54 | +.formfieldline label { | ||
55 | + font-weight: bold; | ||
56 | + margin: 0 5px 0 10px; | ||
57 | +} | ||
58 | + | ||
59 | +.formfieldline .inputosaurus-container { | ||
60 | + vertical-align: middle; | ||
61 | +} | ||
62 | + | ||
63 | +.tag-list-fields input { | ||
64 | + background-color: #fff !important; | ||
65 | +} | ||
66 | + | ||
67 | +.formfield.tag-list-fields .ui-autocomplete-loading { | ||
68 | + background: url('/images/loading-small.gif') right center no-repeat !important; | ||
69 | + background-color: #fff !important; | ||
70 | +} |