57 lines
1.3 KiB
Ruby
57 lines
1.3 KiB
Ruby
|
# Controller for viewing a file's blame
|
||
|
class Projects::BlobController < Projects::ApplicationController
|
||
|
include ExtractsPath
|
||
|
|
||
|
# Authorize
|
||
|
before_filter :authorize_read_project!
|
||
|
before_filter :authorize_code_access!
|
||
|
before_filter :require_non_empty_project
|
||
|
before_filter :authorize_push!, only: [:destroy]
|
||
|
|
||
|
before_filter :blob
|
||
|
|
||
|
def show
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
result = Files::DeleteService.new(@project, current_user, params, @ref, @path).execute
|
||
|
|
||
|
if result[:status] == :success
|
||
|
flash[:notice] = "Your changes have been successfully committed"
|
||
|
redirect_to project_tree_path(@project, @ref)
|
||
|
else
|
||
|
flash[:alert] = result[:error]
|
||
|
render :show
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def diff
|
||
|
@form = UnfoldForm.new(params)
|
||
|
@lines = @blob.data.lines[@form.since - 1..@form.to - 1]
|
||
|
|
||
|
if @form.bottom?
|
||
|
@match_line = ''
|
||
|
else
|
||
|
lines_length = @lines.length - 1
|
||
|
line = [@form.since, lines_length].join(',')
|
||
|
@match_line = "@@ -#{line}+#{line} @@"
|
||
|
end
|
||
|
|
||
|
render layout: false
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def blob
|
||
|
@blob ||= @repository.blob_at(@commit.id, @path)
|
||
|
|
||
|
if @blob
|
||
|
@blob
|
||
|
elsif tree.entries.any?
|
||
|
redirect_to project_tree_path(@project, File.join(@ref, @path)) and return
|
||
|
else
|
||
|
return not_found!
|
||
|
end
|
||
|
end
|
||
|
end
|