Project

General

Profile

Patch #29395 » 0002-repository-entry-pagination.patch

Jens Krämer, 2018-08-16 10:58

View differences:

app/controllers/repositories_controller.rb
146 146
      send_opt[:disposition] = disposition(@path)
147 147
      send_data @repository.cat(@path, @rev), send_opt
148 148
    else
149
      # set up pagination from entry to entry
150
      parent_path = @path.split('/')[0...-1].join('/')
151
      @entries = @repository.entries(parent_path, @rev).reject(&:is_dir?)
152
      if index = @entries.index{|e| e.name == @entry.name}
153
        @paginator = Redmine::Pagination::Paginator.new(@entries.size, 1, index+1)
154
      end
155

  
149 156
      if !@entry.size || @entry.size <= Setting.file_max_size_displayed.to_i.kilobyte
150 157
        content = @repository.cat(@path, @rev)
151 158
        (show_error_not_found; return) unless content
app/helpers/repositories_helper.rb
32 32
    end
33 33
  end
34 34

  
35
  def render_pagination
36
    pagination_links_each @paginator do |text, parameters, options|
37
      if entry = @entries[parameters[:page] - 1]
38
        ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path)
39
        link_to text, {action: 'entry', id: @project, repository_id: @repository.identifier_param, path: to_path_param(ent_path), rev: @rev}
40
      end
41
    end if @paginator
42
  end
43

  
35 44
  def render_properties(properties)
36 45
    unless properties.nil? || properties.empty?
37 46
      content = ''
app/views/repositories/entry.html.erb
35 35
                :class => 'icon icon-download') : nil } %>
36 36
<% end %>
37 37

  
38
<span class="pagination">
39
  <%= render_pagination %>
40
</span>
41

  
38 42
<% content_for :header_tags do %>
39 43
<%= stylesheet_link_tag "scm" %>
40 44
<% end %>
test/functional/repositories_git_controller_test.rb
243 243
      assert_select 'tr#L11 td.line-code', :text => /WITHOUT ANY WARRANTY/
244 244
    end
245 245

  
246
    def test_entry_show_should_render_pagination
247
      get :entry, :params => {
248
          :id => PRJ_ID,
249
          :repository_id => @repository.id,
250
          :path => repository_path_hash(['README'])[:param]
251
        }
252
      assert_response :success
253
      assert_select 'ul.pages li.next', :text => /next/i
254
      assert_select 'ul.pages li.previous', :text => /previous/i
255
    end
256

  
246 257
    def test_entry_show_latin_1
247 258
      if @ruby19_non_utf8_pass
248 259
        puts_ruby19_non_utf8_pass()
(2-2/6)