diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-24 00:06:17 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-24 00:06:17 +0300 |
commit | 11faf8ae72dcdbaff31f97410a3a9319324438fd (patch) | |
tree | 2dc680f52ef8b2355c9097dfd1bbeb5ba899df3c /app/presenters/release_presenter.rb | |
parent | 7f0a4a64d0bc59b184ae3ee578adb6ebd3c48bf7 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/presenters/release_presenter.rb')
-rw-r--r-- | app/presenters/release_presenter.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/app/presenters/release_presenter.rb b/app/presenters/release_presenter.rb new file mode 100644 index 00000000000..de9055db1e5 --- /dev/null +++ b/app/presenters/release_presenter.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class ReleasePresenter < Gitlab::View::Presenter::Delegated + include ActionView::Helpers::UrlHelper + + presents :release + + delegate :project, :tag, to: :release + + def commit_path + return unless release.commit && can_download_code? + + project_commit_path(project, release.commit.id) + end + + def tag_path + return unless can_download_code? + + project_tag_path(project, release.tag) + end + + def merge_requests_url + return unless release_mr_issue_urls_available? + + project_merge_requests_url(project, params_for_issues_and_mrs) + end + + def issues_url + return unless release_mr_issue_urls_available? + + project_issues_url(project, params_for_issues_and_mrs) + end + + private + + def can_download_code? + can?(current_user, :download_code, project) + end + + def params_for_issues_and_mrs + { scope: 'all', state: 'opened', release_tag: release.tag } + end + + def release_mr_issue_urls_available? + ::Feature.enabled?(:release_mr_issue_urls, project) + end +end |