Login and Signup page layouts

James Peret 10 anni fa
parent
commit
8712f6f4f0

BIN
app/assets/images/avalanche_network_logo_full_small.png


BIN
app/assets/images/photo_mountains.jpg


+ 6 - 125
app/assets/stylesheets/avalanche_theme.css.less

@@ -252,131 +252,7 @@ h4 {
252 252
 }
253 253
 
254 254
 
255
-// Footer
256 255
 
257
-footer {
258
-	font-family: "Avenir";
259
-	font-weight: 600;
260
-	text-align: center;
261
-	color: #1D1D26;
262
-	margin-top: 30px;
263
-	padding-top: 20px;
264
-}
265
-
266
-.footer-white {
267
-	
268
-}
269
-
270
-.footer-black {
271
-	background-color: @black;
272
-	color: white;
273
-}
274
-
275
-.footer-white a {
276
-	color: @dark-gray;
277
-	font-weight: bold;
278
-}
279
-
280
-.footer-white a:hover {
281
-	color: @blue;
282
-	font-weight: bold;
283
-	text-transform: underline;
284
-}
285
-
286
-.footer-black a {
287
-	color: white;
288
-	font-weight: bold;
289
-	background-color: transparent;
290
-}
291
-
292
-.footer-black a:hover {
293
-	color: @blue;
294
-	font-weight: bold;
295
-	text-transform: underline;
296
-	background-color: transparent;
297
-}
298
-
299
-footer .column5 .column-inner { min-height: 90px }
300
-footer .column5 .column-inner.centered { min-height: 75px }
301
-
302
-footer .column3 .column-inner { min-height: 100px }
303
-footer .column3 .column-inner.centered { min-height: 85px }
304
-
305
-.column3 {
306
-	width: 33%;
307
-	float: left;
308
-}
309
-
310
-.column5 {
311
-	width: 20%;
312
-	float: left;
313
-}
314
-
315
-.column-inner {
316
-	padding-left: 10px;
317
-	padding-right: 10px;
318
-	padding-top: 10px;
319
-}
320
-
321
-.footer-white .column-inner {
322
-	border-right: 2px solid #1D1D26;
323
-}
324
-
325
-.footer-black .column-inner {
326
-	border-right: 2px solid white;
327
-}
328
-
329
-.footer-black .btn {
330
-	color: white;
331
-	border-color: white;
332
-}
333
-
334
-.column-inner.first {
335
-	margin-left: 30px;
336
-}
337
-
338
-.column-inner.last {
339
-	border-right: none;
340
-	margin-right: 30px;
341
-}
342
-
343
-.column-inner.centered {
344
-	padding-top: 25px;
345
-}
346
-
347
-.column-inner div:nth-child(1) { margin-left: 15px; }
348
-.column-inner div:nth-child(2) { margin-right: 15px; }
349
-		
350
-footer .column5 .column-inner i {
351
-	margin-right: 15px;
352
-	margin-left: 15px;
353
-}
354
-
355
-footer .column3 .column-inner i {
356
-	margin-right: 15px;
357
-	margin-left: 15px;
358
-	font-size: 21px;
359
-}
360
-
361
-footer .copyright {
362
-	margin-top: 10px;
363
-	text-transform: uppercase;
364
-}
365
-
366
-footer hr {
367
-	margin-bottom: 10px;
368
-}
369
-
370
-footer .links_mobile {
371
-	width: 220px;
372
-	margin-left: auto;
373
-	margin-right: auto;
374
-	margin-top: 20px;
375
-	margin-bottom: 25px;
376
-	height: 80px;
377
-}
378
-
379
-.footer-email { word-break: break-all; }
380 256
 
381 257
 // Hacks
382 258
 
@@ -398,4 +274,9 @@ footer .links_mobile {
398 274
 	cursor: pointer;
399 275
 }
400 276
 
401
-.no-margin-bottom { margin-bottom: 0px;}
277
+.no-margin-bottom { margin-bottom: 0px;}
278
+
279
+.centered {
280
+	margin-left: auto;
281
+	margin-right: auto;
282
+}

+ 15 - 3
app/assets/stylesheets/avl2_theme/buttons.less

@@ -57,16 +57,28 @@
57 57
 
58 58
 // btn inverse
59 59
 button.btn.inverse, input[type="submit"].btn.inverse {
60
-	background-color: @white;
61
-	color: @black;
60
+	border: 2px solid @white;
61
+	color: @white;
62 62
 }
63 63
 
64 64
 // btn inverse hover
65 65
 button.btn.inverse:hover, input[type="submit"].btn.inverse:hover {
66
-	background-color: @light-gray;
66
+	background-color: @white;
67
+	border: 2px solid @light-gray;
67 68
 	color: @black;
68 69
 }
69 70
 
71
+// btn link inverse
72
+a.btn.btn-link.inverse {
73
+	color: @white;
74
+}
75
+
76
+// btn link inverse hover
77
+a.btn.btn-link.inverse:hover {
78
+	color: @white;
79
+	text-decoration: underline;
80
+}
81
+
70 82
 // btn inverse sucess
71 83
 button.btn.btn-success.inverse, input[type="submit"].btn.btn-success.inverse {
72 84
 	background-color: lighten(@green, 20%);

+ 88 - 0
app/assets/stylesheets/avl2_theme/cover.less

@@ -0,0 +1,88 @@
1
+// Cover
2
+
3
+@import "colors.less";
4
+
5
+.site-wrapper {
6
+	display: table;
7
+	width: 100%;
8
+	height: 100%;
9
+	min-height: 100%;
10
+	//margin-top: 52px;
11
+	background-color: @medium-gray;
12
+	background-image:  image-url('photo_mountains.jpg');
13
+}
14
+
15
+.site-wrapper-inner {
16
+vertical-align: middle;
17
+}
18
+
19
+.cover-container {
20
+	margin-right: auto;
21
+	margin-left: auto;
22
+}
23
+
24
+.cover { padding: 0 20px; }
25
+.inner { padding: 30px; }
26
+
27
+@media (min-width: 992px) {
28
+	.masthead, .mastfoot, .cover-container {
29
+		width: 700px;
30
+	}
31
+	.masthead, .mastfoot, .cover-container {
32
+		width: 700px;
33
+	}
34
+}
35
+
36
+@media (min-width: 768px) {
37
+	.masthead, .mastfoot, .cover-container {
38
+		width: 100%;
39
+	}
40
+	.site-wrapper-inner {
41
+		vertical-align: middle;
42
+	}
43
+	.masthead, .mastfoot, .cover-container {
44
+		width: 100%;
45
+	}
46
+}
47
+
48
+.inner.cover footer {
49
+	padding-bottom: 0px;
50
+}
51
+
52
+.mastfoot {
53
+position: fixed;
54
+bottom: 0;
55
+}
56
+
57
+.mastfoot .inner { padding: 0px; }
58
+
59
+.cover-center {
60
+	width: 350px;
61
+	margin-left: auto;
62
+	margin-right: auto;
63
+	margin-top: 90px;
64
+	text-align: center;
65
+}
66
+
67
+.cover-center img {
68
+	margin-bottom: 35px;
69
+}
70
+
71
+.cover-center fieldset {
72
+	margin-bottom: 5px;
73
+	text-align: left;
74
+}
75
+
76
+.cover-center .form-buttons {
77
+	text-align: left;
78
+}
79
+
80
+
81
+// Compact Form
82
+
83
+.compact-form label {
84
+	height: 0px;
85
+	margin-bottom: 0px;
86
+}
87
+
88
+.compact-form .form-group input { margin-bottom: 20px; }

+ 145 - 0
app/assets/stylesheets/avl2_theme/footer.less

@@ -0,0 +1,145 @@
1
+// Footer
2
+
3
+@import "colors.less";
4
+
5
+footer {
6
+	font-family: "Avenir";
7
+	font-weight: 600;
8
+	text-align: center;
9
+	color: #1D1D26;
10
+	margin-top: 30px;
11
+	padding-top: 20px;
12
+}
13
+
14
+.footer-white {
15
+	
16
+}
17
+
18
+.footer-black {
19
+	background-color: @black;
20
+	color: white;
21
+}
22
+
23
+.footer-silver {
24
+	background-color: @light-gray;
25
+}
26
+
27
+.footer-transparent {
28
+	background-color: transparent;
29
+	color: white;
30
+}
31
+
32
+.footer-white a, .footer-silver a, {
33
+	color: @dark-gray;
34
+	font-weight: bold;
35
+}
36
+
37
+.footer-white a:hover {
38
+	color: @blue;
39
+	font-weight: bold;
40
+	text-transform: underline;
41
+}
42
+
43
+.footer-black a, .footer-transparent a {
44
+	color: white;
45
+	font-weight: bold;
46
+	background-color: transparent;
47
+}
48
+
49
+.footer-black a:hover, .footer-silver a:hover, .footer-transparent a:hover {
50
+	color: @blue;
51
+	font-weight: bold;
52
+	text-transform: underline;
53
+	background-color: transparent;
54
+}
55
+
56
+footer .column5 .column-inner { min-height: 90px }
57
+footer .column5 .column-inner.centered { min-height: 75px }
58
+
59
+footer .column3 .column-inner { min-height: 100px }
60
+footer .column3 .column-inner.centered { min-height: 85px }
61
+
62
+.column3 {
63
+	width: 33%;
64
+	float: left;
65
+}
66
+
67
+.column5 {
68
+	width: 20%;
69
+	float: left;
70
+}
71
+
72
+.column-inner {
73
+	padding-left: 10px;
74
+	padding-right: 10px;
75
+	padding-top: 10px;
76
+}
77
+
78
+.footer-white .column-inner, .footer-silver .column-inner {
79
+	border-right: 2px solid #1D1D26;
80
+}
81
+
82
+.footer-black .column-inner, .footer-transparent .column-inner  {
83
+	border-right: 2px solid white;
84
+}
85
+
86
+.footer-black .btn, .footer-transparent .btn  {
87
+	color: white;
88
+	border: 2px solid @white;
89
+}
90
+
91
+.column-inner.first {
92
+	margin-left: 30px;
93
+}
94
+
95
+.column-inner.last {
96
+	border-right: none;
97
+	margin-right: 30px;
98
+}
99
+
100
+.column-inner.centered {
101
+	padding-top: 25px;
102
+}
103
+
104
+.column-inner div:nth-child(1) { margin-left: 15px; }
105
+.column-inner div:nth-child(2) { margin-right: 15px; }
106
+		
107
+footer .column5 .column-inner i {
108
+	margin-right: 15px;
109
+	margin-left: 15px;
110
+}
111
+
112
+footer .column3 .column-inner i {
113
+	margin-right: 15px;
114
+	margin-left: 15px;
115
+	font-size: 21px;
116
+}
117
+
118
+footer .copyright {
119
+	margin-top: 10px;
120
+	text-transform: uppercase;
121
+}
122
+
123
+footer hr {
124
+	margin-bottom: 10px;
125
+}
126
+
127
+footer .links_mobile {
128
+	width: 220px;
129
+	margin-left: auto;
130
+	margin-right: auto;
131
+	margin-top: 20px;
132
+	margin-bottom: 25px;
133
+	height: 80px;
134
+}
135
+
136
+.footer-email { word-break: break-all; }
137
+
138
+.footer-black hr,  .footer-transparent hr {
139
+	border-top-color: @white;
140
+}
141
+
142
+.footer-white hr, .footer-silver hr {
143
+	margin-top: 20px;
144
+	border-top: 2px solid @black;
145
+}

+ 1 - 1
app/controllers/users/sessions_controller.rb

@@ -1,6 +1,6 @@
1 1
 class Users::SessionsController < Devise::SessionsController
2 2
   
3
-  layout 'auth'
3
+  layout 'cover'
4 4
   
5 5
   # def new
6 6
   #   super

+ 17 - 37
app/views/devise/registrations/new.html.erb

@@ -1,41 +1,21 @@
1 1
 <% title (t 'registration.sign_up') + ' - ' + @config.website_name %>
2 2
 
3
-<%= content_tag(:div, class: 'container top-container') do %>
4
-	<%= content_tag(:div, class: 'row') do %>
5
-		<%= content_tag(:div, class: 'span12') do %>
6
-			<%= bootstrap_flash %>
7
-			
8
-			<% # Page Content %>
9
-
10
-			<%= bootstrap_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>  
11
-				<div class="span4 offset4 well" style="">
12
-					<div class="login-panel panel panel-default">
13
-					     <div class="panel-heading">
14
-					         <h3 class="panel-title"><%= t 'registration.sign_up'%></h3>
15
-					     </div>
16
-					     <div class="panel-body">
17
-					         <form role="form">
18
-							    <%= f.alert_message "Please fix the errors below."%>
19
-							  <div class="form-inputs">
20
-							    <%= f.text_field :first_name, label: (t 'registration.first_name'), required:true, autofocus: true, class: 'input-block-level' %>
21
-							    <%= f.text_field :last_name, label: (t 'registration.last_name'), required:true, class: 'input-block-level' %>
22
-							    <%= f.email_field :email, required: true, class: 'input-block-level' %>
23
-							    <%= f.password_field :password, label: (t 'registration.password'), required: true, class: 'input-block-level' %>
24
-							    <%= f.password_field :password_confirmation, label: (t 'registration.password_confirmation'), required: true, class: 'input-block-level' %>
25
-							  </div>
26
-							  <div class="form-group" style="margin-top: 15px;">
27
-							    <%= f.submit  t 'registration.sign_up_submit' %>
28
-							    <%= link_to (t 'registration.sign_in'), new_user_session_path, class: 'btn btn-link ' %>
29
-							  </div>
30
-					         </form>
31
-					     </div>
32
-					 </div>
33
-				</div>
34
-			<% end %>
35
-
36
-
37
-			
38
-			<% # End of Page Content %>
39
-		<% end %>
3
+<%= content_tag(:div, class: 'cover-center compact-form') do%>
4
+	<%= image_tag('avalanche_network_logo_full_small.png', size: '208x150', class: 'centered')%>
5
+	<%= bootstrap_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
6
+	    <% bootstrap_flash %>
7
+	    <%= f.alert_message "Please fix the errors below."%>
8
+	    <%= content_tag(:fieldset) do %>
9
+		    <%= f.text_field :first_name, hide_label: true, placeholder: (t 'registration.first_name'), required:true, autofocus: true, class: 'input-block-level' %>
10
+		    <%= f.text_field :last_name, hide_label: true, placeholder: (t 'registration.last_name'), required:true, class: 'input-block-level' %>
11
+		    <%= f.email_field :email, required: true, hide_label: true, placeholder: (t'registration.email'), class: 'input-block-level' %>
12
+		    <%= f.password_field :password, hide_label: true, placeholder: (t 'registration.password'), required: true, class: 'input-block-level' %>
13
+		    <%= f.password_field :password_confirmation, hide_label: true, placeholder: (t 'registration.password_confirmation'), required: true, class: 'input-block-level' %>
14
+		  	 
15
+		<% end%>
16
+		<%= content_tag(:div, class: 'form-buttons') do %>
17
+  	     	<%= f.submit (t 'registration.sign_up_submit'), id: 'submit_registration_btn', class: 'btn inverse' %>
18
+  	     	<%= link_to (t 'registration.sign_in'), new_user_session_path, class: 'btn btn-link inverse' %>
19
+		<% end%>
40 20
 	<% end %>
41 21
 <% end %>

+ 16 - 43
app/views/devise/sessions/new.html.erb

@@ -1,48 +1,21 @@
1 1
 <% title (t 'registration.sign_in') + ' - ' + @config.website_name %>
2 2
 
3
-<%= content_tag(:div, class: 'container top-container') do %>
4
-	<%= content_tag(:div, class: 'row') do %>
5
-		<%= content_tag(:div, class: 'span12') do %>
6
-			<%= bootstrap_flash %>
7
-			
8
-			<% # Page Content %>
9 3
 
10
-			<%= bootstrap_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
11
-			<div class="span4 offset4 well" style="">
12
-				<div class="login-panel panel panel-default">
13
-				     <div class="panel-heading">
14
-				         <h3 class="panel-title"><%=  t 'registration.sign_in' %></h3>
15
-				     </div>
16
-				     <div class="panel-body">
17
-				         <form role="form">
18
-						    <% bootstrap_flash %>
19
-						    <%= f.alert_message "Please fix the errors below."%>
20
-				             <fieldset>
21
-				                     <%= f.email_field :email, required: true, autofocus: true, class: "input-block-level" %>
22
-				                 <div class="form-group">
23
-				                     <%= f.password_field :password, label: (t 'registration.password'), required: true, class: "input-block-level" %>
24
-				                 </div>
25
-				                 <%= f.check_box :remember_me, as: :boolean, label: (t 'registration.remember_me') if devise_mapping.rememberable? %>
26
-				                 <!-- Change this to a button or input when using this as a form -->
27
-							  <div class="form-group" style="margin-top: 25px;">
28
-							  <%= f.submit (t 'registration.sign_in_submit'), id: 'submit_login_btn' %>
29
-							  <%= link_to (t 'registration.sign_up'), new_user_registration_path, class: 'btn btn-link ' %>
30
-							  <%= link_to (t 'registration.forgot_password'), new_user_password_path, class: 'btn btn-link ' %>
31
-				 
32
-				   
33
-							  </div>
34
-							  <div class="form-group" style="margin-top: 10px;">
35
-				  
36
-						  	  </div>
37
-				             </fieldset>
38
-				         </form>
39
-				     </div>
40
-				 </div>
41
-			</div>
42
-			<% end %>
43
-			
44
-			
45
-			<% # End of Page Content %>
46
-		<% end %>
4
+<%= content_tag(:div, class: 'cover-center compact-form') do%>
5
+	<%= image_tag('avalanche_network_logo_full_small.png', size: '208x150', class: 'centered')%>
6
+	<%= bootstrap_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
7
+	    <% bootstrap_flash %>
8
+	    <%= f.alert_message "Please fix the errors below."%>
9
+	    <%= content_tag(:fieldset) do %>
10
+	            <%= f.email_field :email, required: true, hide_label: true, placeholder: (t 'registration.email'), autofocus: true, class: "input-block-level" %>
11
+	            <%= f.password_field :password, hide_label: true, placeholder: (t 'registration.password'), required: true, class: "input-block-level" %>
12
+	        	  <% f.check_box :remember_me, as: :boolean, label: (t 'registration.remember_me') if devise_mapping.rememberable? %>
13
+		  	 
14
+		<% end%>
15
+		<%= content_tag(:div, class: 'form-buttons') do %>
16
+  	     	<%= f.submit (t 'registration.sign_in_submit'), id: 'submit_login_btn', class: 'btn inverse' %>
17
+  	     	<%= link_to (t 'registration.sign_up'), new_user_registration_path, class: 'btn btn-link inverse', style: 'padding-left: 25px;' %>
18
+  	     	<%= link_to (t 'registration.forgot_password'), new_user_password_path, class: 'btn btn-link inverse' %>
19
+		<% end%>
47 20
 	<% end %>
48 21
 <% end %>

+ 1 - 1
app/views/layouts/_footer.html.erb

@@ -71,7 +71,7 @@
71 71
 		<% end %>
72 72
 		
73 73
 		<%= content_tag(:div, class: 'row', style: 'max-width: 1150px; margin-left: 0px;') do %>
74
-			<%= content_tag(:hr, '', style: 'margin-top: 20px; border-top: 1px solid #000000;') %>
74
+			<%= content_tag(:hr, '') %>
75 75
 			<%= content_tag(:p, "&copy; Avalanche Network #{Time.now.year}".html_safe, class: 'copyright', style: 'text-align: center;')%>
76 76
 		<% end %>
77 77
 	<% end %>

+ 76 - 0
app/views/layouts/cover.html.erb

@@ -0,0 +1,76 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+  <head>
4
+    <meta charset="utf-8">
5
+    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
6
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+    <title><%= yield(:title) %></title>
8
+    <%= csrf_meta_tags %>
9
+
10
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
11
+    <!--[if lt IE 9]>
12
+      <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js" type="text/javascript"></script>
13
+    <![endif]-->
14
+
15
+    <%= stylesheet_link_tag "application", :media => "all" %>
16
+
17
+    <!-- For third-generation iPad with high-resolution Retina display: -->
18
+    <!-- Size should be 144 x 144 pixels -->
19
+    <%= favicon_link_tag 'apple-touch-icon-144x144-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '144x144' %>
20
+
21
+    <!-- For iPhone with high-resolution Retina display: -->
22
+    <!-- Size should be 114 x 114 pixels -->
23
+    <%= favicon_link_tag 'apple-touch-icon-114x114-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '114x114' %>
24
+
25
+    <!-- For first- and second-generation iPad: -->
26
+    <!-- Size should be 72 x 72 pixels -->
27
+    <%= favicon_link_tag 'apple-touch-icon-72x72-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '72x72' %>
28
+
29
+    <!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
30
+    <!-- Size should be 57 x 57 pixels -->
31
+    <%= favicon_link_tag 'apple-touch-icon-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png' %>
32
+
33
+    <!-- For all other devices -->
34
+    <!-- Size should be 32 x 32 pixels -->
35
+    <%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
36
+
37
+    <%= javascript_include_tag "application" %>
38
+  </head>
39
+  <body>
40
+    <div class="site-wrapper">
41
+	    <div class="site-wrapper-inner">
42
+		   
43
+		    <div class="cover-container">
44
+			    
45
+			    <div class="navbar navbar-fixed-top">
46
+			      <div class="navbar-inner <%= if params[:controller] == 'start' then 'nav_fx' else 'past-main' end %>">
47
+			        <div class="container">
48
+			          <a class="btn btn-navbar" data-target=".nav-collapse" data-toggle="collapse">
49
+			            <span class="icon-bar"></span>
50
+			            <span class="icon-bar"></span>
51
+			            <span class="icon-bar"></span>
52
+			          </a>
53
+			          <%= render 'layouts/logo' %>
54
+
55
+			          <%= render 'layouts/navigation_links' %>
56
+
57
+			        </div>
58
+			      </div>
59
+			    </div>
60
+	              <div class="inner cover">
61
+	    			    <%= yield %>
62
+			    </div>
63
+			    <div class="mastfoot">
64
+	                <div class="inner">
65
+    				    <%= render partial: 'layouts/footer', locals: {color: 'transparent'} %>
66
+	                </div>
67
+	              </div>
68
+			</div>
69
+		</div>
70
+    </div>
71
+    
72
+
73
+     
74
+
75
+  </body>
76
+</html>

+ 10 - 0
config/initializers/devise.rb

@@ -253,4 +253,14 @@ Devise.setup do |config|
253 253
   # When using omniauth, Devise cannot automatically set Omniauth path,
254 254
   # so you need to do it manually. For the users scope, it would be:
255 255
   # config.omniauth_path_prefix = '/my_engine/users/auth'
256
+  
256 257
 end
258
+
259
+
260
+Rails.application.config.to_prepare do
261
+  Devise::SessionsController.layout "cover"
262
+  Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "cover" }
263
+  Devise::ConfirmationsController.layout "cover"
264
+  Devise::UnlocksController.layout "cover"            
265
+  Devise::PasswordsController.layout "cover"        
266
+end

+ 1 - 0
config/locales/en.yml

@@ -300,6 +300,7 @@ en:
300 300
     cancel_account: Delete Account
301 301
     cancel_confirmation: Are you sure you want to delete your account permenantly?
302 302
     edit_password: Edit password
303
+    email: Email
303 304
   subscription:
304 305
     subscribers: Subscribers
305 306
     header: Subscribe to our newsletter

+ 1 - 0
config/locales/pt-BR.yml

@@ -304,6 +304,7 @@ pt-BR:
304 304
     cancel_account: Cancelar Conta
305 305
     cancel_confirmation: Você tem certeza que deseja cancelar sua conta?
306 306
     edit_password: Editar senha
307
+    email: Email
307 308
   subscription:
308 309
     subscribers: Assinantes
309 310
     header: Receba nossa newsletter

+ 1 - 0
dump.rdb

@@ -0,0 +1 @@
1
+REDIS0006ÿܳCðZÜòV