@@ -239,6 +239,7 @@ |
||
239 | 239 |
|
240 | 240 |
.mission-agent-status { |
241 | 241 |
height: 220px; |
242 |
+ padding: 8px; |
|
242 | 243 |
} |
243 | 244 |
|
244 | 245 |
.open-agent-role { |
@@ -246,7 +247,11 @@ |
||
246 | 247 |
text-align: center; |
247 | 248 |
} |
248 | 249 |
|
249 |
-.open-agent-role p { |
|
250 |
+.assigned-agent-role { |
|
251 |
+ background-color: @bg-ligh-gray; |
|
252 |
+} |
|
253 |
+ |
|
254 |
+.mission-agent-status p.agent-description { |
|
250 | 255 |
font-family: Helvetica-LightOblique; |
251 | 256 |
font-size: 14px; |
252 | 257 |
color: #1D1D26; |
@@ -256,4 +261,32 @@ |
||
256 | 261 |
.open-agent-role .btn-spacer { |
257 | 262 |
padding-top: 55px; |
258 | 263 |
padding-bottom: 70px; |
259 |
-} |
|
264 |
+} |
|
265 |
+ |
|
266 |
+.mission-agent-status h4 { |
|
267 |
+ margin-bottom: 2px; |
|
268 |
+} |
|
269 |
+ |
|
270 |
+.mission-agent-status p { |
|
271 |
+ font-family: Avenir-Light; |
|
272 |
+ font-size: 21px; |
|
273 |
+ color: #1D1D26; |
|
274 |
+ line-height: 29px; |
|
275 |
+} |
|
276 |
+ |
|
277 |
+.mission-agent-status p.agent-stats { |
|
278 |
+ font-family: Avenir-Medium; |
|
279 |
+ font-size: 14px; |
|
280 |
+ color: #1D1D26; |
|
281 |
+ line-height: 19px; |
|
282 |
+} |
|
283 |
+ |
|
284 |
+.agent-points { |
|
285 |
+ font-size: 21px; |
|
286 |
+ padding-right: 3px; |
|
287 |
+} |
|
288 |
+ |
|
289 |
+p.agent-stats i { |
|
290 |
+ font-size: 30px; |
|
291 |
+ padding-right: 10px; |
|
292 |
+} |
@@ -70,6 +70,22 @@ class MissionsController < ApplicationController |
||
70 | 70 |
format.json { head :no_content } |
71 | 71 |
end |
72 | 72 |
end |
73 |
+ |
|
74 |
+ def take_agent_role |
|
75 |
+ mission = Mission.find(params[:id]) |
|
76 |
+ agent = mission.mission_agents.find(params[:agent]) |
|
77 |
+ candidate = MissionCandidate.create!(user: current_user, mission_agent: agent, status: 'closed', mode: 'take_agent_role') |
|
78 |
+ agent.user = current_user |
|
79 |
+ respond_to do |format| |
|
80 |
+ if agent.save |
|
81 |
+ format.html { redirect_to mission_agent_details_path(mission, agent), notice: (t 'mission.take_agent_profile_confirmation') } |
|
82 |
+ format.json { head :no_content } |
|
83 |
+ else |
|
84 |
+ format.html { redirect_to mission_agent_details_path(mission, agent), alert: (t 'mission.take_agent_profile_error') } |
|
85 |
+ format.json { render json: @mission.errors, status: :unprocessable_entity } |
|
86 |
+ end |
|
87 |
+ end |
|
88 |
+ end |
|
73 | 89 |
|
74 | 90 |
private |
75 | 91 |
# Use callbacks to share common setup or constraints between actions. |
@@ -7,4 +7,13 @@ class MissionAgent < ActiveRecord::Base |
||
7 | 7 |
|
8 | 8 |
accepts_nested_attributes_for :agent_steps, allow_destroy:true |
9 | 9 |
accepts_nested_attributes_for :mission_candidates |
10 |
+ |
|
11 |
+ def is_assigned |
|
12 |
+ if self.mission_candidates.find_all_by_status(1).last == nil |
|
13 |
+ return false |
|
14 |
+ else |
|
15 |
+ return true |
|
16 |
+ end |
|
17 |
+ end |
|
18 |
+ |
|
10 | 19 |
end |
@@ -21,10 +21,8 @@ |
||
21 | 21 |
<%= content_tag(:div, class: 'container container-last') do %> |
22 | 22 |
<%= content_tag(:div, class: 'row') do %> |
23 | 23 |
<%= content_tag(:div, class: 'span12') do %> |
24 |
- <%= bootstrap_flash %> |
|
25 |
- |
|
26 | 24 |
<% # Page Content %> |
27 |
- |
|
25 |
+ <%= bootstrap_flash %> |
|
28 | 26 |
<%= content_tag(:div, class: 'page-header page-header-type') do %> |
29 | 27 |
<%= content_tag(:small, (t 'mission.agent')+':') %> |
30 | 28 |
<%= content_tag(:h2) do %> |
@@ -41,11 +39,34 @@ |
||
41 | 39 |
<%= @agent.briefing.html_safe %> |
42 | 40 |
<% end %> |
43 | 41 |
<%= content_tag(:div, class: 'span4') do %> |
44 |
- <%= content_tag(:div, class: 'mission-agent-status open-agent-role') do %> |
|
45 |
- <%= content_tag(:div, class: 'btn-spacer') do %> |
|
46 |
- <%= link_to (t 'mission.take_agent_role'), '#', class: 'btn btn-large' %> |
|
42 |
+ <% if @agent.is_assigned %> |
|
43 |
+ <%= content_tag(:div, class: 'mission-agent-status assigned-agent-role') do %> |
|
44 |
+ <%= content_tag(:h4, (t 'mission.agent')+':') %> |
|
45 |
+ <%= content_tag(:div, class: 'pull-left') do %> |
|
46 |
+ <%= content_tag(:p, @agent.user.full_name) %> |
|
47 |
+ <%= content_tag(:p, ('<i class="icon-mission"></i><span> ' + 5.to_s + ' ' + (t 'agent.missions_acomplished')).html_safe, class: 'agent-stats') %> |
|
48 |
+ <%= content_tag(:p, ('<i class="icon-radar"></i><span> ' + 2.to_s + ' ' + (t 'agent.missions_directed')).html_safe, class: 'agent-stats') %> |
|
49 |
+ <%= content_tag(:p, ('<span class="agent-points">' + 19.to_s + 'K</span> ' + (t 'agent.points')).html_safe, class: 'agent-stats') %> |
|
50 |
+ <% end %> |
|
51 |
+ <%= content_tag(:div, class: 'pull-right') do %> |
|
52 |
+ <% if @agent.user.avatar.file != nil %> |
|
53 |
+ <%= image_tag @agent.user.avatar.to_s, size: "115x115", :class => 'img-circle' %> |
|
54 |
+ <% else %> |
|
55 |
+ <%= image_tag "user.png", size: "115x115", :class => 'img-circle' %> |
|
56 |
+ <% end %> |
|
57 |
+ <% end %> |
|
58 |
+ <%= content_tag(:div, '', class: 'clearfix') %> |
|
59 |
+ <%= content_tag(:div, class: 'mission-agent-bio') do %> |
|
60 |
+ <%= content_tag(:p, 'Hacker from São Paulo Brazil. Avalanche programer and Designer.', class: 'agent-description') %> |
|
61 |
+ <% end %> |
|
62 |
+ <% end %> |
|
63 |
+ <% else %> |
|
64 |
+ <%= content_tag(:div, class: 'mission-agent-status open-agent-role') do %> |
|
65 |
+ <%= content_tag(:div, class: 'btn-spacer') do %> |
|
66 |
+ <%= link_to (t 'mission.take_agent_role'), take_agent_role_path(@mission, @agent), class: 'btn btn-large' %> |
|
67 |
+ <% end %> |
|
68 |
+ <%= content_tag(:p, 'This agent role is open for the first user that apply for it.', class: 'agent-description') %> |
|
47 | 69 |
<% end %> |
48 |
- <%= content_tag(:p, 'This agent role is open for the first user that apply for it.') %> |
|
49 | 70 |
<% end %> |
50 | 71 |
<% end %> |
51 | 72 |
<% end %> |
@@ -71,7 +71,7 @@ |
||
71 | 71 |
<%= content_tag(:h4, (t 'mission.no_agent_selected')+'') %> |
72 | 72 |
<% end %> |
73 | 73 |
<%= content_tag(:div, class: 'thumbnail-open-agent-slot') do %> |
74 |
- <%= link_to (t 'mission.apply_for_position'), '#', class: 'btn' %> |
|
74 |
+ <%= link_to (t 'mission.apply_for_position'), take_agent_role_path(@mission, agent), class: 'btn' %> |
|
75 | 75 |
<% end %> |
76 | 76 |
<% end %> |
77 | 77 |
<% end %> |
@@ -25,6 +25,7 @@ Avalanche2::Application.routes.draw do |
||
25 | 25 |
resources :missions |
26 | 26 |
get '/missions/:id/agents', to: 'missions#show_agents', as: :mission_agents_list |
27 | 27 |
get 'missions/:id/agents/:agent', to: 'missions#show_agent_details', as: :mission_agent_details |
28 |
+ get 'missions/:id/agents/:agent/take_agent_role', to: 'missions#take_agent_role', as: :take_agent_role |
|
28 | 29 |
|
29 | 30 |
# Admin Panel |
30 | 31 |
get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard |