debian-mirror-gitlab/app/helpers/web_ide_button_helper.rb
2022-05-07 20:08:51 +05:30

66 lines
1.5 KiB
Ruby

# frozen_string_literal: true
module WebIdeButtonHelper
def project_fork
current_user&.fork_of(@project)
end
def project_to_use
fork? ? project_fork : @project
end
def can_collaborate?
can_collaborate_with_project?(@project)
end
def can_create_mr_from_fork?
can?(current_user, :fork_project, @project) && can?(current_user, :create_merge_request_in, @project)
end
def show_web_ide_button?
can_collaborate? || can_create_mr_from_fork?
end
def show_edit_button?(options = {})
readable_blob?(options) && show_web_ide_button?
end
def show_gitpod_button?
show_web_ide_button? && Gitlab::CurrentSettings.gitpod_enabled
end
def show_pipeline_editor_button?(project, path)
can_view_pipeline_editor?(project) && path == project.ci_config_path_or_default
end
def can_push_code?
current_user&.can?(:push_code, @project)
end
def fork?
!project_fork.nil? && !can_push_code?
end
def readable_blob?(options = {})
!readable_blob(options, @path, @project, @ref).nil?
end
def needs_to_fork?
!can_collaborate? && !current_user&.already_forked?(@project)
end
def web_ide_url
ide_edit_path(project_to_use, @ref, @path || '')
end
def edit_url(options = {})
readable_blob?(options) ? edit_blob_path(@project, @ref, @path || '') : ''
end
def gitpod_url
return "" unless Gitlab::CurrentSettings.gitpod_enabled
"#{Gitlab::CurrentSettings.gitpod_url}##{project_tree_url(@project, tree_join(@ref, @path || ''))}"
end
end