diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb
index 4352d76c..a550481b 100644
--- a/app/controllers/dmsf_controller.rb
+++ b/app/controllers/dmsf_controller.rb
@@ -75,7 +75,9 @@ class DmsfController < ApplicationController
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
render layout: !request.xhr?
}
- format.api
+ format.api {
+ @offset, @limit = api_offset_and_limit
+ }
format.csv {
send_data query_to_csv(@query.dmsf_nodes, @query), type: 'text/csv; header=present', filename: 'dmsf.csv'
}
diff --git a/app/views/dmsf/_query_list.html.erb b/app/views/dmsf/_query_list.html.erb
index 33424444..cdaa282c 100644
--- a/app/views/dmsf/_query_list.html.erb
+++ b/app/views/dmsf/_query_list.html.erb
@@ -41,7 +41,7 @@
- <%= render partial: 'query_rows', locals: { query: query } %>
+ <%= render partial: 'query_rows', locals: { query: query, dmsf_pages: dmsf_pages } %>
diff --git a/app/views/dmsf/_query_rows.erb b/app/views/dmsf/_query_rows.erb
index 0feca1ca..4b156b06 100644
--- a/app/views/dmsf/_query_rows.erb
+++ b/app/views/dmsf/_query_rows.erb
@@ -20,7 +20,12 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
-<% query.dmsf_nodes.each do |node| %>
+<% options = {} %>
+<% if dmsf_pages %>
+ <% options[:offset] = dmsf_pages.offset %>
+ <% options[:limit] = dmsf_pages.per_page %>
+<% end %>
+<% query.dmsf_nodes(options).each do |node| %>
<% system = node.title =~ /^\./ %>
<% @idnt ||= 0 %>
">
diff --git a/app/views/dmsf/query_rows.js.erb b/app/views/dmsf/query_rows.js.erb
index c06b21e8..89274068 100644
--- a/app/views/dmsf/query_rows.js.erb
+++ b/app/views/dmsf/query_rows.js.erb
@@ -1,2 +1,2 @@
// Add rows
-$('#<%= params[:row_id] %>').after('<%= escape_javascript(render(partial: 'dmsf/query_rows', locals: { query: @query })) %>');
+$('#<%= params[:row_id] %>').after('<%= escape_javascript(render(partial: 'dmsf/query_rows', locals: { query: @query, dmsf_pages: nil })) %>');
diff --git a/app/views/dmsf/show.api.rsb b/app/views/dmsf/show.api.rsb
index 76dfee1b..e2422d0e 100644
--- a/app/views/dmsf/show.api.rsb
+++ b/app/views/dmsf/show.api.rsb
@@ -1,7 +1,7 @@
api.dmsf do
- api.array :dmsf_nodes, api_meta(total_count: @query.dmsf_nodes.count) do
- @query.dmsf_nodes.each do |node|
+ api.array :dmsf_nodes, api_meta(total_count: @query.dmsf_nodes(offset: @offset, limit: @limit).count) do
+ @query.dmsf_nodes(offset: @offset, limit: @limit).each do |node|
api.node do
api.id node.id
api.title node.title
diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb
index 869ae39f..337ed80d 100644
--- a/app/views/dmsf/show.html.erb
+++ b/app/views/dmsf/show.html.erb
@@ -94,7 +94,7 @@
<%= form_tag(dmsf_folder_path(d: @project, folder_id: @folder), method: :get, id: 'query_form') do %>
<%= render partial: 'queries/query_form' %>
<% end %>
-<%= render partial: 'query_list', locals: { query: @query } %>
+<%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages } %>
<%= context_menu %>
diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb
index 35b7f12c..1aa33f5c 100644
--- a/test/functional/dmsf_controller_test.rb
+++ b/test/functional/dmsf_controller_test.rb
@@ -218,9 +218,28 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_show
@role.add_permission! :view_dmsf_files
@role.add_permission! :view_dmsf_folders
+ @role.add_permission! :file_manipulation
get :show, params: { id: @project.id }
assert_response :success
- assert_select 'tr.dmsf_tree'
+ # New file link
+ assert_select 'a.icon-add'
+ # Filters
+ assert_select 'fieldset#filters'
+ # Options
+ assert_select 'fieldset#options'
+ # The main table
+ assert_select 'table.dmsf'
+ # CSV export
+ assert_select 'a.csv'
+ end
+
+ def test_show_without_file_manipulation
+ @role.add_permission! :view_dmsf_files
+ @role.add_permission! :view_dmsf_folders
+ get :show, params: { id: @project.id }
+ assert_response :success
+ # New file link should be missing
+ assert_select 'a.icon-add', false, 'Adding files is not allowed'
end
def test_show_csv
diff --git a/test/integration/rest_api/dmsf_folder_api_test.rb b/test/integration/rest_api/dmsf_folder_api_test.rb
index 7844e6ce..67f32664 100644
--- a/test/integration/rest_api/dmsf_folder_api_test.rb
+++ b/test/integration/rest_api/dmsf_folder_api_test.rb
@@ -92,6 +92,7 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&limit=1&offset=2"
assert_response :success
assert_equal 'application/xml', @response.content_type
+ puts response.body
#
#
#
@@ -99,10 +100,11 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
# 7
# folder7
# folder
+ #
#
#
#
- assert_select 'dmsf > dmsf_nodes', count: 1
+ assert_select 'dmsf > dmsf_nodes > node', count: 1
assert_select 'dmsf > dmsf_nodes > node > id', text: @folder7.id.to_s
assert_select 'dmsf > dmsf_nodes > node > title', text: @folder7.title
end