about summary refs log tree commit diff
path: root/app/lib
diff options
context:
space:
mode:
authorAndrew <andrewLchronister@gmail.com>2017-09-19 07:36:23 -0700
committerEugen Rochko <eugen@zeonfederated.com>2017-09-19 16:36:23 +0200
commit0401a24558294b6941c30c922af3f2063dfd305e (patch)
treef40ee4baffd7f567cb11f9a3c162c2e1c4907534 /app/lib
parent4aea3f88a6d30f102a79c2da7fcfac96465ba1a8 (diff)
Add support for multiple themes (#4959)
* Add support for selecting a theme

* Fix codeclimate issues

* Look up site default style if current user is not available due to e.g. not being logged in

* Remove outdated comment in common.js

* Address requested changes in themes PR

* Fix codeclimate issues

* Explicitly check current_account in application controller and only check theme availability if non-nil

* codeclimate

* explicit precedence with &&

* Fix code style in application_controller according to @nightpool's suggestion, use default style in embedded.html.haml

* codeclimate: indentation + return
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/themes.rb16
-rw-r--r--app/lib/user_settings_decorator.rb5
2 files changed, 21 insertions, 0 deletions
diff --git a/app/lib/themes.rb b/app/lib/themes.rb
new file mode 100644
index 000000000..243ffb9ab
--- /dev/null
+++ b/app/lib/themes.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'singleton'
+require 'yaml'
+
+class Themes
+  include Singleton
+
+  def initialize
+    @conf = YAML.load_file(Rails.root.join('config', 'themes.yml'))
+  end
+
+  def names
+    @conf.keys
+  end
+end
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
index 62046ed72..cb1b3c4a9 100644
--- a/app/lib/user_settings_decorator.rb
+++ b/app/lib/user_settings_decorator.rb
@@ -25,6 +25,7 @@ class UserSettingsDecorator
     user.settings['auto_play_gif'] = auto_play_gif_preference
     user.settings['system_font_ui'] = system_font_ui_preference
     user.settings['noindex'] = noindex_preference
+    user.settings['theme'] = theme_preference
   end
 
   def merged_notification_emails
@@ -67,6 +68,10 @@ class UserSettingsDecorator
     boolean_cast_setting 'setting_noindex'
   end
 
+  def theme_preference
+    settings['setting_theme']
+  end
+
   def boolean_cast_setting(key)
     settings[key] == '1'
   end