Welcome to mirror list, hosted at ThFree Co, Russian Federation.

preferences_helper.rb « gitlab « helpers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3eac5d51acdde95b76b2b0d6fa699127e0f105a5 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
module Gitlab
  # 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

    # Maps `dashboard` values to more user-friendly option text
    DASHBOARD_CHOICES = {
      projects: 'Your Projects (default)',
      stars:    'Starred Projects'
    }.with_indifferent_access.freeze

    # Returns an Array usable by a select field for more user-friendly option text
    def dashboard_choices
      defined = User.dashboards

      if defined.size != DASHBOARD_CHOICES.size
        # Ensure that anyone adding new options updates this method too
        raise RuntimeError, "`User` defines #{defined.size} dashboard choices," +
          " but `DASHBOARD_CHOICES` defined #{DASHBOARD_CHOICES.size}."
      else
        defined.map do |key, _|
          # Use `fetch` so `KeyError` gets raised when a key is missing
          [DASHBOARD_CHOICES.fetch(key), key]
        end
      end
    end

    def project_view_choices
      [
        ['Readme (default)', :readme],
        ['Activity view', :activity]
      ]
    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

    def prefer_readme?
      !current_user ||
        current_user.project_view == 'readme'
    end
  end
end