@@ -0,0 +1,22 | |||
|
1 | class FilesController < ApplicationController | |
|
2 | menu_item :files | |
|
3 | ||
|
4 | before_filter :find_project | |
|
5 | before_filter :authorize | |
|
6 | ||
|
7 | helper :sort | |
|
8 | include SortHelper | |
|
9 | ||
|
10 | def index | |
|
11 | sort_init 'filename', 'asc' | |
|
12 | sort_update 'filename' => "#{Attachment.table_name}.filename", | |
|
13 | 'created_on' => "#{Attachment.table_name}.created_on", | |
|
14 | 'size' => "#{Attachment.table_name}.filesize", | |
|
15 | 'downloads' => "#{Attachment.table_name}.downloads" | |
|
16 | ||
|
17 | @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)] | |
|
18 | @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse | |
|
19 | render :layout => !request.xhr? | |
|
20 | end | |
|
21 | ||
|
22 | end |
@@ -0,0 +1,29 | |||
|
1 | require File.dirname(__FILE__) + '/../test_helper' | |
|
2 | ||
|
3 | class FilesControllerTest < ActionController::TestCase | |
|
4 | fixtures :all | |
|
5 | ||
|
6 | def setup | |
|
7 | @controller = FilesController.new | |
|
8 | @request = ActionController::TestRequest.new | |
|
9 | @response = ActionController::TestResponse.new | |
|
10 | @request.session[:user_id] = nil | |
|
11 | Setting.default_language = 'en' | |
|
12 | end | |
|
13 | ||
|
14 | def test_index | |
|
15 | get :index, :id => 1 | |
|
16 | assert_response :success | |
|
17 | assert_template 'index' | |
|
18 | assert_not_nil assigns(:containers) | |
|
19 | ||
|
20 | # file attached to the project | |
|
21 | assert_tag :a, :content => 'project_file.zip', | |
|
22 | :attributes => { :href => '/attachments/download/8/project_file.zip' } | |
|
23 | ||
|
24 | # file attached to a project's version | |
|
25 | assert_tag :a, :content => 'version_file.zip', | |
|
26 | :attributes => { :href => '/attachments/download/9/version_file.zip' } | |
|
27 | end | |
|
28 | ||
|
29 | end |
@@ -18,7 +18,7 | |||
|
18 | 18 | class ProjectsController < ApplicationController |
|
19 | 19 | menu_item :overview |
|
20 | 20 | menu_item :roadmap, :only => :roadmap |
|
21 |
menu_item :files, :only => [ |
|
|
21 | menu_item :files, :only => [:add_file] | |
|
22 | 22 | menu_item :settings, :only => :settings |
|
23 | 23 | |
|
24 | 24 | before_filter :find_project, :except => [ :index, :list, :add, :copy ] |
@@ -248,7 +248,7 class ProjectsController < ApplicationController | |||
|
248 | 248 | if !attachments.empty? && Setting.notified_events.include?('file_added') |
|
249 | 249 | Mailer.deliver_attachments_added(attachments[:files]) |
|
250 | 250 | end |
|
251 |
redirect_to :controller => ' |
|
|
251 | redirect_to :controller => 'files', :action => 'index', :id => @project | |
|
252 | 252 | return |
|
253 | 253 | end |
|
254 | 254 | @versions = @project.versions.sort |
@@ -275,18 +275,6 class ProjectsController < ApplicationController | |||
|
275 | 275 | redirect_to :controller => 'projects', :action => 'settings', :tab => 'activities', :id => @project |
|
276 | 276 | end |
|
277 | 277 | |
|
278 | def list_files | |
|
279 | sort_init 'filename', 'asc' | |
|
280 | sort_update 'filename' => "#{Attachment.table_name}.filename", | |
|
281 | 'created_on' => "#{Attachment.table_name}.created_on", | |
|
282 | 'size' => "#{Attachment.table_name}.filesize", | |
|
283 | 'downloads' => "#{Attachment.table_name}.downloads" | |
|
284 | ||
|
285 | @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)] | |
|
286 | @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse | |
|
287 | render :layout => !request.xhr? | |
|
288 | end | |
|
289 | ||
|
290 | 278 | private |
|
291 | 279 | def find_optional_project |
|
292 | 280 | return true unless params[:id] |
|
1 | NO CONTENT: file renamed from app/views/projects/list_files.rhtml to app/views/files/index.html.erb |
@@ -181,7 +181,7 ActionController::Routing::Routes.draw do |map| | |||
|
181 | 181 | project_views.connect 'projects/:id', :action => 'show' |
|
182 | 182 | project_views.connect 'projects/:id.:format', :action => 'show' |
|
183 | 183 | project_views.connect 'projects/:id/:action', :action => /destroy|settings/ |
|
184 |
project_views.connect 'projects/:id/files', :action => ' |
|
|
184 | project_views.connect 'projects/:id/files', :controller => 'files', :action => 'index' | |
|
185 | 185 | project_views.connect 'projects/:id/files/new', :action => 'add_file' |
|
186 | 186 | project_views.connect 'projects/:id/settings/:tab', :action => 'settings' |
|
187 | 187 | project_views.connect 'projects/:project_id/issues/:copy_from/copy', :controller => 'issues', :action => 'new' |
@@ -103,7 +103,7 Redmine::AccessControl.map do |map| | |||
|
103 | 103 | |
|
104 | 104 | map.project_module :files do |map| |
|
105 | 105 | map.permission :manage_files, {:projects => :add_file}, :require => :loggedin |
|
106 |
map.permission :view_files, : |
|
|
106 | map.permission :view_files, :files => :index, :versions => :download | |
|
107 | 107 | end |
|
108 | 108 | |
|
109 | 109 | map.project_module :wiki do |map| |
@@ -198,7 +198,7 Redmine::MenuManager.map :project_menu do |menu| | |||
|
198 | 198 | :if => Proc.new { |p| p.wiki && !p.wiki.new_record? } |
|
199 | 199 | menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id, |
|
200 | 200 | :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural |
|
201 |
menu.push :files, { :controller => ' |
|
|
201 | menu.push :files, { :controller => 'files', :action => 'index' }, :caption => :label_file_plural | |
|
202 | 202 | menu.push :repository, { :controller => 'repositories', :action => 'show' }, |
|
203 | 203 | :if => Proc.new { |p| p.repository && !p.repository.new_record? } |
|
204 | 204 | menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true |
@@ -353,21 +353,6 class ProjectsControllerTest < ActionController::TestCase | |||
|
353 | 353 | assert_equal Version.find(2), a.container |
|
354 | 354 | end |
|
355 | 355 | |
|
356 | def test_list_files | |
|
357 | get :list_files, :id => 1 | |
|
358 | assert_response :success | |
|
359 | assert_template 'list_files' | |
|
360 | assert_not_nil assigns(:containers) | |
|
361 | ||
|
362 | # file attached to the project | |
|
363 | assert_tag :a, :content => 'project_file.zip', | |
|
364 | :attributes => { :href => '/attachments/download/8/project_file.zip' } | |
|
365 | ||
|
366 | # file attached to a project's version | |
|
367 | assert_tag :a, :content => 'version_file.zip', | |
|
368 | :attributes => { :href => '/attachments/download/9/version_file.zip' } | |
|
369 | end | |
|
370 | ||
|
371 | 356 | def test_archive |
|
372 | 357 | @request.session[:user_id] = 1 # admin |
|
373 | 358 | post :archive, :id => 1 |
@@ -172,7 +172,7 class RoutingTest < ActionController::IntegrationTest | |||
|
172 | 172 | should_route :get, "/projects/4223/settings", :controller => 'projects', :action => 'settings', :id => '4223' |
|
173 | 173 | should_route :get, "/projects/4223/settings/members", :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members' |
|
174 | 174 | should_route :get, "/projects/567/destroy", :controller => 'projects', :action => 'destroy', :id => '567' |
|
175 |
should_route :get, "/projects/33/files", :controller => ' |
|
|
175 | should_route :get, "/projects/33/files", :controller => 'files', :action => 'index', :id => '33' | |
|
176 | 176 | should_route :get, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33' |
|
177 | 177 | should_route :get, "/projects/33/roadmap", :controller => 'versions', :action => 'index', :project_id => '33' |
|
178 | 178 | should_route :get, "/projects/33/activity", :controller => 'activities', :action => 'index', :id => '33' |
General Comments 0
You need to be logged in to leave comments.
Login now