gitlab-org--gitlab-foss/app/controllers/projects/blob_controller.rb

57 lines
1.3 KiB
Ruby
Raw Normal View History

2012-09-17 17:49:57 +00:00
# Controller for viewing a file's blame
class Projects::BlobController < Projects::ApplicationController
include ExtractsPath
2012-09-17 17:49:57 +00:00
# Authorize
before_filter :authorize_read_project!
before_filter :authorize_code_access!
before_filter :require_non_empty_project
before_filter :authorize_push!, only: [:destroy]
2012-09-17 17:49:57 +00:00
before_filter :blob
2012-09-17 17:49:57 +00:00
def show
end
def destroy
result = Files::DeleteService.new(@project, current_user, params, @ref, @path).execute
if result[:status] == :success
2013-12-16 08:57:50 +00:00
flash[:notice] = "Your changes have been successfully committed"
redirect_to project_tree_path(@project, @ref)
else
flash[:alert] = result[:error]
render :show
end
end
2014-08-02 15:12:01 +00:00
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
2012-09-17 17:49:57 +00:00
end
end