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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/learn_gitlab_helper.rb')
-rw-r--r--app/helpers/learn_gitlab_helper.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/app/helpers/learn_gitlab_helper.rb b/app/helpers/learn_gitlab_helper.rb
new file mode 100644
index 00000000000..e72a9c83fc9
--- /dev/null
+++ b/app/helpers/learn_gitlab_helper.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+module LearnGitlabHelper
+ def learn_gitlab_experiment_enabled?(project)
+ return false unless current_user
+ return false unless experiment_enabled_for_user?
+
+ learn_gitlab_onboarding_available?(project)
+ end
+
+ def onboarding_actions_data(project)
+ attributes = onboarding_progress(project).attributes.symbolize_keys
+
+ action_urls.map do |action, url|
+ [
+ action,
+ url: url,
+ completed: attributes[OnboardingProgress.column_name(action)].present?
+ ]
+ end.to_h
+ end
+
+ private
+
+ ACTION_ISSUE_IDS = {
+ git_write: 2,
+ pipeline_created: 4,
+ merge_request_created: 6,
+ user_added: 7,
+ trial_started: 13,
+ required_mr_approvals_enabled: 15,
+ code_owners_enabled: 16
+ }.freeze
+
+ ACTION_DOC_URLS = {
+ security_scan_enabled: 'https://docs.gitlab.com/ee/user/application_security/security_dashboard/#gitlab-security-dashboard-security-center-and-vulnerability-reports'
+ }.freeze
+
+ def action_urls
+ ACTION_ISSUE_IDS.transform_values { |id| project_issue_url(learn_gitlab_project, id) }.merge(ACTION_DOC_URLS)
+ end
+
+ def learn_gitlab_project
+ @learn_gitlab_project ||= LearnGitlab.new(current_user).project
+ end
+
+ def onboarding_progress(project)
+ OnboardingProgress.find_by(namespace: project.namespace) # rubocop: disable CodeReuse/ActiveRecord
+ end
+
+ def experiment_enabled_for_user?
+ Gitlab::Experimentation.in_experiment_group?(:learn_gitlab_a, subject: current_user) ||
+ Gitlab::Experimentation.in_experiment_group?(:learn_gitlab_b, subject: current_user)
+ end
+
+ def learn_gitlab_onboarding_available?(project)
+ OnboardingProgress.onboarding?(project.namespace) &&
+ LearnGitlab.new(current_user).available?
+ end
+end