Improve user feedback on the Profile > Design page
- Header changes immediately without a page reload - Lets the user know that we actually saved their setting when changed
This commit is contained in:
parent
0046409970
commit
30a66c065a
7 changed files with 73 additions and 12 deletions
10
app/assets/javascripts/profile.js.coffee
Normal file
10
app/assets/javascripts/profile.js.coffee
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
$ ->
|
||||||
|
$('.edit_user .application-theme input, .edit_user .code-preview-theme input').click ->
|
||||||
|
# Hide any previous submission feedback
|
||||||
|
$('.edit_user .update-feedback').hide()
|
||||||
|
|
||||||
|
# Submit the form
|
||||||
|
$('.edit_user').submit()
|
||||||
|
|
||||||
|
# Go up the hierarchy and show the corresponding submission feedback element
|
||||||
|
$(@).closest('fieldset').find('.update-feedback').show('highlight', {color: '#DFF0D8'}, 500)
|
|
@ -1,3 +1,10 @@
|
||||||
|
.application-theme, .code-preview-theme {
|
||||||
|
.update-feedback {
|
||||||
|
color: #468847;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.themes_opts {
|
.themes_opts {
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,11 @@ class ProfileController < ApplicationController
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@user.update_attributes(params[:user])
|
@user.update_attributes(params[:user])
|
||||||
redirect_to :back
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to :back }
|
||||||
|
format.js
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def token
|
def token
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
= form_for @user, url: profile_update_path, remote: true, method: :put do |f|
|
= form_for @user, url: profile_update_path, remote: true, method: :put do |f|
|
||||||
%fieldset
|
%fieldset.application-theme
|
||||||
%legend Application theme
|
%legend
|
||||||
|
Application theme
|
||||||
|
.update-feedback.hide
|
||||||
|
%i.icon-ok
|
||||||
|
Saved
|
||||||
.themes_opts
|
.themes_opts
|
||||||
= label_tag do
|
= label_tag do
|
||||||
.prev.default
|
.prev.default
|
||||||
|
@ -29,8 +33,12 @@
|
||||||
%br
|
%br
|
||||||
.clearfix
|
.clearfix
|
||||||
|
|
||||||
%fieldset
|
%fieldset.code-preview-theme
|
||||||
%legend Code review
|
%legend
|
||||||
|
Code preview theme
|
||||||
|
.update-feedback.hide
|
||||||
|
%i.icon-ok
|
||||||
|
Saved
|
||||||
.code_highlight_opts
|
.code_highlight_opts
|
||||||
= label_tag do
|
= label_tag do
|
||||||
.prev
|
.prev
|
||||||
|
@ -42,10 +50,3 @@
|
||||||
= image_tag "dark.png"
|
= image_tag "dark.png"
|
||||||
= f.radio_button :dark_scheme, true
|
= f.radio_button :dark_scheme, true
|
||||||
Dark code preview
|
Dark code preview
|
||||||
|
|
||||||
:javascript
|
|
||||||
$(function(){
|
|
||||||
$(".edit_user input").bind("click", function() {
|
|
||||||
$(".edit_user").submit();
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
9
app/views/profile/update.js.erb
Normal file
9
app/views/profile/update.js.erb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
// Remove body class for any previous theme, re-add current one
|
||||||
|
$('body').removeClass('ui_basic ui_mars ui_modern ui_gray ui_color')
|
||||||
|
$('body').addClass('<%= app_theme %>')
|
||||||
|
|
||||||
|
// Re-render the header to reflect the new theme
|
||||||
|
$('header').html('<%= escape_javascript(render("layouts/head_panel", title: "Profile")) %>')
|
||||||
|
|
||||||
|
// Re-initialize header tooltips
|
||||||
|
$('.has_bottom_tooltip').tooltip({placement: 'bottom'})
|
|
@ -30,3 +30,16 @@ Feature: Profile
|
||||||
Given I have activity
|
Given I have activity
|
||||||
When I visit profile history page
|
When I visit profile history page
|
||||||
Then I should see my activity
|
Then I should see my activity
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: I change my application theme
|
||||||
|
Given I visit profile design page
|
||||||
|
When I change my application theme
|
||||||
|
Then I should see the theme change immediately
|
||||||
|
And I should receive feedback that the changes were saved
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: I change my code preview theme
|
||||||
|
Given I visit profile design page
|
||||||
|
When I change my code preview theme
|
||||||
|
Then I should receive feedback that the changes were saved
|
||||||
|
|
|
@ -59,4 +59,21 @@ class Profile < Spinach::FeatureSteps
|
||||||
Then 'I should see my activity' do
|
Then 'I should see my activity' do
|
||||||
page.should have_content "#{current_user.name} closed issue"
|
page.should have_content "#{current_user.name} closed issue"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
When "I change my application theme" do
|
||||||
|
choose "Violet"
|
||||||
|
end
|
||||||
|
|
||||||
|
When "I change my code preview theme" do
|
||||||
|
choose "Dark code preview"
|
||||||
|
end
|
||||||
|
|
||||||
|
Then "I should see the theme change immediately" do
|
||||||
|
page.should have_selector('body.ui_color')
|
||||||
|
page.should_not have_selector('body.ui_basic')
|
||||||
|
end
|
||||||
|
|
||||||
|
Then "I should receive feedback that the changes were saved" do
|
||||||
|
page.should have_content("Saved")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue