Module: Gitlab::GonHelper
- Includes:
- StartupCssHelper, WebpackHelper
- Included in:
- ApplicationController, Oauth::ApplicationsController
- Defined in:
- lib/gitlab/gon_helper.rb
Instance Method Summary collapse
- #add_gon_variables ⇒ Object
- #default_avatar_url ⇒ Object
-
#push_frontend_feature_flag(name, *args) ⇒ Object
Exposes the state of a feature flag to the frontend code.
Methods included from WebpackHelper
#webpack_bundle_tag, #webpack_controller_bundle_tags, #webpack_entrypoint_paths, #webpack_public_host, #webpack_public_path
Methods included from StartupCssHelper
Instance Method Details
#add_gon_variables ⇒ Object
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 |
# File 'lib/gitlab/gon_helper.rb', line 10 def add_gon_variables gon.api_version = 'v4' gon.default_avatar_url = default_avatar_url gon.max_file_size = Gitlab::CurrentSettings. gon.asset_host = ActionController::Base.asset_host gon.webpack_public_path = webpack_public_path gon.relative_url_root = Gitlab.config.gitlab.relative_url_root gon.shortcuts_path = Gitlab::Routing.url_helpers.help_page_path('shortcuts') gon.user_color_scheme = Gitlab::ColorSchemes.for_user(current_user).css_class if Gitlab.config.sentry.enabled gon.sentry_dsn = Gitlab.config.sentry.clientside_dsn gon.sentry_environment = Gitlab.config.sentry.environment end gon.gitlab_url = Gitlab.config.gitlab.url gon.revision = Gitlab.revision gon.gitlab_logo = ActionController::Base.helpers.asset_path('gitlab_logo.png') gon.sprite_icons = IconsHelper.sprite_icon_path gon.sprite_file_icons = IconsHelper.sprite_file_icons_path gon.emoji_sprites_css_path = ActionController::Base.helpers.stylesheet_path('emoji_sprites') gon.test_env = Rails.env.test? gon.disable_animations = Gitlab.config.gitlab['disable_animations'] gon.suggested_label_colors = LabelsHelper.suggested_colors gon.first_day_of_week = current_user&.first_day_of_week || Gitlab::CurrentSettings.first_day_of_week gon.ee = Gitlab.ee? if current_user gon.current_user_id = current_user.id gon.current_username = current_user.username gon.current_user_fullname = current_user.name gon.current_user_avatar_url = current_user.avatar_url end # Initialize gon.features with any flags that should be # made globally available to the frontend push_frontend_feature_flag(:snippets_vue, default_enabled: true) push_frontend_feature_flag(:monaco_blobs, default_enabled: true) push_frontend_feature_flag(:monaco_ci, default_enabled: false) push_frontend_feature_flag(:snippets_edit_vue, default_enabled: false) push_frontend_feature_flag(:webperf_experiment, default_enabled: false) push_frontend_feature_flag(:snippets_binary_blob, default_enabled: false) # Startup CSS feature is a special one as it can be enabled by means of cookies and params gon.push({ features: { 'startupCss' => use_startup_css? } }, true) end |
#default_avatar_url ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/gitlab/gon_helper.rb', line 72 def default_avatar_url # We can't use ActionController::Base.helpers.image_url because it # doesn't return an actual URL because request is nil for some reason. # # We also can't use Gitlab::Utils.append_path because the image path # may be an absolute URL. URI.join(Gitlab.config.gitlab.url, ActionController::Base.helpers.image_path('no_avatar.png')).to_s end |
#push_frontend_feature_flag(name, *args) ⇒ Object
Exposes the state of a feature flag to the frontend code.
name - The name of the feature flag, e.g. `my_feature`. args - Any additional arguments to pass to `Feature.enabled?`. This allows
you to check if a flag is enabled for a particular user.
62 63 64 65 66 67 68 69 70 |
# File 'lib/gitlab/gon_helper.rb', line 62 def push_frontend_feature_flag(name, *args) var_name = name.to_s.camelize(:lower) enabled = Feature.enabled?(name, *args) # Here the `true` argument signals gon that the value should be merged # into any existing ones, instead of overwriting them. This allows you to # use this method to push multiple feature flags. gon.push({ features: { var_name => enabled } }, true) end |