From e2c5d08e7e4482bd13b8e2e4f77db73dc757d6a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20G=C3=B6bel?= Date: Mon, 5 Oct 2015 17:22:47 +0200 Subject: [PATCH 1/2] added user preference to change layout width --- CHANGELOG | 1 + app/controllers/profiles/preferences_controller.rb | 1 + app/helpers/page_layout_helper.rb | 2 +- app/helpers/preferences_helper.rb | 7 +++++++ app/models/user.rb | 4 ++++ app/views/profiles/preferences/show.html.haml | 7 +++++++ app/views/profiles/preferences/update.js.erb | 7 +++++++ db/migrate/20151005150751_add_layout_option_for_users.rb | 5 +++++ db/schema.rb | 3 ++- 9 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20151005150751_add_layout_option_for_users.rb diff --git a/CHANGELOG b/CHANGELOG index a455650bed9..58f1bab2d18 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -31,6 +31,7 @@ v 8.1.0 (unreleased) - Hide password in the service settings form - Fix anchors to comments in diffs - Move CI web hooks page to project settings area + - Add user preference to change layout width (Peter Göbel) v 8.0.3 - Fix URL shown in Slack notifications diff --git a/app/controllers/profiles/preferences_controller.rb b/app/controllers/profiles/preferences_controller.rb index f83b4abd1e2..a9a06ecc808 100644 --- a/app/controllers/profiles/preferences_controller.rb +++ b/app/controllers/profiles/preferences_controller.rb @@ -31,6 +31,7 @@ class Profiles::PreferencesController < Profiles::ApplicationController def preferences_params params.require(:user).permit( :color_scheme_id, + :layout, :dashboard, :project_view, :theme_id diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb index df37be51ce9..8160253e59a 100644 --- a/app/helpers/page_layout_helper.rb +++ b/app/helpers/page_layout_helper.rb @@ -26,7 +26,7 @@ module PageLayoutHelper def fluid_layout(enabled = false) if @fluid_layout.nil? - @fluid_layout = enabled + @fluid_layout = (current_user && current_user.layout == "wide") || enabled else @fluid_layout end diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 1b1f4162df4..8470d733495 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -1,5 +1,12 @@ # Helper methods for per-User preferences module PreferencesHelper + def layout_choices + [ + ['Small', :small], + ['Wide', :wide] + ] + end + # Maps `dashboard` values to more user-friendly option text DASHBOARD_CHOICES = { projects: 'Your Projects (default)', diff --git a/app/models/user.rb b/app/models/user.rb index 1069f8e3664..112a85e7845 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -54,6 +54,7 @@ # public_email :string(255) default(""), not null # dashboard :integer default(0) # project_view :integer default(0) +# layout :integer default(0) # require 'carrierwave/orm/activerecord' @@ -171,6 +172,9 @@ class User < ActiveRecord::Base after_create :post_create_hook after_destroy :post_destroy_hook + # User's Layout preference + enum layout: [:small, :wide] + # User's Dashboard preference # Note: When adding an option, it MUST go on the end of the array. enum dashboard: [:projects, :stars, :project_activity, :starred_project_activity] diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml index 60289bfe7cd..c12a358651f 100644 --- a/app/views/profiles/preferences/show.html.haml +++ b/app/views/profiles/preferences/show.html.haml @@ -32,6 +32,13 @@ .panel-heading Behavior .panel-body + .form-group + = f.label :layout, class: 'control-label' do + Layout width + .col-sm-10 + = f.select :layout, layout_choices, {}, class: 'form-control' + .help-block + Choose between small (max. 1200px) and wide (100%) application layout .form-group = f.label :dashboard, class: 'control-label' do Default Dashboard diff --git a/app/views/profiles/preferences/update.js.erb b/app/views/profiles/preferences/update.js.erb index 6c4b0ce757d..97d856fa88c 100644 --- a/app/views/profiles/preferences/update.js.erb +++ b/app/views/profiles/preferences/update.js.erb @@ -2,6 +2,13 @@ $('body').removeClass('<%= Gitlab::Themes.body_classes %>') $('body').addClass('<%= user_application_theme %>') +// Toggle container-fluid class +if ('<%= current_user.layout %>' === 'wide') { + $('.content-wrapper').find('.container-fluid').removeClass('container-limited') +} else { + $('.content-wrapper').find('.container-fluid').addClass('container-limited') +} + // Re-enable the "Save" button $('input[type=submit]').enable() diff --git a/db/migrate/20151005150751_add_layout_option_for_users.rb b/db/migrate/20151005150751_add_layout_option_for_users.rb new file mode 100644 index 00000000000..5ead0c04d5a --- /dev/null +++ b/db/migrate/20151005150751_add_layout_option_for_users.rb @@ -0,0 +1,5 @@ +class AddLayoutOptionForUsers < ActiveRecord::Migration + def change + add_column :users, :layout, :integer, :default => 0 + end +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index 72609da93f1..186dfec8861 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150930095736) do +ActiveRecord::Schema.define(version: 20151005150751) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -753,6 +753,7 @@ ActiveRecord::Schema.define(version: 20150930095736) do t.integer "dashboard", default: 0 t.integer "project_view", default: 0 t.integer "consumed_timestep" + t.integer "layout", default: 0 end add_index "users", ["admin"], name: "index_users_on_admin", using: :btree From 291e1fa93063a62e7a0f054135dc5bcebcdd0056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20G=C3=B6bel?= Date: Mon, 5 Oct 2015 18:09:05 +0200 Subject: [PATCH 2/2] improved code style and layout option naming --- app/helpers/page_layout_helper.rb | 2 +- app/helpers/preferences_helper.rb | 4 ++-- app/models/user.rb | 2 +- app/views/profiles/preferences/show.html.haml | 2 +- app/views/profiles/preferences/update.js.erb | 2 +- db/migrate/20151005150751_add_layout_option_for_users.rb | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb index 8160253e59a..775cf5a3dd4 100644 --- a/app/helpers/page_layout_helper.rb +++ b/app/helpers/page_layout_helper.rb @@ -26,7 +26,7 @@ module PageLayoutHelper def fluid_layout(enabled = false) if @fluid_layout.nil? - @fluid_layout = (current_user && current_user.layout == "wide") || enabled + @fluid_layout = (current_user && current_user.layout == "fluid") || enabled else @fluid_layout end diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 8470d733495..4710171ebaa 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -2,8 +2,8 @@ module PreferencesHelper def layout_choices [ - ['Small', :small], - ['Wide', :wide] + ['Fixed', :fixed], + ['Fluid', :fluid] ] end diff --git a/app/models/user.rb b/app/models/user.rb index 112a85e7845..8e44e828b89 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -173,7 +173,7 @@ class User < ActiveRecord::Base after_destroy :post_destroy_hook # User's Layout preference - enum layout: [:small, :wide] + enum layout: [:fixed, :fluid] # User's Dashboard preference # Note: When adding an option, it MUST go on the end of the array. diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml index c12a358651f..01e285a8dfa 100644 --- a/app/views/profiles/preferences/show.html.haml +++ b/app/views/profiles/preferences/show.html.haml @@ -38,7 +38,7 @@ .col-sm-10 = f.select :layout, layout_choices, {}, class: 'form-control' .help-block - Choose between small (max. 1200px) and wide (100%) application layout + Choose between fixed (max. 1200px) and fluid (100%) application layout .form-group = f.label :dashboard, class: 'control-label' do Default Dashboard diff --git a/app/views/profiles/preferences/update.js.erb b/app/views/profiles/preferences/update.js.erb index 97d856fa88c..4433cab7782 100644 --- a/app/views/profiles/preferences/update.js.erb +++ b/app/views/profiles/preferences/update.js.erb @@ -3,7 +3,7 @@ $('body').removeClass('<%= Gitlab::Themes.body_classes %>') $('body').addClass('<%= user_application_theme %>') // Toggle container-fluid class -if ('<%= current_user.layout %>' === 'wide') { +if ('<%= current_user.layout %>' === 'fluid') { $('.content-wrapper').find('.container-fluid').removeClass('container-limited') } else { $('.content-wrapper').find('.container-fluid').addClass('container-limited') diff --git a/db/migrate/20151005150751_add_layout_option_for_users.rb b/db/migrate/20151005150751_add_layout_option_for_users.rb index 5ead0c04d5a..ead9b1f8977 100644 --- a/db/migrate/20151005150751_add_layout_option_for_users.rb +++ b/db/migrate/20151005150751_add_layout_option_for_users.rb @@ -1,5 +1,5 @@ class AddLayoutOptionForUsers < ActiveRecord::Migration def change - add_column :users, :layout, :integer, :default => 0 + add_column :users, :layout, :integer, default: 0 end end \ No newline at end of file