summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/views/activities/index.html.erb2
-rw-r--r--app/views/gantts/show.html.erb4
-rw-r--r--app/views/issues/index.html.erb6
-rw-r--r--app/views/repositories/diff.html.erb2
-rw-r--r--app/views/timelog/index.html.erb4
-rw-r--r--lib/redmine/views/other_formats_builder.rb10
-rw-r--r--test/integration/issues_test.rb2
7 files changed, 20 insertions, 10 deletions
diff --git a/app/views/activities/index.html.erb b/app/views/activities/index.html.erb
index 26613aef8..d939fdc79 100644
--- a/app/views/activities/index.html.erb
+++ b/app/views/activities/index.html.erb
@@ -38,7 +38,7 @@
</span>
&nbsp;
<% other_formats_links do |f| %>
- <%= f.link_to 'Atom', :url => params.merge(:from => nil, :key => User.current.rss_key) %>
+ <%= f.link_to_with_query_parameters 'Atom', 'from' => nil, :key => User.current.rss_key %>
<% end %>
<% content_for :header_tags do %>
diff --git a/app/views/gantts/show.html.erb b/app/views/gantts/show.html.erb
index 0f7092081..09a17b166 100644
--- a/app/views/gantts/show.html.erb
+++ b/app/views/gantts/show.html.erb
@@ -345,8 +345,8 @@
</table>
<% other_formats_links do |f| %>
- <%= f.link_to 'PDF', :url => params.merge(@gantt.params) %>
- <%= f.link_to('PNG', :url => params.merge(@gantt.params)) if @gantt.respond_to?('to_image') %>
+ <%= f.link_to_with_query_parameters 'PDF', @gantt.params %>
+ <%= f.link_to_with_query_parameters('PNG', @gantt.params) if @gantt.respond_to?('to_image') %>
<% end %>
<% end # query.valid? %>
diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb
index fd762023f..d120ce71e 100644
--- a/app/views/issues/index.html.erb
+++ b/app/views/issues/index.html.erb
@@ -76,9 +76,9 @@
<% end %>
<% other_formats_links do |f| %>
- <%= f.link_to 'Atom', :url => params.merge(:key => User.current.rss_key) %>
- <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '350px'); return false;" %>
- <%= f.link_to 'PDF', :url => params %>
+ <%= f.link_to_with_query_parameters 'Atom', :key => User.current.rss_key %>
+ <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %>
+ <%= f.link_to_with_query_parameters 'PDF' %>
<% end %>
<div id="csv-export-options" style="display:none;">
diff --git a/app/views/repositories/diff.html.erb b/app/views/repositories/diff.html.erb
index 5d0b899a7..889a65f7e 100644
--- a/app/views/repositories/diff.html.erb
+++ b/app/views/repositories/diff.html.erb
@@ -21,7 +21,7 @@
<% end -%>
<% other_formats_links do |f| %>
- <%= f.link_to 'Diff', :url => params, :caption => 'Unified diff' %>
+ <%= f.link_to_with_query_parameters 'Diff', {}, :caption => 'Unified diff' %>
<% end %>
<% html_title(with_leading_slash(@path), 'Diff') -%>
diff --git a/app/views/timelog/index.html.erb b/app/views/timelog/index.html.erb
index a875e53af..b32e7092c 100644
--- a/app/views/timelog/index.html.erb
+++ b/app/views/timelog/index.html.erb
@@ -21,8 +21,8 @@
<span class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></span>
<% other_formats_links do |f| %>
- <%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>
- <%= f.link_to 'CSV', :url => params, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
+ <%= f.link_to_with_query_parameters 'Atom', :key => User.current.rss_key %>
+ <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
<% end %>
<div id="csv-export-options" style="display:none;">
diff --git a/lib/redmine/views/other_formats_builder.rb b/lib/redmine/views/other_formats_builder.rb
index 48af0fbcb..4caee2142 100644
--- a/lib/redmine/views/other_formats_builder.rb
+++ b/lib/redmine/views/other_formats_builder.rb
@@ -28,6 +28,16 @@ module Redmine
html_options = { :class => name.to_s.downcase, :rel => 'nofollow' }.merge(options)
@view.content_tag('span', @view.link_to(caption, url, html_options))
end
+
+ # Preserves query parameters
+ def link_to_with_query_parameters(name, url={}, options={})
+ params = @view.request.query_parameters.except(:page, :format).except(*url.keys)
+ url = {:params => params, :page => nil, :format => name.to_s.downcase}.merge(url)
+
+ caption = options.delete(:caption) || name
+ html_options = { :class => name.to_s.downcase, :rel => 'nofollow' }.merge(options)
+ @view.content_tag('span', @view.link_to(caption, url, html_options))
+ end
end
end
end
diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb
index 668f346d4..5cafcda4b 100644
--- a/test/integration/issues_test.rb
+++ b/test/integration/issues_test.rb
@@ -123,7 +123,7 @@ class IssuesTest < Redmine::IntegrationTest
get '/issues', :project_id => 'ecookbook'
%w(Atom PDF CSV).each do |format|
- assert_select 'a[rel=nofollow][href=?]', "/projects/ecookbook/issues.#{format.downcase}", :text => format
+ assert_select 'a[rel=nofollow][href=?]', "/issues.#{format.downcase}?project_id=ecookbook", :text => format
end
end