Commit 122e83c3 authored by Robert Speicher's avatar Robert Speicher

Simplify the javascript behavior for Preference updating

cherry-picked
parent 59ab9cc9
class @Profile class @Profile
constructor: -> constructor: ->
$('.edit_user .application-theme input, .edit_user .code-preview-theme input').click -> # Automatically submit the Preferences form when any of its radio buttons change
# Submit the form $('.js-preferences-form').on 'change.preference', 'input[type=radio]', ->
$('.edit_user').submit() $(this).parents('form').submit()
new Flash('Preferences saved.', 'notice')
$('.update-username form').on 'ajax:before', -> $('.update-username form').on 'ajax:before', ->
$('.loading-gif').show() $('.loading-gif').show()
...@@ -18,7 +16,6 @@ class @Profile ...@@ -18,7 +16,6 @@ class @Profile
$('.update-notifications').on 'ajax:complete', -> $('.update-notifications').on 'ajax:complete', ->
$(this).find('.btn-save').enable() $(this).find('.btn-save').enable()
$('.js-choose-user-avatar-button').bind "click", -> $('.js-choose-user-avatar-button').bind "click", ->
form = $(this).closest("form") form = $(this).closest("form")
form.find(".js-user-avatar-input").click() form.find(".js-user-avatar-input").click()
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
Appearance settings will be saved to your profile and made available across all devices. Appearance settings will be saved to your profile and made available across all devices.
%hr %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.panel-default.application-theme
.panel-heading .panel-heading
Application theme Application theme
...@@ -47,10 +47,8 @@ ...@@ -47,10 +47,8 @@
.panel-heading .panel-heading
Code preview theme Code preview theme
.panel-body .panel-body
.code_highlight_opts - color_schemes.each do |color_scheme_id, color_scheme|
- color_schemes.each do |color_scheme_id, color_scheme| = label_tag do
= label_tag do .preview= image_tag "#{color_scheme}-scheme-preview.png"
.prev = f.radio_button :color_scheme_id, color_scheme_id
= image_tag "#{color_scheme}-scheme-preview.png" = color_scheme.tr('-_', ' ').titleize
= f.radio_button :color_scheme_id, color_scheme_id
= color_scheme.gsub(/[-_]+/, ' ').humanize
// Remove body class for any previous theme, re-add current one // Remove body class for any previous theme, re-add current one
$('body').removeClass('<%= Gitlab::Theme.body_classes %>') $('body').removeClass('<%= Gitlab::Theme.body_classes %>')
$('body').addClass('<%= app_theme %> <%= theme_type %>') $('body').addClass('<%= app_theme %> <%= theme_type %>')
new Flash('<%= flash.discard(:notice) %>', 'notice')
...@@ -15,7 +15,15 @@ describe 'Profile > Preferences' do ...@@ -15,7 +15,15 @@ describe 'Profile > Preferences' do
visit profile_preferences_path visit profile_preferences_path
end end
it 'changes immediately' do 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}") expect(page).to have_selector("body.#{default.css_class}")
choose "user_theme_id_#{theme.id}" choose "user_theme_id_#{theme.id}"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment