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/storage_helper.rb')
-rw-r--r--app/helpers/storage_helper.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/helpers/storage_helper.rb b/app/helpers/storage_helper.rb
index a60143db739..34ba66db444 100644
--- a/app/helpers/storage_helper.rb
+++ b/app/helpers/storage_helper.rb
@@ -23,4 +23,42 @@ module StorageHelper
_("Repository: %{counter_repositories} / Wikis: %{counter_wikis} / Build Artifacts: %{counter_build_artifacts} / Pipeline Artifacts: %{counter_pipeline_artifacts} / LFS: %{counter_lfs_objects} / Snippets: %{counter_snippets} / Packages: %{counter_packages} / Uploads: %{counter_uploads}") % counters
end
+
+ def storage_enforcement_banner_info(namespace)
+ return if namespace.paid?
+ return unless namespace.storage_enforcement_date && namespace.storage_enforcement_date >= Date.today
+ return if user_dismissed_storage_enforcement_banner?(namespace)
+
+ {
+ text: html_escape_once(s_("UsageQuota|From %{storage_enforcement_date} storage limits will apply to this namespace. " \
+ "View and manage your usage in %{strong_start}Group Settings > Usage quotas%{strong_end}.")).html_safe %
+ { storage_enforcement_date: namespace.storage_enforcement_date, strong_start: "<strong>".html_safe, strong_end: "</strong>".html_safe },
+ variant: 'warning',
+ callouts_path: group_callouts_path,
+ callouts_feature_name: storage_enforcement_banner_user_callouts_feature_name(namespace),
+ learn_more_link: link_to(_('Learn more.'), help_page_path('/'), rel: 'noopener noreferrer', target: '_blank') # TBD: https://gitlab.com/gitlab-org/gitlab/-/issues/350632
+ }
+ end
+
+ private
+
+ def storage_enforcement_banner_user_callouts_feature_name(namespace)
+ "storage_enforcement_banner_#{storage_enforcement_banner_threshold(namespace)}_enforcement_threshold"
+ end
+
+ def storage_enforcement_banner_threshold(namespace)
+ days_to_enforcement_date = (namespace.storage_enforcement_date - Date.today)
+
+ return :first if days_to_enforcement_date > 30
+ return :second if days_to_enforcement_date > 15 && days_to_enforcement_date <= 30
+ return :third if days_to_enforcement_date > 7 && days_to_enforcement_date <= 15
+ return :fourth if days_to_enforcement_date > 0 && days_to_enforcement_date <= 7
+ end
+
+ def user_dismissed_storage_enforcement_banner?(namespace)
+ return false unless current_user
+
+ current_user.dismissed_callout_for_group?(feature_name: storage_enforcement_banner_user_callouts_feature_name(namespace),
+ group: namespace)
+ end
end