61 lines
1.4 KiB
Ruby
61 lines
1.4 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::Gitpod.feature_and_settings_enabled?(@project)
|
|
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::Gitpod.feature_and_settings_enabled?(@project)
|
|
|
|
"#{Gitlab::CurrentSettings.gitpod_url}##{project_tree_url(@project, tree_join(@ref, @path || ''))}"
|
|
end
|
|
end
|