]> source.dussan.org Git - redmine.git/commitdiff
Don't generate urls with params.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jul 2016 19:18:12 +0000 (19:18 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jul 2016 19:18:12 +0000 (19:18 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@15631 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/activities/index.html.erb
app/views/gantts/show.html.erb
app/views/issues/index.html.erb
app/views/repositories/diff.html.erb
app/views/timelog/index.html.erb
lib/redmine/views/other_formats_builder.rb
test/integration/issues_test.rb

index 26613aef89942b1860eec9a601c1ba1927560763..d939fdc79681db3e8dc845dc2c43394f9676f842 100644 (file)
@@ -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 %>
index 0f7092081eb0c3cc2a3f9c490aca281e077b4740..09a17b166a019fa3f8b7b0f8d3df8b7bdaaf3f20 100644 (file)
 </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? %>
 
index fd762023fbf4362f31d110e60194a752f5bd9cf7..d120ce71e59dde05f2f50fdc9fedbe4fc4c55090 100644 (file)
@@ -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;">
index 5d0b899a750e90e268704949fb2902952880c81d..889a65f7e95c9705773da2ae7b233e6c0a1d939f 100644 (file)
@@ -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') -%>
index a875e53af607b495aacd6a01fef2b9d3c85d5bf4..b32e7092c4a4ba36afe89cde4871a0f1779453b0 100644 (file)
@@ -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;">
index 48af0fbcb96fd88c57984bbb9a9dc40ad31e0d84..4caee2142fe35f1050fbe8f85805a75ab219d0fa 100644 (file)
@@ -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
index 668f346d4c0faa1fca3c049b2517545c6a6f4842..5cafcda4b65c3a400a550fee100fc1e0d972b8b5 100644 (file)
@@ -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