Move VersionsController#download to AttachmentsController.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1685 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
aaca2c50e5
commit
8a7bfc72b2
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
class AttachmentsController < ApplicationController
|
class AttachmentsController < ApplicationController
|
||||||
layout 'base'
|
layout 'base'
|
||||||
before_filter :find_project, :check_project_privacy
|
before_filter :find_project
|
||||||
|
|
||||||
def show
|
def show
|
||||||
if @attachment.is_diff?
|
if @attachment.is_diff?
|
||||||
|
@ -32,6 +32,8 @@ class AttachmentsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def download
|
def download
|
||||||
|
@attachment.increment_download if @attachment.container.is_a?(Version)
|
||||||
|
|
||||||
# images are sent inline
|
# images are sent inline
|
||||||
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
||||||
:type => @attachment.content_type,
|
:type => @attachment.content_type,
|
||||||
|
@ -41,9 +43,11 @@ class AttachmentsController < ApplicationController
|
||||||
private
|
private
|
||||||
def find_project
|
def find_project
|
||||||
@attachment = Attachment.find(params[:id])
|
@attachment = Attachment.find(params[:id])
|
||||||
#render_404 and return false unless File.readable?(@attachment.diskfile)
|
|
||||||
@project = @attachment.project
|
@project = @attachment.project
|
||||||
#rescue
|
permission = @attachment.container.is_a?(Version) ? :view_files : "view_#{@attachment.container.class.name.underscore.pluralize}".to_sym
|
||||||
# render_404
|
allowed = User.current.allowed_to?(permission, @project)
|
||||||
|
allowed ? true : (User.current.logged? ? render_403 : require_login)
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render_404
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -65,15 +65,6 @@ class DocumentsController < ApplicationController
|
||||||
@document.destroy
|
@document.destroy
|
||||||
redirect_to :controller => 'documents', :action => 'index', :project_id => @project
|
redirect_to :controller => 'documents', :action => 'index', :project_id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
def download
|
|
||||||
@attachment = @document.attachments.find(params[:attachment_id])
|
|
||||||
@attachment.increment_download
|
|
||||||
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
|
||||||
:type => @attachment.content_type
|
|
||||||
rescue
|
|
||||||
render_404
|
|
||||||
end
|
|
||||||
|
|
||||||
def add_attachment
|
def add_attachment
|
||||||
attachments = attach_files(@document, params[:attachments])
|
attachments = attach_files(@document, params[:attachments])
|
||||||
|
|
|
@ -37,15 +37,6 @@ class VersionsController < ApplicationController
|
||||||
flash[:error] = "Unable to delete version"
|
flash[:error] = "Unable to delete version"
|
||||||
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
|
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
def download
|
|
||||||
@attachment = @version.attachments.find(params[:attachment_id])
|
|
||||||
@attachment.increment_download
|
|
||||||
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
|
||||||
:type => @attachment.content_type
|
|
||||||
rescue
|
|
||||||
render_404
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy_file
|
def destroy_file
|
||||||
@version.attachments.find(params[:attachment_id]).destroy
|
@version.attachments.find(params[:attachment_id]).destroy
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
<% for file in version.attachments %>
|
<% for file in version.attachments %>
|
||||||
<tr class="<%= cycle("odd", "even") %>">
|
<tr class="<%= cycle("odd", "even") %>">
|
||||||
<td></td>
|
<td></td>
|
||||||
<td><%= link_to(file.filename, {:controller => 'versions', :action => 'download', :id => version, :attachment_id => file},
|
<td><%= link_to(h(file.filename), {:controller => 'attachments', :action => 'download', :id => file},
|
||||||
:title => file.description) %></td>
|
:title => file.description) %></td>
|
||||||
<td align="center"><%= format_time(file.created_on) %></td>
|
<td align="center"><%= format_time(file.created_on) %></td>
|
||||||
<td align="center"><%= number_to_human_size(file.filesize) %></td>
|
<td align="center"><%= number_to_human_size(file.filesize) %></td>
|
||||||
<td align="center"><%= file.downloads %></td>
|
<td align="center"><%= file.downloads %></td>
|
||||||
|
|
|
@ -73,3 +73,16 @@ attachments_006:
|
||||||
filename: archive.zip
|
filename: archive.zip
|
||||||
author_id: 2
|
author_id: 2
|
||||||
content_type: application/octet-stream
|
content_type: application/octet-stream
|
||||||
|
attachments_007:
|
||||||
|
created_on: 2006-07-19 21:07:27 +02:00
|
||||||
|
container_type: Issue
|
||||||
|
container_id: 4
|
||||||
|
downloads: 0
|
||||||
|
disk_filename: 060719210727_archive.zip
|
||||||
|
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||||
|
id: 7
|
||||||
|
filesize: 157
|
||||||
|
filename: archive.zip
|
||||||
|
author_id: 1
|
||||||
|
content_type: application/octet-stream
|
||||||
|
|
|
@ -56,4 +56,9 @@ class AttachmentsControllerTest < Test::Unit::TestCase
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_equal 'application/x-ruby', @response.content_type
|
assert_equal 'application/x-ruby', @response.content_type
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_anonymous_on_private_private
|
||||||
|
get :download, :id => 7
|
||||||
|
assert_redirected_to 'account/login'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue