diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-01-14 20:44:48 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-01-14 20:44:48 +0000 |
commit | 4ebdcf13db34186bb562ed523c637dd6edc86682 (patch) | |
tree | 66be2cc4561468a6163202aa8b663954767727c3 | |
parent | f607a7a023774362979ca5113a48e1138566b3bb (diff) | |
download | redmine-4ebdcf13db34186bb562ed523c637dd6edc86682.tar.gz redmine-4ebdcf13db34186bb562ed523c637dd6edc86682.zip |
Add named routes for attachments and use route helpers in #link_to_attachment.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11187 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/helpers/application_helper.rb | 12 | ||||
-rw-r--r-- | config/routes.rb | 8 | ||||
-rw-r--r-- | test/unit/helpers/application_helper_test.rb | 14 |
3 files changed, 22 insertions, 12 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4825615a1..2a06ad926 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -91,14 +91,10 @@ module ApplicationHelper # * :download - Force download (default: false) def link_to_attachment(attachment, options={}) text = options.delete(:text) || attachment.filename - action = options.delete(:download) ? 'download' : 'show' - opt_only_path = {} - opt_only_path[:only_path] = (options[:only_path] == false ? false : true) - options.delete(:only_path) - link_to(h(text), - {:controller => 'attachments', :action => action, - :id => attachment, :filename => attachment.filename}.merge(opt_only_path), - options) + route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path + html_options = options.slice!(:only_path) + url = send(route_method, attachment, attachment.filename, options) + link_to text, url, html_options end # Generates a link to a SCM revision diff --git a/config/routes.rb b/config/routes.rb index 9a93b4780..7a1eb663a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -257,10 +257,10 @@ RedmineApp::Application.routes.draw do get 'projects/:id/repository', :to => 'repositories#show', :path => nil # additional routes for having the file name at the end of url - match 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/, :via => :get - match 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/, :via => :get - match 'attachments/download/:id', :controller => 'attachments', :action => 'download', :id => /\d+/, :via => :get - match 'attachments/thumbnail/:id(/:size)', :controller => 'attachments', :action => 'thumbnail', :id => /\d+/, :via => :get, :size => /\d+/ + get 'attachments/:id/:filename', :to => 'attachments#show', :id => /\d+/, :filename => /.*/, :as => 'named_attachment' + get 'attachments/download/:id/:filename', :to => 'attachments#download', :id => /\d+/, :filename => /.*/, :as => 'download_named_attachment' + get 'attachments/download/:id', :to => 'attachments#download', :id => /\d+/ + get 'attachments/thumbnail/:id(/:size)', :to => 'attachments#thumbnail', :id => /\d+/, :size => /\d+/ resources :attachments, :only => [:show, :destroy] resources :groups do diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index c5b3aaadc..506c30cc7 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -1063,6 +1063,20 @@ RAW assert_equal ::I18n.t(:label_user_anonymous), t end + def test_link_to_attachment + a = Attachment.find(3) + assert_equal '<a href="/attachments/3/logo.gif">logo.gif</a>', + link_to_attachment(a) + assert_equal '<a href="/attachments/3/logo.gif">Text</a>', + link_to_attachment(a, :text => 'Text') + assert_equal '<a href="/attachments/3/logo.gif" class="foo">logo.gif</a>', + link_to_attachment(a, :class => 'foo') + assert_equal '<a href="/attachments/download/3/logo.gif">logo.gif</a>', + link_to_attachment(a, :download => true) + assert_equal '<a href="http://test.host/attachments/3/logo.gif">logo.gif</a>', + link_to_attachment(a, :only_path => false) + end + def test_link_to_project project = Project.find(1) assert_equal %(<a href="/projects/ecookbook">eCookbook</a>), |