FEATURE: support user local switching to RTL correctly

FEATURE: support RTL in multisite
This commit is contained in:
Sam 2015-05-20 15:56:54 +10:00
parent 8013b6a511
commit 45bdd23689
7 changed files with 23 additions and 6 deletions

View File

@ -0,0 +1,2 @@
// stub file used to clean up asset precompilation process
@import "desktop";

View File

@ -0,0 +1,2 @@
// stub file used to clean up asset precompilation process
@import "mobile";

View File

@ -106,6 +106,16 @@ module ApplicationHelper
current_user.try(:staff?)
end
def rtl?
["ar", "fa_IR", "he"].include?(user_locale)
end
def user_locale
locale = current_user.locale if current_user && SiteSetting.allow_user_locale
# changing back to default shoves a blank string there
locale.present? ? locale : SiteSetting.default_locale
end
# Creates open graph and twitter card meta data
def crawlable_meta_data(opts=nil)

View File

@ -1,4 +1,8 @@
<%= DiscourseStylesheets.stylesheet_link_tag(mobile_view? ? :mobile : :desktop) %>
<%- if rtl? %>
<%= DiscourseStylesheets.stylesheet_link_tag(mobile_view? ? :mobile_rtl : :desktop_rtl) %>
<%- else %>
<%= DiscourseStylesheets.stylesheet_link_tag(mobile_view? ? :mobile : :desktop) %>
<%- end %>
<%- if staff? %>
<%= stylesheet_link_tag "admin"%>

View File

@ -63,10 +63,8 @@ class DiscourseSassCompiler
}
}.merge(debug_opts)).render
# Check if CSS needs to be RTLed after compilation
# and run R2 gem on compiled CSS if true and R2 gem is available
css_output = css
if !SiteSetting.allow_user_locale && SiteSetting.default_locale.in?(%w(he ar fa_IR))
if opts[:rtl]
begin
require 'r2'
css_output = R2.r2(css) if defined?(R2)

View File

@ -91,8 +91,9 @@ class DiscourseStylesheets
end
scss = File.read("#{Rails.root}/app/assets/stylesheets/#{@target}.scss")
rtl = @target.to_s =~ /_rtl$/
css = begin
DiscourseSassCompiler.compile(scss, @target)
DiscourseSassCompiler.compile(scss, @target, rtl: rtl)
rescue Sass::SyntaxError => e
Rails.logger.error "Stylesheet failed to compile for '#{@target}'! Recompiling without plugins and theming."
Rails.logger.error e.sass_backtrace_str("#{@target} stylesheet")

View File

@ -78,7 +78,7 @@ task 'assets:precompile:css' => 'environment' do
# css will get precompiled during first request instead in that case.
if ActiveRecord::Base.connection.table_exists?(ColorScheme.table_name)
puts "Compiling css for #{db}"
[:desktop, :mobile].each do |target|
[:desktop, :mobile, :desktop_rtl, :mobile_rtl].each do |target|
puts DiscourseStylesheets.compile(target)
end
end