Show Agent Details page

jamesperet 10 years ago
parent
commit
9d0631ad20

+ 29 - 0
app/assets/stylesheets/avalanche_theme.css.less

@@ -63,6 +63,15 @@ html, body {
63 63
 	margin-bottom: 0px;
64 64
 }
65 65
 
66
+.page-header h2 {
67
+	font-family: Helvetica-LightOblique;
68
+	font-size: 36px;
69
+	color: #1D1D26;
70
+	line-height: 43px;
71
+	margin-top: 0px;
72
+	margin-bottom: 0px;
73
+}
74
+
66 75
 .page-header-type h1 {
67 76
 	font-size: 48px;
68 77
 	line-height: 59px;
@@ -227,6 +236,17 @@ h4 {
227 236
 	text-transform: none;
228 237
 }
229 238
 
239
+.btn-large {
240
+	font-family: Avenir-Black;
241
+	font-size: 18px;
242
+	color: #333333;
243
+	line-height: 20px;
244
+}
245
+
246
+.btn:hover {
247
+	background: rgba(0, 0, 0, 0.2);
248
+}
249
+
230 250
 // Progress Bar
231 251
 
232 252
 .progress-success.progress-striped .bar, .progress-striped .bar-success {
@@ -329,6 +349,11 @@ footer .column .column-inner.centered {
329 349
 	border-right: 2px solid white;
330 350
 }
331 351
 
352
+.footer-black .btn {
353
+	color: white;
354
+	border-color: white;
355
+}
356
+
332 357
 .column-inner.first {
333 358
 	margin-left: 30px;
334 359
 }
@@ -370,4 +395,8 @@ footer hr {
370 395
 	left: 0;
371 396
 	width: 100%;
372 397
 	height: 100%;
398
+}
399
+
400
+.nav-tabs > .active > a, .nav-tabs > .active.clickable > a:hover, .nav-tabs > .active.clickable > a:focus {
401
+	cursor: pointer;
373 402
 }

+ 27 - 0
app/assets/stylesheets/missions.css.less

@@ -134,6 +134,10 @@
134 134
 	line-height: 25px;
135 135
 }
136 136
 
137
+.mission-briefing h4~h4 {
138
+	margin-top: 25px;
139
+}
140
+
137 141
 // Rewards
138 142
 
139 143
 .rewards {
@@ -229,4 +233,27 @@
229 233
 	height: 30px;
230 234
 	text-align: center;
231 235
 	padding: 15px;
236
+}
237
+
238
+// Mission Agent Status
239
+
240
+.mission-agent-status {
241
+	height: 220px;
242
+}
243
+
244
+.open-agent-role {
245
+	background-color: @green;
246
+	text-align: center;
247
+}
248
+
249
+.open-agent-role p {
250
+	font-family: Helvetica-LightOblique;
251
+	font-size: 14px;
252
+	color: #1D1D26;
253
+	line-height: 17px;
254
+}
255
+
256
+.open-agent-role .btn-spacer {
257
+	padding-top: 55px;
258
+	padding-bottom: 70px;
232 259
 }

+ 5 - 2
app/controllers/missions_controller.rb

@@ -14,10 +14,13 @@ class MissionsController < ApplicationController
14 14
   def show
15 15
   end
16 16
   
17
-  # GET /missions/1
18
-  # GET /missions/1.json
19 17
   def show_agents
20 18
   end
19
+  
20
+  def show_agent_details
21
+    @mission = Mission.find(params[:id])
22
+    @agent = @mission.mission_agents.find(params[:agent])
23
+  end
21 24
 
22 25
   # GET /missions/new
23 26
   def new

+ 61 - 0
app/views/missions/_mission_details.html.erb

@@ -0,0 +1,61 @@
1
+<%= content_tag(:div, class: 'container-bg container-pre-tabs') do %>
2
+	<%= content_tag(:div, class: 'container top-container container-bg') do %>
3
+		<%= content_tag(:div, class: 'row') do %>
4
+			<%= content_tag(:div, class: 'span12') do %>
5
+			
6
+
7
+				<% # Page Content %>
8
+			
9
+			
10
+				<%= content_tag(:div, class: 'page-header page-header-type') do %>
11
+					<%= content_tag(:small, (t 'mission.mission')+':') %>
12
+					<%= content_tag(:h1) do %>
13
+						<%=  mission.title %>
14
+						<%= status(mission.status) %>
15
+					<% end %>
16
+				<% end %>
17
+			<% end %>
18
+		<% end %>
19
+		<%= content_tag(:div, class: 'row') do %>
20
+			<%= content_tag(:div, class: 'span8') do %>	
21
+				<div class="videoWrapper">
22
+				    <!-- Copy & Pasted from YouTube -->
23
+				    <iframe width="1280" height="720" src="https://www.youtube.com/embed/DvLYOcXUYgU?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
24
+				</div>
25
+			<% end %>
26
+			<%= content_tag(:div, class: 'span4 mission-stats') do %>
27
+				<%= content_tag(:span,'145', class: 'mission-timer timer-large') %>
28
+				<%= content_tag(:br) %>
29
+				<%= content_tag(:div, (t 'mission.days_left'), class: 'timer-legend') %>
30
+				<div class="progress-bar progress-bar-mission-stats">
31
+					<div class="progress progress-striped">
32
+					  <div class="bar bar-success" style="width: 30%;"></div>
33
+					</div>
34
+					<div class="percentage">30%</div>
35
+				</div>
36
+				<%= content_tag(:div, class: 'mission-completion-stats') do %>
37
+					<%= mission_agent_counter(mission, 'pull-left') %>
38
+					<%= mission_steps_counter(mission, 'pull-right') %>
39
+				<% end %>
40
+				<%= content_tag(:div, class: 'mission-director-stats') do %>
41
+					<%= content_tag(:div, class: 'mission-director-avatar') do %>
42
+						<% if mission.owner.avatar.file != nil %>
43
+					    		<%= image_tag mission.owner.avatar.to_s, size: "64x64", :class => 'img-circle' %>
44
+					     <% else %>
45
+					    		<%= image_tag "user.png", size: "64x64", :class => 'img-circle' %>
46
+					     <% end %>
47
+					<% end %>
48
+					<%= content_tag(:div, class: 'mission-director-text') do %>
49
+						<%= content_tag(:span, (t 'mission.director')+':' , class: 'mission-director-legend') %><br>
50
+						<%= content_tag(:span, mission.owner.full_name , class: 'mission-director-name') %>
51
+					<% end %>    
52
+				<% end %>
53
+				<%= content_tag(:div, '', class: 'clearfix') %>
54
+				<%= content_tag(:div, class: 'mission-call-to-action') do %>
55
+					<%= link_to (t 'mission.join'), '#', class: 'btn btn-large' %>
56
+				<% end %>
57
+				
58
+			<% end %>	
59
+		<% end %>
60
+	<% end %>
61
+<% end %>

+ 1 - 62
app/views/missions/show.html.erb

@@ -1,65 +1,4 @@
1
-<%= content_tag(:div, class: 'container-bg container-pre-tabs') do %>
2
-	<%= content_tag(:div, class: 'container top-container container-bg') do %>
3
-		<%= content_tag(:div, class: 'row') do %>
4
-			<%= content_tag(:div, class: 'span12') do %>
5
-			
6
-
7
-				<% # Page Content %>
8
-			
9
-			
10
-				<%= content_tag(:div, class: 'page-header page-header-type') do %>
11
-					<%= content_tag(:small, (t 'mission.mission')+':') %>
12
-					<%= content_tag(:h1) do %>
13
-						<%=  @mission.title %>
14
-						<%= status(@mission.status) %>
15
-					<% end %>
16
-				<% end %>
17
-			<% end %>
18
-		<% end %>
19
-		<%= content_tag(:div, class: 'row') do %>
20
-			<%= content_tag(:div, class: 'span8') do %>	
21
-				<div class="videoWrapper">
22
-				    <!-- Copy & Pasted from YouTube -->
23
-				    <iframe width="1280" height="720" src="https://www.youtube.com/embed/DvLYOcXUYgU?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
24
-				</div>
25
-			<% end %>
26
-			<%= content_tag(:div, class: 'span4 mission-stats') do %>
27
-				<%= content_tag(:span,'145', class: 'mission-timer timer-large') %>
28
-				<%= content_tag(:br) %>
29
-				<%= content_tag(:div, (t 'mission.days_left'), class: 'timer-legend') %>
30
-				<div class="progress-bar progress-bar-mission-stats">
31
-					<div class="progress progress-striped">
32
-					  <div class="bar bar-success" style="width: 30%;"></div>
33
-					</div>
34
-					<div class="percentage">30%</div>
35
-				</div>
36
-				<%= content_tag(:div, class: 'mission-completion-stats') do %>
37
-					<%= mission_agent_counter(@mission, 'pull-left') %>
38
-					<%= mission_steps_counter(@mission, 'pull-right') %>
39
-				<% end %>
40
-				<%= content_tag(:div, class: 'mission-director-stats') do %>
41
-					<%= content_tag(:div, class: 'mission-director-avatar') do %>
42
-						<% if @mission.owner.avatar.file != nil %>
43
-					    		<%= image_tag @mission.owner.avatar.to_s, size: "64x64", :class => 'img-circle' %>
44
-					     <% else %>
45
-					    		<%= image_tag "user.png", size: "64x64", :class => 'img-circle' %>
46
-					     <% end %>
47
-					<% end %>
48
-					<%= content_tag(:div, class: 'mission-director-text') do %>
49
-						<%= content_tag(:span, (t 'mission.director')+':' , class: 'mission-director-legend') %><br>
50
-						<%= content_tag(:span, @mission.owner.full_name , class: 'mission-director-name') %>
51
-					<% end %>    
52
-				<% end %>
53
-				<%= content_tag(:div, '', class: 'clearfix') %>
54
-				<%= content_tag(:div, class: 'mission-call-to-action') do %>
55
-					<%= link_to (t 'mission.join'), '#', class: 'btn btn-large' %>
56
-				<% end %>
57
-				
58
-			<% end %>	
59
-		<% end %>
60
-	<% end %>
61
-<% end %>
62
-
1
+<%= render partial: "mission_details", locals: {mission: @mission} %>
63 2
 
64 3
 
65 4
 

+ 52 - 0
app/views/missions/show_agent_details.html.erb

@@ -0,0 +1,52 @@
1
+<%= render partial: "mission_details", locals: {mission: @mission} %>
2
+
3
+<% # Tabs ---------- %>
4
+
5
+<%= content_tag(:div, class: 'container container-tabs') do %>
6
+	<%= content_tag(:div, class: 'row') do %>
7
+		<%= content_tag(:div, class: 'span12') do %>
8
+			<%= content_tag(:ul, class: 'nav nav-tabs') do %>
9
+				<%= content_tag(:li, (link_to (t 'mission.briefing'), mission_path(@mission))) %>
10
+				<%= content_tag(:li, (link_to (t 'mission.agents'), mission_agents_list_path(@mission)), class: 'active clickable') %>
11
+				<%= content_tag(:li, (link_to (t 'mission.chat'), '#'), class: 'disabled') %>
12
+				<%= content_tag(:li, (link_to (t 'mission.log'), '#'), class: 'disabled') %>
13
+			<% end %>
14
+		<% end %>
15
+	<% end %>
16
+<% end %>
17
+
18
+<% # Content -------- %>
19
+
20
+
21
+<%= content_tag(:div, class: 'container container-last') do %>
22
+	<%= content_tag(:div, class: 'row') do %>
23
+		<%= content_tag(:div, class: 'span12') do %>
24
+			<%= bootstrap_flash %>
25
+
26
+			<% # Page Content %>
27
+
28
+			<%= content_tag(:div, class: 'page-header page-header-type') do %>
29
+				<%= content_tag(:small, (t 'mission.agent')+':') %>
30
+				<%= content_tag(:h2) do %>
31
+					<%= @agent.role %>
32
+				<% end %>
33
+			<% end %>
34
+		<% end %>
35
+	<% end %>
36
+	<%= content_tag(:div, class: 'row') do %>
37
+		<%= content_tag(:div, class: 'span8 mission-briefing') do %>
38
+			<%= content_tag(:h4, ((t 'mission.objective') + ':') ) %>
39
+			<%= content_tag(:p, @agent.objective.html_safe) %>
40
+			<%= content_tag(:h4, ((t 'mission.instructions') + ':') ) %>
41
+			<%= @agent.briefing.html_safe %>
42
+		<% end %>
43
+		<%= 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' %>
47
+				<% end %>
48
+				<%= content_tag(:p, 'This agent role is open for the first user that apply for it.') %>
49
+			<% end %>
50
+		<% end %>
51
+	<% end %>
52
+<% end %>

+ 3 - 63
app/views/missions/show_agents.html.erb

@@ -1,64 +1,4 @@
1
-<%= content_tag(:div, class: 'container-bg container-pre-tabs') do %>
2
-	<%= content_tag(:div, class: 'container top-container container-bg') do %>
3
-		<%= content_tag(:div, class: 'row') do %>
4
-			<%= content_tag(:div, class: 'span12') do %>
5
-			
6
-
7
-				<% # Page Content %>
8
-			
9
-			
10
-				<%= content_tag(:div, class: 'page-header page-header-type') do %>
11
-					<%= content_tag(:small, (t 'mission.mission')+':') %>
12
-					<%= content_tag(:h1) do %>
13
-						<%=  @mission.title %>
14
-						<%= status(@mission.status) %>
15
-					<% end %>
16
-				<% end %>
17
-			<% end %>
18
-		<% end %>
19
-		<%= content_tag(:div, class: 'row') do %>
20
-			<%= content_tag(:div, class: 'span8') do %>	
21
-				<div class="videoWrapper">
22
-				    <!-- Copy & Pasted from YouTube -->
23
-				    <iframe width="1280" height="720" src="https://www.youtube.com/embed/DvLYOcXUYgU?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
24
-				</div>
25
-			<% end %>
26
-			<%= content_tag(:div, class: 'span4 mission-stats') do %>
27
-				<%= content_tag(:span,'145', class: 'mission-timer timer-large') %>
28
-				<%= content_tag(:br) %>
29
-				<%= content_tag(:div, (t 'mission.days_left'), class: 'timer-legend') %>
30
-				<div class="progress-bar progress-bar-mission-stats">
31
-					<div class="progress progress-striped">
32
-					  <div class="bar bar-success" style="width: 30%;"></div>
33
-					</div>
34
-					<div class="percentage">30%</div>
35
-				</div>
36
-				<%= content_tag(:div, class: 'mission-completion-stats') do %>
37
-					<%= mission_agent_counter(@mission, 'pull-left') %>
38
-					<%= mission_steps_counter(@mission, 'pull-right') %>
39
-				<% end %>
40
-				<%= content_tag(:div, class: 'mission-director-stats') do %>
41
-					<%= content_tag(:div, class: 'mission-director-avatar') do %>
42
-						<% if @mission.owner.avatar.file != nil %>
43
-					    		<%= image_tag @mission.owner.avatar.to_s, size: "64x64", :class => 'img-circle' %>
44
-					     <% else %>
45
-					    		<%= image_tag "user.png", size: "64x64", :class => 'img-circle' %>
46
-					     <% end %>
47
-					<% end %>
48
-					<%= content_tag(:div, class: 'mission-director-text') do %>
49
-						<%= content_tag(:span, (t 'mission.director')+':' , class: 'mission-director-legend') %><br>
50
-						<%= content_tag(:span, @mission.owner.full_name , class: 'mission-director-name') %>
51
-					<% end %>    
52
-				<% end %>
53
-				<%= content_tag(:div, '', class: 'clearfix') %>
54
-				<%= content_tag(:div, class: 'mission-call-to-action') do %>
55
-					<%= link_to (t 'mission.join'), '#', class: 'btn btn-large' %>
56
-				<% end %>
57
-				
58
-			<% end %>	
59
-		<% end %>
60
-	<% end %>
61
-<% end %>
1
+<%= render partial: "mission_details", locals: {mission: @mission} %>
62 2
 
63 3
 
64 4
 <% # Tabs ---------- %>
@@ -78,7 +18,7 @@
78 18
 
79 19
 <% # Content -------- %>
80 20
 
81
-<%= content_tag(:div, class: 'container container-last top-container') do %>
21
+<%= content_tag(:div, class: 'container container-last') do %>
82 22
 	<%= content_tag(:div, class: 'row') do %>
83 23
 		<%= content_tag(:div, class: 'span12 mission-agents') do %>
84 24
 			
@@ -91,7 +31,7 @@
91 31
 					<%= content_tag(:li, class: 'span4') do %>
92 32
 						<% content_tag(:div, class: 'thumbnail') do %>
93 33
 							<%= content_tag(:div, class: 'thumbnail-content') do%>
94
-						          <%= content_tag(:h3, agent.role) %>
34
+						          <%= content_tag(:h3, (link_to agent.role, mission_agent_details_path(@mission, agent))) %>
95 35
 						          <%= content_tag(:p, agent.objective, class: 'thumbnail-agent-description') %>
96 36
 							<% end %>
97 37
 							<% # Steps %>

+ 25 - 16
config/routes.rb

@@ -1,23 +1,32 @@
1 1
 Avalanche2::Application.routes.draw do
2 2
   
3
-  resources :missions
4
-  get '/missions/:id/agents', to: 'missions#show_agents', as: :mission_agents_list
5
-
3
+  # Landing page
6 4
   root 'start#index'
7 5
   
8
-  get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale
9
-  
10
-  mount Resque::Server.new, :at => "/resque" 
6
+  # Blog
7
+  get "blog" => "blog_posts#index", :as => :blog
8
+  get "blog/:id" => "blog_posts#show", :as => :post
11 9
   
10
+  # Change Language
11
+  get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale
12
+   
13
+  # Newsletter Subscription
12 14
   get "subscription/create"
15
+  post "subscribe" => "subscription#create", :as => :subscriptions
16
+  
17
+  # Contact
13 18
   resources :contact_messages, path: '/contact', :as => :contact_messages
14 19
 
20
+  # Uploads
15 21
   resources :uploads
22
+  post "upload" => "uploads#upload", :as => :post_upload
16 23
   
17
-  get "maintenance_mode" => "admin_panel#maintenance_mode", :as => :maintenance_mode
18
-  
19
-  post "subscribe" => "subscription#create", :as => :subscriptions
24
+  # Missions
25
+  resources :missions
26
+  get '/missions/:id/agents', to: 'missions#show_agents', as: :mission_agents_list
27
+  get 'missions/:id/agents/:agent', to: 'missions#show_agent_details', as: :mission_agent_details
20 28
 
29
+  # Admin Panel
21 30
   get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard
22 31
   get "admin" => "admin_panel#index"
23 32
   get "admin/posts" => "admin_panel#posts", :as => :admin_posts
@@ -31,15 +40,12 @@ Avalanche2::Application.routes.draw do
31 40
   get "admin/users/:id/make_admin" => "admin_panel#make_admin", :as => :make_admin
32 41
   get "admin/config" => "admin_panel#site_config", :as => :admin_config
33 42
   post "admin/config/update" => "admin_panel#site_config_update", :as => :config_update
34
-  
35
-  post "upload" => "uploads#upload", :as => :post_upload
36
-  get "blog" => "blog_posts#index", :as => :blog
37
-  get "blog/:id" => "blog_posts#show", :as => :post
38
-  resources :blog_posts, path: '/admin/posts'
39
-  
40 43
   get '/admin/files' => "admin_panel#files", :as => :admin_files
41
-  resources :uploads, path: '/admin/files'
44
+  resources :uploads, path: '/admin/files'  
45
+  resources :blog_posts, path: '/admin/posts'
46
+  get "maintenance_mode" => "admin_panel#maintenance_mode", :as => :maintenance_mode
42 47
 
48
+  # Devise Routes
43 49
   devise_for :users, :skip => [:sessions, :passwords, :confirmations, :registrations]
44 50
   as :user do
45 51
     get 'login' => 'devise/sessions#new', :as => :new_user_session
@@ -67,6 +73,9 @@ Avalanche2::Application.routes.draw do
67 73
     end
68 74
   end
69 75
   
76
+  # Resque webserver
77
+  mount Resque::Server.new, :at => "/resque"
78
+  
70 79
   # The priority is based upon order of creation: first created -> highest priority.
71 80
   # See how all your routes lay out with "rake routes".
72 81