diff --git a/app/controllers/admin/registrars_controller.rb b/app/controllers/admin/registrars_controller.rb index de8d099d2..119abf85b 100644 --- a/app/controllers/admin/registrars_controller.rb +++ b/app/controllers/admin/registrars_controller.rb @@ -78,7 +78,8 @@ module Admin :billing_email, :code, :test_registrar, - :accounting_customer_code) + :accounting_customer_code, + :language) end end end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index b410a1c76..418277b8a 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -16,8 +16,11 @@ class Registrar < ActiveRecord::Base validates :name, :reg_no, :country_code, :email, :code, presence: true validates :name, :reg_no, :reference_no, :code, uniqueness: true validates :accounting_customer_code, presence: true + validates :language, presence: true validate :forbidden_codes + after_initialize :set_defaults + def forbidden_codes return true unless ['CID'].include? code errors.add(:code, I18n.t(:forbidden_code)) @@ -163,4 +166,10 @@ class Registrar < ActiveRecord::Base return true unless Setting.api_ip_whitelist_enabled white_ips.api.pluck(:ipv4, :ipv6).flatten.include?(ip) end + + private + + def set_defaults + self.language = Setting.default_language unless language + end end diff --git a/app/views/admin/registrars/_form.html.erb b/app/views/admin/registrars/_form.html.erb index 7bdddb5d9..389960f01 100644 --- a/app/views/admin/registrars/_form.html.erb +++ b/app/views/admin/registrars/_form.html.erb @@ -149,6 +149,7 @@ + <%= render 'admin/registrars/form/preferences', f: f %>
diff --git a/app/views/admin/registrars/form/_preferences.html.erb b/app/views/admin/registrars/form/_preferences.html.erb new file mode 100644 index 000000000..443c7cf91 --- /dev/null +++ b/app/views/admin/registrars/form/_preferences.html.erb @@ -0,0 +1,20 @@ +
+
+
+
+ <%= t '.header' %> +
+ +
+
+
+ <%= f.label :language %> +
+
+ <%= f.language_select :language, nil, {}, required: true, class: 'form-control' %> +
+
+
+
+
+
diff --git a/config/locales/admin/registrars.en.yml b/config/locales/admin/registrars.en.yml index 7d1846e05..4a4fc78e6 100644 --- a/config/locales/admin/registrars.en.yml +++ b/config/locales/admin/registrars.en.yml @@ -24,3 +24,6 @@ en: billing: header: Billing + + preferences: + header: Preferences diff --git a/test/fixtures/registrars.yml b/test/fixtures/registrars.yml index 2d23188af..52b2bbc00 100644 --- a/test/fixtures/registrars.yml +++ b/test/fixtures/registrars.yml @@ -5,6 +5,7 @@ DEFAULTS: &DEFAULTS email: acme@example.com code: 1234 accounting_customer_code: ACCOUNT001 + language: en valid: <<: *DEFAULTS diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index 345297ee8..6c92bbff9 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -20,4 +20,22 @@ class RegistrarTest < ActiveSupport::TestCase @registrar.validate assert @registrar.invalid? end + + def test_requires_language + @registrar.language = nil + @registrar.validate + assert @registrar.invalid? + end + + def test_has_default_language + Setting.default_language = 'en' + registrar = Registrar.new + assert_equal 'en', registrar.language + end + + def test_overrides_default_language + Setting.default_language = 'en' + registrar = Registrar.new(language: 'de') + assert_equal 'de', registrar.language + end end