Simplify the javascript behavior for Preference updating

This commit is contained in:
Robert Speicher 2015-06-05 18:01:45 -04:00
parent 5f20574db5
commit 0e21436aaf
4 changed files with 18 additions and 14 deletions

View file

@ -1,10 +1,8 @@
class @Profile
constructor: ->
$('.edit_user .application-theme input, .edit_user .code-preview-theme input').click ->
# Submit the form
$('.edit_user').submit()
new Flash('Preferences saved.', 'notice')
# Automatically submit the Preferences form when any of its radio buttons change
$('.js-preferences-form').on 'change.preference', 'input[type=radio]', ->
$(this).parents('form').submit()
$('.update-username form').on 'ajax:before', ->
$('.loading-gif').show()
@ -18,7 +16,6 @@ class @Profile
$('.update-notifications').on 'ajax:complete', ->
$(this).find('.btn-save').enable()
$('.js-choose-user-avatar-button').bind "click", ->
form = $(this).closest("form")
form.find(".js-user-avatar-input").click()

View file

@ -5,7 +5,7 @@
Appearance settings will be saved to your profile and made available across all devices.
%hr
= form_for @user, url: profile_preferences_path, remote: true, method: :put do |f|
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: {class: 'js-preferences-form'} do |f|
.panel.panel-default.application-theme
.panel-heading
Application theme
@ -20,10 +20,8 @@
.panel-heading
Code preview theme
.panel-body
.code_highlight_opts
- color_schemes.each do |color_scheme_id, color_scheme|
= label_tag do
.prev
= image_tag "#{color_scheme}-scheme-preview.png"
= f.radio_button :color_scheme_id, color_scheme_id
= color_scheme.gsub(/[-_]+/, ' ').humanize
- color_schemes.each do |color_scheme_id, color_scheme|
= label_tag do
.preview= image_tag "#{color_scheme}-scheme-preview.png"
= f.radio_button :color_scheme_id, color_scheme_id
= color_scheme.tr('-_', ' ').titleize

View file

@ -1,3 +1,4 @@
// Remove body class for any previous theme, re-add current one
$('body').removeClass('<%= Gitlab::Themes.body_classes %>')
$('body').addClass('<%= user_application_theme %>')
new Flash('<%= flash.discard(:notice) %>', 'notice')

View file

@ -15,6 +15,14 @@ describe 'Profile > Preferences' do
visit profile_preferences_path
end
it 'creates a flash message' do
choose "user_theme_id_#{theme.id}"
within('.flash-container') do
expect(page).to have_content('Preferences saved.')
end
end
it 'reflects the changes immediately' do
expect(page).to have_selector("body.#{default.css_class}")