Class: BlobPresenter
Instance Method Summary
collapse
#can_collaborate_with_project?, #user_access
Methods included from TreeHelper
#breadcrumb_data_attributes, #can_edit_tree?, #commit_in_fork_help, #commit_in_single_accessible_branch, #directory_download_links, #edit_in_new_fork_notice, #edit_in_new_fork_notice_action, #edit_in_new_fork_notice_now, #fork_modal_options, #on_top_of_branch?, #patch_branch_name, #path_breadcrumbs, #relative_url_root, #selected_branch, #tree_edit_branch, #tree_icon, #tree_join, #vue_file_list_data, #web_ide_button_data
#can_collaborate?, #can_create_mr_from_fork?, #edit_url, #fork?, #gitpod_url, #needs_to_fork?, #project_fork, #project_to_use, #readable_blob?, #show_edit_button?, #show_gitpod_button?, #show_pipeline_editor_button?, #show_web_ide_button?, #web_ide_url
Methods included from BlobHelper
#blob_editor_paths, #blob_icon, #blob_raw_path, #blob_raw_url, #blob_render_error_options, #blob_render_error_reason, #contribution_options, #copy_blob_source_button, #copy_file_path_button, #dockerfile_names, #download_blob_button, #edit_blob_button, #edit_blob_fork_params, #edit_button_tag, #edit_disabled_button_tag, #edit_fork_button_tag, #edit_link_tag, #editing_preview_title, #encode_ide_path, #fork_path_for_current_user, #gitignore_names, #gitlab_ci_ymls, #human_access, #ide_merge_request_path, #leave_edit_message, #licenses_for_select, #open_raw_blob_button, #parent_dir_raw_path, #readable_blob, #ref_project, #sanitize_svg_data, #show_suggest_pipeline_creation_celebration?, #suggest_pipeline_commit_cookie_name, #vue_blob_app_data
Methods included from DiffHelper
#apply_diff_view_cookie!, #collapsed_diff_url, #conflicts, #diff_file_blob_raw_path, #diff_file_blob_raw_url, #diff_file_html_data, #diff_file_old_blob_raw_path, #diff_file_old_blob_raw_url, #diff_file_stats_data, #diff_line_content, #diff_link_number, #diff_match_line, #diff_nomappinginraw_line, #diff_options, #diff_view, #diffs_expanded?, #editable_diff?, #inline_diff_btn, #mark_inline_diffs, #parallel_diff_btn, #parallel_diff_discussions, #params_with_whitespace, #render_fork_suggestion, #render_overflow_warning?, #show_only_context_commits?, #submodule_diff_compare_link, #submodule_link
#active_when, #add_page_specific_style, #add_page_startup_api_call, #admin_section?, #asset_to_string, #autocomplete_data_sources, #body_data, #body_data_page, #client_class_list, #client_js_flags, #collapsed_sidebar?, #collapsed_super_sidebar?, community_forum, #community_forum, #conditional_link_to, #controller_full_path, #current_action?, #current_controller?, #discord_url, #dispensable_render, #dispensable_render_if_exists, #edited_time_ago_with_tooltip, #external_storage_url_or_path, #extra_config, #gitlab_config, #gitlab_ui_form_for, #gitlab_ui_form_with, #hexdigest, #hidden_resource_icon, #instance_review_permitted?, #last_commit, #linkedin_url, #locale_path, #outdated_browser?, #page_class, #page_filter_path, #page_startup_api_calls, #partial_exists?, #path_to_key, #project_data, #promo_host, promo_host, #promo_url, #read_only_message, #registry_config, #render_if_exists, #show_callout?, #show_last_push_widget?, #sign_in_with_redirect?, #simple_sanitize, #static_objects_external_storage_enabled?, #stylesheet_link_tag_defer, #support_url, #system_message_class, #template_exists?, #time_ago_with_tooltip, #truncate_first_line, #twitter_url
#initialize
#delegator_override, #delegator_override_with, #delegator_target, validator, validators, verify!
#__subject__, #can?, #declarative_policy_delegate, #is_a?, #path_with_line_numbers, #present, #url_builder
#can?
includes_helpers, redirect_legacy_paths, url_helpers
Instance Method Details
#archived? ⇒ Boolean
143
144
145
|
# File 'app/presenters/blob_presenter.rb', line 143
def archived?
project.archived
end
|
#blame_path ⇒ Object
92
93
94
|
# File 'app/presenters/blob_presenter.rb', line 92
def blame_path
url_helpers.project_blame_path(project, ref_qualified_path)
end
|
#blob_data(to) ⇒ Object
46
47
48
|
# File 'app/presenters/blob_presenter.rb', line 46
def blob_data(to)
@_blob_data ||= limited_blob_data(to: to)
end
|
#blob_language ⇒ Object
50
51
52
|
# File 'app/presenters/blob_presenter.rb', line 50
def blob_language
@_blob_language ||= gitattr_language || detect_language
end
|
#can_current_user_push_to_branch? ⇒ Boolean
137
138
139
140
141
|
# File 'app/presenters/blob_presenter.rb', line 137
def can_current_user_push_to_branch?
return false unless current_user && project.repository.branch_exists?(commit_id)
user_access(project).can_push_to_branch?(commit_id)
end
|
#can_modify_blob? ⇒ Boolean
133
134
135
|
# File 'app/presenters/blob_presenter.rb', line 133
def can_modify_blob?
super(blob, project, commit_id)
end
|
#code_navigation_path ⇒ Object
#code_owners ⇒ Object
117
118
119
|
# File 'app/presenters/blob_presenter.rb', line 117
def code_owners
[]
end
|
#edit_blob_path ⇒ Object
66
67
68
|
# File 'app/presenters/blob_presenter.rb', line 66
def edit_blob_path
url_helpers.project_edit_blob_path(*path_params)
end
|
#environment_external_url_for_route_map ⇒ Object
110
111
112
113
114
|
# File 'app/presenters/blob_presenter.rb', line 110
def environment_external_url_for_route_map
return unless environment
environment.external_url_for(blob.path, blob.commit_id)
end
|
104
105
106
107
108
|
# File 'app/presenters/blob_presenter.rb', line 104
def environment_formatted_external_url
return unless environment
environment.formatted_external_url
end
|
#external_storage_url ⇒ Object
151
152
153
154
155
|
# File 'app/presenters/blob_presenter.rb', line 151
def external_storage_url
return unless static_objects_external_storage_enabled?
external_storage_url_or_path(url_helpers.project_raw_url(project, ref_qualified_path), project)
end
|
#find_file_path ⇒ Object
88
89
90
|
# File 'app/presenters/blob_presenter.rb', line 88
def find_file_path
url_helpers.project_find_file_path(project, commit_id, ref_type: ref_type)
end
|
#fork_and_edit_path ⇒ Object
121
122
123
|
# File 'app/presenters/blob_presenter.rb', line 121
def fork_and_edit_path
fork_path_for_current_user(project, edit_blob_path)
end
|
#fork_and_view_path ⇒ Object
129
130
131
|
# File 'app/presenters/blob_presenter.rb', line 129
def fork_and_view_path
fork_path_for_current_user(project, web_path)
end
|
#gitpod_blob_url ⇒ Object
82
83
84
85
86
|
# File 'app/presenters/blob_presenter.rb', line 82
def gitpod_blob_url
return unless Gitlab::CurrentSettings.gitpod_enabled && !current_user.nil? && current_user.gitpod_enabled
"#{Gitlab::CurrentSettings.gitpod_url}##{url_helpers.project_tree_url(project, tree_join(blob.commit_id, blob.path || ''))}"
end
|
#highlight(to: nil, plain: nil) ⇒ Object
25
26
27
28
29
30
31
32
33
34
|
# File 'app/presenters/blob_presenter.rb', line 25
def highlight(to: nil, plain: nil)
load_all_blob_data
Gitlab::Highlight.highlight(
blob.path,
blob_data(to),
language: blob_language,
plain: plain
)
end
|
#highlight_and_trim(ellipsis_svg:, trim_length:, plain: nil) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'app/presenters/blob_presenter.rb', line 12
def highlight_and_trim(ellipsis_svg:, trim_length:, plain: nil)
load_all_blob_data
trimmed_lines, trimmed_idx = trimmed_blob_data(trim_length)
Gitlab::Highlight.highlight(
blob.path,
trimmed_lines,
language: blob_language,
plain: plain,
context: { ellipsis_indexes: trimmed_idx, ellipsis_svg: ellipsis_svg }
)
end
|
#history_path ⇒ Object
96
97
98
|
# File 'app/presenters/blob_presenter.rb', line 96
def history_path
url_helpers.project_commits_path(project, ref_qualified_path)
end
|
#ide_edit_path ⇒ Object
147
148
149
|
# File 'app/presenters/blob_presenter.rb', line 147
def ide_edit_path
super(project, commit_id, blob.path)
end
|
#ide_fork_and_edit_path ⇒ Object
125
126
127
|
# File 'app/presenters/blob_presenter.rb', line 125
def ide_fork_and_edit_path
fork_path_for_current_user(project, ide_edit_path)
end
|
#permalink_path ⇒ Object
100
101
102
|
# File 'app/presenters/blob_presenter.rb', line 100
def permalink_path
url_helpers.project_blob_path(project, File.join(project.repository.commit(blob.commit_id).sha, blob.path))
end
|
#pipeline_editor_path ⇒ Object
78
79
80
|
# File 'app/presenters/blob_presenter.rb', line 78
def pipeline_editor_path
project_ci_pipeline_editor_path(project, branch_name: commit_id) if can_collaborate_with_project?(project) && blob.path == project.ci_config_path_or_default
end
|
#plain_data ⇒ Object
36
37
38
39
40
|
# File 'app/presenters/blob_presenter.rb', line 36
def plain_data
return if blob.binary?
highlight(plain: false)
end
|
#project_blob_path_root ⇒ Object
161
162
163
|
# File 'app/presenters/blob_presenter.rb', line 161
def project_blob_path_root
project_blob_path(project, commit_id)
end
|
#raw_path ⇒ Object
70
71
72
|
# File 'app/presenters/blob_presenter.rb', line 70
def raw_path
url_helpers.project_raw_path(*path_params)
end
|
#raw_plain_data ⇒ Object
54
55
56
|
# File 'app/presenters/blob_presenter.rb', line 54
def raw_plain_data
blob.data unless blob.binary?
end
|
#replace_path ⇒ Object
74
75
76
|
# File 'app/presenters/blob_presenter.rb', line 74
def replace_path
url_helpers.project_update_blob_path(*path_params)
end
|
#trimmed_blob_data(trim_length) ⇒ Object
42
43
44
|
# File 'app/presenters/blob_presenter.rb', line 42
def trimmed_blob_data(trim_length)
@_trimmed_blob_data ||= limited_trimmed_blob_data(trim_length)
end
|
#web_path ⇒ Object
62
63
64
|
# File 'app/presenters/blob_presenter.rb', line 62
def web_path
url_helpers.project_blob_path(*path_params)
end
|
#web_url ⇒ Object
58
59
60
|
# File 'app/presenters/blob_presenter.rb', line 58
def web_url
url_helpers.project_blob_url(*path_params)
end
|