summaryrefslogtreecommitdiff
path: root/app/helpers/preferences_helper.rb
blob: c67a34270ff2569976a4933a36db9d6cc9d0c4c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Helper methods for per-User preferences
module PreferencesHelper
  COLOR_SCHEMES = {
    1 => 'white',
    2 => 'dark',
    3 => 'solarized-light',
    4 => 'solarized-dark',
    5 => 'monokai',
  }
  COLOR_SCHEMES.default = 'white'

  # Helper method to access the COLOR_SCHEMES
  #
  # The keys are the `color_scheme_ids`
  # The values are the `name` of the scheme.
  #
  # The preview images are `name-scheme-preview.png`
  # The stylesheets should use the css class `.name`
  def color_schemes
    COLOR_SCHEMES.freeze
  end

  # Populates the dashboard preference select field with more user-friendly
  # values.
  def dashboard_choices
    orig = User.dashboards.keys

    choices = [
      ['Projects (default)', orig[0]],
      ['Starred Projects',   orig[1]]
    ]

    if orig.size != choices.size
      # Assure that anyone adding new options updates this method too
      raise RuntimeError, "`User` defines #{orig.size} dashboard choices," +
        " but #{__method__} defined #{choices.size}"
    else
      choices
    end
  end

  def user_application_theme
    theme = Gitlab::Themes.by_id(current_user.try(:theme_id))
    theme.css_class
  end

  def user_color_scheme_class
    COLOR_SCHEMES[current_user.try(:color_scheme_id)] if defined?(current_user)
  end
end