From 19763065394e09de2c162a869aa953c7cd4e6fa3 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 23 Sep 2020 14:48:52 -0400 Subject: [PATCH] Add extra locales to bootstrap.json This allows an app (such as Ember CLI) to get the full list of locales for a user, including admin and overrides. --- app/controllers/bootstrap_controller.rb | 11 ++++++++++- spec/requests/bootstrap_controller_spec.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/controllers/bootstrap_controller.rb b/app/controllers/bootstrap_controller.rb index 146e89266d9..c7822b453b1 100644 --- a/app/controllers/bootstrap_controller.rb +++ b/app/controllers/bootstrap_controller.rb @@ -34,6 +34,14 @@ class BootstrapController < ApplicationController end add_style(mobile_view? ? :mobile_theme : :desktop_theme) if theme_ids.present? + extra_locales = [] + if ExtraLocalesController.client_overrides_exist? + extra_locales << ExtraLocalesController.url('overrides') + end + if staff? + extra_locales << ExtraLocalesController.url('admin') + end + bootstrap = { theme_ids: theme_ids, title: SiteSetting.title, @@ -41,8 +49,9 @@ class BootstrapController < ApplicationController locale_script: locale, stylesheets: @stylesheets, setup_data: client_side_setup_data, - preloaded: @preloaded + preloaded: @preloaded, } + bootstrap[:extra_locales] = extra_locales if extra_locales.present? render_json_dump(bootstrap: bootstrap) end diff --git a/spec/requests/bootstrap_controller_spec.rb b/spec/requests/bootstrap_controller_spec.rb index 9b1725420f1..4cd735351d1 100644 --- a/spec/requests/bootstrap_controller_spec.rb +++ b/spec/requests/bootstrap_controller_spec.rb @@ -39,4 +39,16 @@ describe BootstrapController do expect(preloaded['topicTrackingStates']).to be_present end + it "returns extra locales (admin) when staff" do + user = Fabricate(:admin) + sign_in(user) + get "/bootstrap.json" + expect(response.status).to eq(200) + + json = response.parsed_body + expect(json).to be_present + + bootstrap = json['bootstrap'] + expect(bootstrap['extra_locales']).to be_present + end end