diff options
-rw-r--r-- | app/assets/stylesheets/sections/nav_sidebar.scss | 20 | ||||
-rw-r--r-- | app/controllers/admin/application_settings_controller.rb | 1 | ||||
-rw-r--r-- | app/controllers/application_controller.rb | 11 | ||||
-rw-r--r-- | app/helpers/application_helper.rb | 5 | ||||
-rw-r--r-- | app/models/application_setting.rb | 8 | ||||
-rw-r--r-- | app/views/admin/application_settings/_form.html.haml | 5 | ||||
-rw-r--r-- | app/views/layouts/devise.html.haml | 3 | ||||
-rw-r--r-- | config/initializers/1_settings.rb | 2 | ||||
-rw-r--r-- | db/migrate/20150116234544_add_home_page_url_for_application_settings.rb | 5 | ||||
-rw-r--r-- | db/schema.rb | 3 | ||||
-rw-r--r-- | features/admin/settings.feature | 4 | ||||
-rw-r--r-- | features/steps/admin/settings.rb | 6 |
12 files changed, 48 insertions, 25 deletions
diff --git a/app/assets/stylesheets/sections/nav_sidebar.scss b/app/assets/stylesheets/sections/nav_sidebar.scss index edb5f90813f..dc1a889ed5f 100644 --- a/app/assets/stylesheets/sections/nav_sidebar.scss +++ b/app/assets/stylesheets/sections/nav_sidebar.scss @@ -1,5 +1,13 @@ .page-with-sidebar { background: #F5F5F5; + + .sidebar-wrapper { + position: fixed; + top: 0; + left: 0; + height: 100%; + border-right: 1px solid #EAEAEA; + } } .sidebar-wrapper { @@ -97,11 +105,6 @@ .sidebar-wrapper { width: 250px; - position: fixed; - left: 250px; - height: 100%; - margin-left: -250px; - border-right: 1px solid #EAEAEA; .nav-sidebar { margin-top: 20px; @@ -123,11 +126,6 @@ .sidebar-wrapper { width: 52px; - position: fixed; - top: 0; - left: 0; - height: 100%; - border-right: 1px solid #EAEAEA; overflow-x: hidden; .nav-sidebar { @@ -157,5 +155,3 @@ @media(min-width: $screen-sm-max) { @include expanded-sidebar; } - - diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb index 5116f1f177a..a937f484877 100644 --- a/app/controllers/admin/application_settings_controller.rb +++ b/app/controllers/admin/application_settings_controller.rb @@ -26,6 +26,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController :signin_enabled, :gravatar_enabled, :sign_in_text, + :home_page_url ) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b83de68c5d2..6da4f91c3f4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -48,6 +48,17 @@ class ApplicationController < ActionController::Base end end + def authenticate_user!(*args) + # If user is not signe-in and tries to access root_path - redirect him to landing page + if current_application_settings.home_page_url.present? + if current_user.nil? && controller_name == 'dashboard' && action_name == 'show' + redirect_to current_application_settings.home_page_url and return + end + end + + super(*args) + end + def log_exception(exception) application_trace = ActionDispatch::ExceptionWrapper.new(env, exception).application_trace application_trace.map!{ |t| " #{t}\n" } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f21b0bd1f50..092a1ba9229 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -305,9 +305,4 @@ module ApplicationHelper profile_key_path(key) end end - - def redirect_from_root? - request.env['rack.session']['user_return_to'] == - '/' - end end diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 47fa6f1071c..aed4068f309 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -1,4 +1,8 @@ class ApplicationSetting < ActiveRecord::Base + validates :home_page_url, allow_blank: true, + format: { with: URI::regexp(%w(http https)), message: "should be a valid url" }, + if: :home_page_url_column_exist + def self.current ApplicationSetting.last end @@ -12,4 +16,8 @@ class ApplicationSetting < ActiveRecord::Base sign_in_text: Settings.extra['sign_in_text'], ) end + + def home_page_url_column_exist + ActiveRecord::Base.connection.column_exists?(:application_settings, :home_page_url) + end end diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml index 5ca9585e9a9..9423a207068 100644 --- a/app/views/admin/application_settings/_form.html.haml +++ b/app/views/admin/application_settings/_form.html.haml @@ -26,6 +26,11 @@ .col-sm-10 = f.number_field :default_projects_limit, class: 'form-control' .form-group + = f.label :home_page_url, class: 'control-label' + .col-sm-10 + = f.text_field :home_page_url, class: 'form-control', placeholder: 'http://company.example.com' + %span.help-block We will redirect non-logged in users to this page + .form-group = f.label :sign_in_text, class: 'control-label' .col-sm-10 = f.text_area :sign_in_text, class: 'form-control' diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml index 857ebd9b8d9..6f805f1c9d1 100644 --- a/app/views/layouts/devise.html.haml +++ b/app/views/layouts/devise.html.haml @@ -6,8 +6,7 @@ = render "layouts/public_head_panel", title: '' .container.navless-container .content - - unless redirect_from_root? - = render "layouts/flash" + = render "layouts/flash" .row.prepend-top-20 .col-sm-5.pull-right = yield diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 3685008bcb0..cdb958aa6a6 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -105,7 +105,7 @@ rescue ArgumentError # no user configured '/home/' + Settings.gitlab['user'] end Settings.gitlab['time_zone'] ||= nil -Settings.gitlab['signup_enabled'] ||= true +Settings.gitlab['signup_enabled'] ||= true if Settings.gitlab['signup_enabled'].nil? Settings.gitlab['signin_enabled'] ||= true if Settings.gitlab['signin_enabled'].nil? Settings.gitlab['restricted_visibility_levels'] = Settings.send(:verify_constant_array, Gitlab::VisibilityLevel, Settings.gitlab['restricted_visibility_levels'], []) Settings.gitlab['username_changing_enabled'] = true if Settings.gitlab['username_changing_enabled'].nil? diff --git a/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb b/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb new file mode 100644 index 00000000000..aa179ce3a4d --- /dev/null +++ b/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb @@ -0,0 +1,5 @@ +class AddHomePageUrlForApplicationSettings < ActiveRecord::Migration + def change + add_column :application_settings, :home_page_url, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index dedfce4797b..b453164d712 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: 20150108073740) do +ActiveRecord::Schema.define(version: 20150116234544) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -24,6 +24,7 @@ ActiveRecord::Schema.define(version: 20150108073740) do t.text "sign_in_text" t.datetime "created_at" t.datetime "updated_at" + t.string "home_page_url" end create_table "broadcast_messages", force: true do |t| diff --git a/features/admin/settings.feature b/features/admin/settings.feature index 8799c053ea2..8fdf0575c2c 100644 --- a/features/admin/settings.feature +++ b/features/admin/settings.feature @@ -5,5 +5,5 @@ Feature: Admin Settings And I visit admin settings page Scenario: Change application settings - When I disable gravatars and save form - Then I should be see gravatar disabled + When I modify settings and save form + Then I should see application settings saved diff --git a/features/steps/admin/settings.rb b/features/steps/admin/settings.rb index e8168e85def..c2d0d2a3fa3 100644 --- a/features/steps/admin/settings.rb +++ b/features/steps/admin/settings.rb @@ -4,13 +4,15 @@ class Spinach::Features::AdminSettings < Spinach::FeatureSteps include SharedAdmin include Gitlab::CurrentSettings - step 'I disable gravatars and save form' do + step 'I modify settings and save form' do uncheck 'Gravatar enabled' + fill_in 'Home page url', with: 'https://about.gitlab.com/' click_button 'Save' end - step 'I should be see gravatar disabled' do + step 'I should see application settings saved' do current_application_settings.gravatar_enabled.should be_false + current_application_settings.home_page_url.should == 'https://about.gitlab.com/' page.should have_content 'Application settings saved successfully' end end |