Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Issue 2285 2 #191

Merged
merged 4 commits into from

2 participants

@maryann573

New page for changing email, with cucumber test.

@cesy

Did you manage to get the CSS sorted out okay, then?

@cesy

Also, it's probably slightly outside the scope of this, but do we want to remove the "Add a new OpenID" link, since we're trying to move people across gradually?

@maryann573

As long as it is okay to move only the profile edit page nav bar. I allowed the nav bars on change email and change password pages to remain on the right side.

@cesy

Yes, that sounds great to me.

@cesy

In one of your new files, /app/views/users/change_email.html.erb, you've got Windows line breaks instead of Unix line breaks. Please can you double-check your Notepad++ settings match the ones in the wiki setup instructions?

@cesy cesy merged commit a353bf9 into otwcode:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
109 app/controllers/users_controller.rb
@@ -2,8 +2,8 @@ class UsersController < ApplicationController
cache_sweeper :pseud_sweeper
before_filter :check_user_status, :only => [:edit, :update]
- before_filter :load_user, :only => [:show, :edit, :update, :destroy, :end_first_login, :end_banner, :change_username, :change_password, :change_openid, :browse]
- before_filter :check_ownership, :only => [:edit, :update, :destroy, :end_first_login, :end_banner, :change_username, :change_password, :change_openid]
+ before_filter :load_user, :only => [:show, :edit, :update, :destroy, :end_first_login, :end_banner, :change_username, :change_password, :change_email, :change_openid, :browse]
+ before_filter :check_ownership, :only => [:edit, :update, :destroy, :end_first_login, :end_banner, :change_username, :change_password, :change_email, :change_openid]
before_filter :check_account_creation_status, :only => [:new, :create]
def load_user
@@ -55,8 +55,8 @@ def show
group("tags.id").order("work_count DESC") &
Work.visible_to_all.revealed &
Work.joins("INNER JOIN creatorships ON creatorships.creation_id = works.id AND creatorships.creation_type = 'Work'
- INNER JOIN pseuds ON creatorships.pseud_id = pseuds.id
- INNER JOIN users ON pseuds.user_id = users.id").where("users.id = ?", @user.id)
+ INNER JOIN pseuds ON creatorships.pseud_id = pseuds.id
+ INNER JOIN users ON pseuds.user_id = users.id").where("users.id = ?", @user.id)
visible_works = @user.works.visible_to_all
visible_series = @user.series.visible_to_all
visible_bookmarks = @user.bookmarks.visible_to_all
@@ -67,8 +67,8 @@ def show
group("tags.id").order("work_count DESC") &
Work.visible_to_registered_user.revealed &
Work.joins("INNER JOIN creatorships ON creatorships.creation_id = works.id AND creatorships.creation_type = 'Work'
- INNER JOIN pseuds ON creatorships.pseud_id = pseuds.id
- INNER JOIN users ON pseuds.user_id = users.id").where("users.id = ?", @user.id)
+ INNER JOIN pseuds ON creatorships.pseud_id = pseuds.id
+ INNER JOIN users ON pseuds.user_id = users.id").where("users.id = ?", @user.id)
visible_works = @user.works.visible_to_registered_user
visible_series = @user.series.visible_to_registered_user
visible_bookmarks = @user.bookmarks.visible_to_registered_user
@@ -112,7 +112,7 @@ def change_password
@user.recently_reset = false
if @user.save
flash[:notice] = ts("Your password has been changed")
- UserMailer.reset_password(@user).deliver
+ UserMailer.reset_password(@user).deliver
@user.create_log_item( options = {:action => ArchiveConfig.ACTION_PASSWORD_RESET})
redirect_to user_profile_path(@user) and return
else
@@ -120,8 +120,8 @@ def change_password
end
end
end
-
-
+
+
def change_openid
if params[:identity_url]
@openid_url = params[:identity_url]
@@ -262,33 +262,35 @@ def activate
# PUT /users/1
# PUT /users/1.xml
def update
- if params[:new_email] == @user.email
- #change profile
- @user.profile.update_attributes(params[:profile_attributes])
- if @user.profile.save
- flash[:notice] = ts("Your profile has been successfully updated")
- else
- render :edit and return
- end
- redirect_to user_profile_path(@user) and return
- else
- #have to reuthenticate to change email
- if !reauthenticate
- render :edit and return
+ @user.profile.update_attributes(params[:profile_attributes])
+ if @user.profile.save
+ flash[:notice] = ts("Your profile has been successfully updated")
+ render :edit and return
+ else
+ render :edit and return
+ end
+ end
+
+ def change_email
+ if params[:new_email].blank?
+ render :change_email and return
+ else
+ if !reauthenticate
+ render :change_email and return
else
- @old_email = @user.email
- @user.email = params[:new_email]
- @new_email = params[:new_email]
- if @user.save
- flash[:notice] = ts("Your email has been successfully updated")
- UserMailer.change_email(@user.id, @old_email, @new_email).deliver
- @user.create_log_item( options = {:action => ArchiveConfig.ACTION_NEW_EMAIL})
- else
- render :edit and return
- end
- redirect_to user_profile_path(@user) and return
- end
+ @old_email = @user.email
+ @user.email = params[:new_email]
+ @new_email = params[:new_email]
+ if @user.save
+ flash[:notice] = ts("Your email has been successfully updated")
+ UserMailer.change_email(@user.id, @old_email, @new_email).deliver
+ @user.create_log_item( options = {:action => ArchiveConfig.ACTION_NEW_EMAIL})
+ else
+ render :change_email and return
end
+ end
+ end
+ render :change_email and return
end
# DELETE /users/1
@@ -409,21 +411,28 @@ def browse
private
- def reauthenticate
- if !params[:password_check].blank?
- session = UserSession.new(:login => @user.login, :password => params[:password_check])
- if session.valid?
- return true
- else
- flash.now[:error] = ts("Your old password was incorrect")
- @wrong_password = true
- return false
- end
+ def reauthenticate
+ if !params[:password_check].blank?
+ session = UserSession.new(:login => @user.login, :password => params[:password_check])
+ if session.valid?
+ return true
else
- flash.now[:error] = ts("You must authenticate again first")
- @wrong_password = true
- return false
- end
+ if params[:new_email]
+ flash.now[:error] = ts("Your password was incorrect")
+ else
+ flash.now[:error] = ts("Your old password was incorrect")
+ end
+ @wrong_password = true
+ return false
+ end
+ else
+ if params[:new_email]
+ flash.now[:error] = ts("You must enter your password")
+ else
+ flash.now[:error] = ts("You must enter your old password")
+ end
+ @wrong_password = true
+ return false
end
- end
-
+ end
+end
View
1  app/views/user_mailer/change_email.html.erb
@@ -2,4 +2,3 @@
<%= @user.email%>
-<p><%= ts("If you did not request this change, please contact") %> <%= ArchiveConfig.SUPPORT_ADDRESS %></p>
View
43 app/views/users/change_email.html.erb
@@ -0,0 +1,43 @@
+<!--Descriptive page name, messages and instructions-->
+<h2><%= ts("Change My Email") %></h2>
+<%= error_messages_for :user %>
+<!--/descriptions-->
+
+<!--subnav-->
+<ul class="navigation" role="navigation">
+ <li><%= link_to ts("Edit default pseud and icon"), [:edit, @user, @user.default_pseud] %></li>
+ <li><%= link_to ts("Change User Name"), change_username_user_path(@user) %></li>
+ <li><%= link_to ts("Change Password"), change_password_user_path(@user) %></li>
+ <% if ArchiveConfig.USE_OPENID %>
+ <% if @user.identity_url %>
+ <li><%= link_to ts("Change My OpenID"), change_openid_user_path(@user) %></li>
+ <% else %>
+ <li><%= link_to ts("Add An OpenID"), change_openid_user_path(@user) %></li>
+ <% end %>
+ <% end %>
+</ul>
+<!--/subnav-->
+
+<!--main content-->
+<%= form_tag change_email_user_path(@user) do %>
+<% if @user.recently_reset? %>
+ <p><%= ts("You used a temporary password to log in. Please change it now as it will expire in a week.") %></p>
+<% end %>
+ <dl>
+ <% unless @user.recently_reset? %>
+ <dt><%= label_tag :password_check, ts("Password") %></dt>
+ <dd><%= password_field_tag :password_check%></dd>
+ <% end %>
+
+ <dt><%= label_tag :new_email, ts("New Email") %></dt>
+ <dd><%= email_field_tag :new_email %></dd>
+
+ <dt><%= label_tag :email_confirmation, ts("Confirm New Email") %></dt>
+ <dd><%= email_field_tag :email_confirmation %></dd>
+ </dl>
+ <p class="submit">
+ <%= submit_tag "Change Email" %>
+ </p>
+<% end %>
+<hr class="clear" />
+<!--/content-->
View
21 app/views/users/change_password.html.erb
@@ -6,37 +6,40 @@
<!--subnav-->
<ul class="navigation" role="navigation">
<li><%= link_to ts("Edit default pseud and icon"), [:edit, @user, @user.default_pseud] %></li>
- <li><%= link_to ts("Change My User Name"), change_username_user_path(@user) %></li>
- <% if ArchiveConfig.USE_OPENID %>
+ <li><%= link_to ts("Change User Name"), change_username_user_path(@user) %></li>
+ <li><%= link_to ts("Change Email"), change_email_user_path(@user) %></li>
+ <% if ArchiveConfig.USE_OPENID %>
+ <li>
<% if @user.identity_url %>
- <li><%= link_to ts("Change My OpenID"), change_openid_user_path(@user) %></li>
+ <%= link_to ts("Change My OpenID"), change_openid_user_path(@user) %>
<% else %>
- <li><%= link_to ts("Add An OpenID"), change_openid_user_path(@user) %></li>
+ <%= link_to ts("Add An OpenID"), change_openid_user_path(@user) %>
<% end %>
+ </li>
<% end %>
-</ul>
+</ul>
<!--/subnav-->
<!--main content-->
-<%= form_tag change_password_user_path(@user) do %>
+<%= form_tag change_password_user_path(@user) do %>
<% if @user.recently_reset? %>
<p><%= ts("You used a temporary password to log in. Please change it now as it will expire in a week.") %></p>
<% end %>
+
<dl>
<% unless @user.recently_reset? %>
- <dt><%= label_tag :password_check, ts("Old password") %></dt>
+ <dt><%= label_tag :password_check, ts("Old Password") %></dt>
<dd><%= password_field_tag :password_check%></dd>
<% end %>
-
<dt><%= label_tag :password, ts("New Password") %></dt>
<dd><%= password_field_tag :password %></dd>
-
<dt><%= label_tag :password_confirmation, ts("Confirm New Password") %></dt>
<dd><%= password_field_tag :password_confirmation %></dd>
</dl>
<p class="submit">
<%= submit_tag "Change Password" %>
</p>
+
<% end %>
<hr class="clear" />
<!--/content-->
View
22 app/views/users/edit.html.erb
@@ -5,16 +5,19 @@
<!--/descriptions-->
<!--subnav-->
-<ul class="navigation" role="navigation">
+<ul class="edit-navigation" role="navigation">
<li><%= link_to ts("Edit default pseud and icon"), [:edit, @user, @user.default_pseud] %></li>
- <li><%= link_to ts("Change My User Name"), change_username_user_path(@user) %></li>
+ <li><%= link_to ts("Change User Name"), change_username_user_path(@user) %></li>
<li>
<% if @user.crypted_password %>
- <%= link_to ts("Change My Password"), change_password_user_path(@user) %>
+ <%= link_to ts("Change Password"), change_password_user_path(@user) %>
<% else %>
<%= link_to ts("Add a Password"), change_password_user_path(@user) %>
<% end %>
</li>
+ <li>
+ <%= link_to ts("Change Email"), change_email_user_path(@user) %>
+ </li>
<% if ArchiveConfig.USE_OPENID %>
<li>
<% if @user.identity_url %>
@@ -30,16 +33,7 @@
<!--main content-->
<%= form_for(@user) do |f| %>
<dl>
- <dt><%= label_tag :password_check, ts("Old password") %></dt>
- <dd><%= password_field_tag :password_check%></dd>
-
- <% if ArchiveConfig.USE_OPENID && @user.identity_url %>
- <dt><%= label_tag :identity_url_check, ts("OR Current OpenID URL") %></dt>
- <dd><%= text_field_tag :identity_url_check, "", :size => 50 %></strong></dd>
- <% end %>
- <dt><%= label_tag :new_email, "Change Email" %></dt>
- <dd><%= text_field_tag :new_email, @user.email %></dd>
<%= fields_for :profile_attributes, @user.profile do |p| %>
<dt><%= p.label :title, "Title" %></dt>
<dd>
@@ -67,11 +61,11 @@
</dd>
</dl>
<% end %>
-
+
<p class="submit">
<%= f.submit "Update" %>
</p>
-<% end %>
+ <% end %>
<hr class="clear" />
<!--/content-->
View
4 config/routes.rb
@@ -122,9 +122,11 @@
resources :users do
member do
get :browse
+ get :change_email
+ post :change_email
get :change_openid
post :change_openid
- get :change_password
+ get :change_password
post :change_password
get :change_username
post :change_username
View
2  features/preferences_edit.feature
@@ -32,7 +32,7 @@ Feature: Edit preferences
And I should see "Edit My Profile"
And I should see "Orphan My Works"
When I follow "Edit My Profile"
- Then I should see "Change My Password"
+ Then I should see "Change Password"
When I follow "editname"
Then I should see "My Dashboard"
When I follow "Profile"
View
84 features/profile_edit.feature
@@ -1,6 +1,6 @@
@users
Feature: Edit profile
- In order to have an archive full of users
+ In order to have a presence on the archive
As a humble user
I want to fill out and edit my profile
@@ -15,81 +15,83 @@ Background:
Scenario: Edit profile - add details
- When I fill in the details of my profile
- Then I should see "Your profile has been successfully updated"
- And 0 emails should be delivered
+ When I fill in the details of my profile
+ Then I should see "Your profile has been successfully updated"
+ And 0 emails should be delivered
Scenario: Edit profile - change details
- When I change the details in my profile
- Then I should see "Your profile has been successfully updated"
- And 0 emails should be delivered
+ When I change the details in my profile
+ Then I should see "Your profile has been successfully updated"
+ And 0 emails should be delivered
Scenario: Edit profile - remove details
- When I remove details from my profile
- Then I should see "Your profile has been successfully updated"
- And 0 emails should be delivered
+ When I remove details from my profile
+ Then I should see "Your profile has been successfully updated"
+ And 0 emails should be delivered
-Scenario: Edit profile - changing email address requires authenticating
+Scenario: Edit profile - changing email address requires reauthenticating
- When I fill in "Change Email" with "blah"
- And I press "Update"
- Then I should see "You must authenticate"
- And 0 emails should be delivered
+ When I follow "Change Email"
+ And I fill in "New Email" with "blah"
+ And I fill in "Confirm New Email" with "blah"
+ And I press "Change Email"
+ Then I should see "You must enter your password"
+ And 0 emails should be delivered
Scenario: Edit profile - changing email address - entering an invalid email address
When I enter an invalid email
Then I should see "Email does not seem to be a valid address"
- And 0 emails should be delivered
+ And 0 emails should be delivered
Scenario: Edit profile - changing email address - entering an incorrect password
-
- When I fill in "Change Email" with "valid2@archiveofourown.org"
- When I enter an incorrect password
- Then I should see "Your old password was incorrect"
- And 0 emails should be delivered
+
+ When I enter an incorrect password
+ Then I should see "Your password was incorrect"
+ And 0 emails should be delivered
Scenario: Edit profile - Changing email address and viewing
- When I change my email
- Then I should see "Your email has been successfully updated"
- And 1 email should be delivered to "bar@ao3.org"
+ When I change my email
+ Then I should see "Your email has been successfully updated"
+ And 1 email should be delivered to "bar@ao3.org"
When I change my preferences to display my email address
- Then I should see "My email address: valid2@archiveofourown.org"
+ Then I should see "My email address: valid2@archiveofourown.org"
Scenario: Edit profile - Changing email address -- can't be the same as another user's
- When I enter a duplicate email
+ When I enter a duplicate email
Then I should see "Email has already been taken"
- And 0 emails should be delivered
+ And 0 emails should be delivered
Scenario: Edit profile - date of birth - under age
- When I enter a birthdate that shows I am under age
- Then I should see "You must be over 13"
+ When I enter a birthdate that shows I am under age
+ Then I should see "You must be over 13"
Scenario: Edit profile - entering date of birth and displaying
- When I fill in my date of birth
- Then I should see "Your profile has been successfully updated"
- When I change my preferences to display my date of birth
- Then I should see "My birthday: 1980-11-30"
+ When I fill in my date of birth
+ Then I should see "Your profile has been successfully updated"
+ When I change my preferences to display my date of birth
+ Then I should see "My birthday: 1980-11-30"
And 0 emails should be delivered
Scenario: Edit profile - change password - mistake in typing old password
- When I make a mistake typing my old password
- Then I should see "Your old password was incorrect"
+ When I make a mistake typing my old password
+ Then I should see "Your old password was incorrect"
Scenario: Edit profile - change password - mistake in typing new password confirmation
- When I make a typing mistake confirming my new password
- Then I should see "Password doesn't match confirmation"
+ When I make a typing mistake confirming my new password
+ Then I should see "Password doesn't match confirmation"
- Scenario: Edit profile - change password
+Scenario: Edit profile - change password
- When I change my password
- Then I should see "Your password has been changed"
- And 1 email should be delivered
+ When I change my password
+ Then I should see "Your password has been changed"
+ And 1 email should be delivered
+
View
91 features/step_definitions/profile_steps.rb
@@ -2,12 +2,12 @@
click_link("editname")
click_link("Profile")
click_link("Edit My Profile")
- And %{I should see "Edit My Profile"}
+ And %{I should see "Edit My Profile"}
end
When /^I fill in the details of my profile$/ do
- fill_in("Title", :with => "Test title thingy")
+ fill_in("Title", :with => "Test title thingy")
fill_in("Location", :with => "Alpha Centauri")
fill_in("About Me", :with => "This is some text about me.")
click_button("Update")
@@ -25,103 +25,112 @@
When /^I remove details from my profile$/ do
fill_in("Title", :with => "")
fill_in("Location", :with => "")
- fill_in("About Me", :with => "")
+ fill_in("About Me", :with => "")
click_button("Update")
end
When /^I enter an incorrect password$/ do
- fill_in("Old password", :with => "passw")
- click_button("Update")
+ click_link("Change Email")
+ fill_in("New Email", :with => "valid2@archiveofourown.org")
+ fill_in("Confirm New Email", :with => "valid2@archiveofourown.org")
+ fill_in("Password", :with => "passw")
+ click_button("Change Email")
end
When /^I change my email$/ do
- fill_in("Old password", :with => "password")
- fill_in("Change Email", :with => "valid2@archiveofourown.org")
- click_button("Update")
+ click_link("Change Email")
+ fill_in("New Email", :with => "valid2@archiveofourown.org")
+ fill_in("Confirm New Email", :with => "valid2@archiveofourown.org")
+ fill_in("Password", :with => "password")
+ click_button("Change Email")
end
When /^I view my profile$/ do
- click_link("editname")
+ click_link("editname")
Then %{I should see "My Dashboard"}
- click_link("Profile")
+ click_link("Profile")
end
When /^I enter an invalid email$/ do
- fill_in("Old password", :with => "password")
- fill_in("Change Email", :with => "bob.bob.bob")
- click_button("Update")
+ click_link("Change Email")
+ fill_in("New Email", :with => "bob.bob.bob")
+ fill_in("Confirm New Email", :with => "bob.bob.bob")
+ fill_in("Password", :with => "password")
+ click_button("Change Email")
end
When /^I enter a duplicate email$/ do
user = Factory.create(:user, :login => "testuser2", :password => "password", :email => "foo@ao3.org")
user.activate
- fill_in("Change Email", :with => "foo@ao3.org")
- fill_in("Old password", :with => "password")
- click_button("Update")
+ click_link("Change Email")
+ fill_in("New Email", :with => "foo@ao3.org")
+ fill_in("Confirm New Email", :with => "foo@ao3.org")
+ fill_in("Password", :with => "password")
+ click_button("Change Email")
end
When /^I enter a birthdate that shows I am under age$/ do
- select("1998", :from => "profile_attributes[date_of_birth(1i)]")
- select("December", :from => "profile_attributes[date_of_birth(2i)]")
- select("31", :from => "profile_attributes[date_of_birth(3i)]")
- click_button("Update")
+ select("1998", :from => "profile_attributes[date_of_birth(1i)]")
+ select("December", :from => "profile_attributes[date_of_birth(2i)]")
+ select("31", :from => "profile_attributes[date_of_birth(3i)]")
+ click_button("Update")
end
When /^I change my preferences to display my date of birth$/ do
- click_link("My Preferences")
- check ("Display Date of Birth")
- click_button("Update")
- click_link("editname")
- click_link("Profile")
+ click_link("My Preferences")
+ check ("Display Date of Birth")
+ click_button("Update")
+ click_link("editname")
+ click_link("Profile")
end
When /^I change my preferences to display my email address$/ do
- click_link("My Preferences")
- check ("Display Email Address")
- click_button("Update")
- click_link("editname")
- click_link("Profile")
+ click_link("My Preferences")
+ check ("Display Email Address")
+ click_button("Update")
+ click_link("editname")
+ click_link("Profile")
end
When /^I fill in my date of birth$/ do
- select("1980", :from => "profile_attributes[date_of_birth(1i)]")
- select("November", :from => "profile_attributes[date_of_birth(2i)]")
- select("30", :from => "profile_attributes[date_of_birth(3i)]")
- click_button("Update")
+ select("1980", :from => "profile_attributes[date_of_birth(1i)]")
+ select("November", :from => "profile_attributes[date_of_birth(2i)]")
+ select("30", :from => "profile_attributes[date_of_birth(3i)]")
+ click_button("Update")
end
When /^I make a mistake typing my old password$/ do
- click_link("Change My Password")
+ click_link("Change Password")
fill_in("New Password", :with => "newpass1")
fill_in("Confirm New Password", :with => "newpass1")
- fill_in("Old password", :with => "wrong")
+ fill_in("Old Password", :with => "wrong")
click_button("Change Password")
end
When /^I make a typing mistake confirming my new password$/ do
- click_link("Change My Password")
- fill_in("New Password", :with => "newpass1")
+ click_link("Change Password")
+ fill_in("New Password", :with => "newpass1")
fill_in("Confirm New Password", :with => "newpass2")
- fill_in("Old password", :with => "password")
+ fill_in("Old Password", :with => "password")
click_button("Change Password")
end
When /^I change my password$/ do
- click_link("Change My Password")
+ click_link("Change Password")
fill_in("New Password", :with => "newpass1")
fill_in("Confirm New Password", :with => "newpass1")
- fill_in("Old password", :with => "password")
+ fill_in("Old Password", :with => "password")
click_button("Change Password")
end
View
10 public/stylesheets/site-chrome.css
@@ -54,10 +54,14 @@ NAVIGATION, ACTIONS (BUTTONS)*/
{ margin: 0.5em auto 1em; border:1px solid #bbb; background:#fffef9 url(/images/fffef9-ccc.png) bottom left repeat-x; padding:0.15em 0.5em 0.25em; float:right; border-radius:3em; -moz-border-radius:3em; -webkit-border-radius:2em;}
.navigation li,li.navigation, #main .navigation h4, .navigation div
{ display: inline }
-#main .navigation a, .submit input, .submit a, #main .navigation input
- { background: transparent; border:0; border-right:1px solid #ccc; border-left:1px solid #ccc; cursor: pointer; font-weight: 700; margin: 0 0.125em; padding: 0.25em 0.5em; text-decoration: none; width: auto }
+#main ul.edit-navigation
+ { margin: 0.5em auto 1em; border:1px solid #bbb; background:#fffef9 url(/images/fffef9-ccc.png) bottom left repeat-x; padding:0.15em 0.5em 0.25em; float:left; border-radius:3em; -moz-border-radius:3em; -webkit-border-radius:2em;}
+ .edit-navigation li
+ {display:inline;}
+#main .navigation a, #main ul.edit-navigation a, .submit input, .submit a, #main .navigation input
+ { background: transparent; border:0; border-right:1px solid #ccc; border-left:1px solid #ccc; cursor: pointer; font-weight: 700; margin: 0 0.125em; padding: 0.25em 0.5em; text-decoration: none; width: auto }
.submit input.text, #main .navigation input.text
- { cursor: text;}
+ { cursor: text;}
#main.admin_users-show .navigation form, #main.admin_users-show .navigation div
{ display: inline; } /* cancelling out the side-effects of button_to */
.navigation a:hover, .submit a:hover, .submit input:hover, .navigation input:hover
Something went wrong with that request. Please try again.