summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/repositories_controller.rb7
-rw-r--r--app/helpers/repositories_helper.rb9
-rw-r--r--app/views/repositories/entry.html.erb4
-rw-r--r--test/functional/repositories_git_controller_test.rb11
4 files changed, 31 insertions, 0 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 0c6070b80..346ecf5c7 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -146,6 +146,13 @@ class RepositoriesController < ApplicationController
send_opt[:disposition] = disposition(@path)
send_data @repository.cat(@path, @rev), send_opt
else
+ # set up pagination from entry to entry
+ parent_path = @path.split('/')[0...-1].join('/')
+ @entries = @repository.entries(parent_path, @rev).reject(&:is_dir?)
+ if index = @entries.index{|e| e.name == @entry.name}
+ @paginator = Redmine::Pagination::Paginator.new(@entries.size, 1, index+1)
+ end
+
if !@entry.size || @entry.size <= Setting.file_max_size_displayed.to_i.kilobyte
content = @repository.cat(@path, @rev)
(show_error_not_found; return) unless content
diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb
index 59c97cdc5..f64ed1dc0 100644
--- a/app/helpers/repositories_helper.rb
+++ b/app/helpers/repositories_helper.rb
@@ -32,6 +32,15 @@ module RepositoriesHelper
end
end
+ def render_pagination
+ pagination_links_each @paginator do |text, parameters, options|
+ if entry = @entries[parameters[:page] - 1]
+ ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path)
+ link_to text, {action: 'entry', id: @project, repository_id: @repository.identifier_param, path: to_path_param(ent_path), rev: @rev}
+ end
+ end if @paginator
+ end
+
def render_properties(properties)
unless properties.nil? || properties.empty?
content = ''
diff --git a/app/views/repositories/entry.html.erb b/app/views/repositories/entry.html.erb
index eb2e1d5e4..ca52e2873 100644
--- a/app/views/repositories/entry.html.erb
+++ b/app/views/repositories/entry.html.erb
@@ -35,6 +35,10 @@
:class => 'icon icon-download') : nil } %>
<% end %>
+<span class="pagination">
+ <%= render_pagination %>
+</span>
+
<% content_for :header_tags do %>
<%= stylesheet_link_tag "scm" %>
<% end %>
diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb
index 5b9a02956..0142f2be5 100644
--- a/test/functional/repositories_git_controller_test.rb
+++ b/test/functional/repositories_git_controller_test.rb
@@ -243,6 +243,17 @@ class RepositoriesGitControllerTest < Redmine::RepositoryControllerTest
assert_select 'tr#L11 td.line-code', :text => /WITHOUT ANY WARRANTY/
end
+ def test_entry_show_should_render_pagination
+ get :entry, :params => {
+ :id => PRJ_ID,
+ :repository_id => @repository.id,
+ :path => repository_path_hash(['README'])[:param]
+ }
+ assert_response :success
+ assert_select 'ul.pages li.next', :text => /next/i
+ assert_select 'ul.pages li.previous', :text => /previous/i
+ end
+
def test_entry_show_latin_1
if @ruby19_non_utf8_pass
puts_ruby19_non_utf8_pass()