diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 327901e4e2..9eb0429387 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -27,11 +27,6 @@ module ApplicationHelper Setting.open_deletion end - def add_rtl_body_class(other_classes) - other_classes = "#{other_classes} rtl" if locale_direction == 'rtl' - other_classes - end - def locale_direction if [:ar, :fa, :he].include?(I18n.locale) 'rtl' @@ -77,4 +72,13 @@ module ApplicationHelper def react_component(name, props = {}) content_tag(:div, nil, data: { component: name.to_s.camelcase, props: Oj.dump(props) }) end + + def body_classes + output = (@body_classes || '').split(' ') + output << "theme-#{current_theme.parameterize}" + output << 'system-font' if current_account&.user&.setting_system_font_ui + output << current_account&.user&.setting_reduce_motion ? 'reduce-motion' : 'no-reduce-motion' + output << 'rtl' if locale_direction == 'rtl' + output.reject(&:blank?).join(' ') + end end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 68a903197b..4368642376 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -24,9 +24,5 @@ = yield :header_tags - - body_classes ||= @body_classes || '' - - body_classes += ' system-font' if current_account&.user&.setting_system_font_ui - - body_classes += current_account&.user&.setting_reduce_motion ? ' reduce-motion' : ' no-reduce-motion' - - %body{ class: add_rtl_body_class(body_classes) } + %body{ class: body_classes } = content_for?(:content) ? yield(:content) : yield diff --git a/config/locales/en.yml b/config/locales/en.yml index 5e127dc713..d8a1086e47 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -350,6 +350,9 @@ en: contact_information: email: Business e-mail username: Contact username + custom_css: + desc_html: Modify the look with CSS loaded on every page + title: Custom CSS hero: desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail title: Hero image diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index ac54f1f703..3ccd96f446 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -17,7 +17,7 @@ describe ApplicationHelper do end end - describe 'add_rtl_body_class' do + describe 'locale_direction' do around do |example| current_locale = I18n.locale example.run @@ -26,22 +26,22 @@ describe ApplicationHelper do it 'adds rtl body class if locale is Arabic' do I18n.locale = :ar - expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl' + expect(helper.locale_direction).to eq 'rtl' end it 'adds rtl body class if locale is Farsi' do I18n.locale = :fa - expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl' + expect(helper.locale_direction).to eq 'rtl' end it 'adds rtl if locale is Hebrew' do I18n.locale = :he - expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl' + expect(helper.locale_direction).to eq 'rtl' end it 'does not add rtl if locale is Thai' do I18n.locale = :th - expect(helper.add_rtl_body_class('other classes')).to eq 'other classes' + expect(helper.locale_direction).to_not eq 'rtl' end end