diff --git a/app/helpers/dmsf_queries_helper.rb b/app/helpers/dmsf_queries_helper.rb
index e4bf778f..767d65e2 100644
--- a/app/helpers/dmsf_queries_helper.rb
+++ b/app/helpers/dmsf_queries_helper.rb
@@ -50,20 +50,20 @@ module DmsfQueriesHelper
when :id
case item.type
when 'file', 'file-link'
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
super column, item, value
else
link_to h(value), dmsf_file_path(id: item.id)
end
when 'folder', 'folder-link'
if item.id
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
super column, item, value
else
link_to h(value), edit_dmsf_path(id: item.project_id, folder_id: item.id)
end
else
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
super column, item, item.project_id
else
link_to h(item.project_id), edit_root_dmsf_path(id: item.project_id)
@@ -90,42 +90,50 @@ module DmsfQueriesHelper
end
case item.type
when 'folder'
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
tag = content_tag('span', value, class: 'icon icon-folder')
else
- tag = "".html_safe +
- link_to(h(value), dmsf_folder_path(id: item.project, folder_id: item.id), class: 'icon icon-folder')
+ tag = link_to(h(value), dmsf_folder_path(id: item.project, folder_id: item.id), class: 'icon icon-folder')
+ unless filter_any?
+ tag = "".html_safe + tag
+ end
end
tag + content_tag('div', item.filename, class: 'dmsf-filename', title: l(:title_filename_for_download))
when 'folder-link'
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
tag = content_tag('span', value, class: 'icon icon-folder')
else
- tag = "".html_safe +
# For links we use revision_id containing dmsf_folder.id in fact
- link_to(h(value), dmsf_folder_path(id: item.project, folder_id: item.revision_id), class: 'icon icon-folder')
+ tag = link_to(h(value), dmsf_folder_path(id: item.project, folder_id: item.revision_id), class: 'icon icon-folder')
+ unless filter_any?
+ tag = "".html_safe + tag
+ end
end
tag + content_tag('div', item.filename, class: 'dmsf-filename', title: l(:label_target_folder))
when 'file', 'file-link'
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
tag = content_tag('span', value, class: "icon icon-file #{DmsfHelper.filetype_css(item.filename)}")
else
# For links we use revision_id containing dmsf_file.id in fact
file_view_url = url_for({ controller: :dmsf_files, action: 'view', id: (item.type == 'file') ? item.id : item.revision_id })
content_type = Redmine::MimeType.of(value)
content_type = 'application/octet-stream' if content_type.blank?
- tag = "".html_safe +
- link_to(h(value), file_view_url, target: '_blank',
+ tag = link_to(h(value), file_view_url, target: '_blank',
class: "icon icon-file #{DmsfHelper.filetype_css(item.filename)}",
'data-downloadurl': "#{content_type}:#{h(value)}:#{file_view_url}")
+ unless filter_any?
+ tag = "".html_safe + tag
+ end
end
tag + content_tag('div', item.filename, class: 'dmsf-filename', title: l(:title_filename_for_download))
when 'url-link'
- if item.deleted && (item.deleted > 0)
+ if item&.deleted > 0
tag = content_tag('span', value, class: 'icon icon-link')
else
- tag = "".html_safe +
- link_to(h(value), item.filename, target: '_blank', class: 'icon icon-link')
+ tag = link_to(h(value), item.filename, target: '_blank', class: 'icon icon-link')
+ unless filter_any?
+ tag = "".html_safe + tag
+ end
end
tag + content_tag('div', item.filename, class: 'dmsf-filename', title: l(:field_url))
else
@@ -135,7 +143,7 @@ module DmsfQueriesHelper
number_to_human_size value
when :workflow
if value
- if item.workflow_id && (!(item.deleted && (item.deleted > 0)))
+ if item.workflow_id && (!(item&.deleted > 0))
if item.type == 'file'
url = log_dmsf_workflow_path(project_id: item.project_id, id: item.workflow_id, dmsf_file_id: item.id)
else
@@ -173,4 +181,13 @@ module DmsfQueriesHelper
end
end
+ def filter_any?
+ if params[:v]
+ params[:v].each do |filter|
+ return true if (filter.size > 1) && filter[1].all?{ |v| v.present? }
+ end
+ end
+ false
+ end
+
end
diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb
index 536375e4..9e4fae49 100644
--- a/test/functional/dmsf_controller_test.rb
+++ b/test/functional/dmsf_controller_test.rb
@@ -180,6 +180,25 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
assert_select 'table.dmsf'
# CSV export
assert_select 'a.csv'
+ # 'Zero Size File' document and an expander is present
+ assert_select 'a', text: @file10.title
+ assert_select 'span.dmsf_expander'
+ end
+
+ def test_show_filters_found
+ get :show, params: { id: @project1.id, f: ['title'], op: { 'title' => '~' }, v: { 'title' => ['Zero'] } }
+ assert_response :success
+ # 'Zero Size File' document
+ assert_select 'a', text: @file10.title
+ # No expander if a filter is set
+ assert_select 'span.dmsf_expander', count: 0
+ end
+
+ def test_show_filters_not_found
+ get :show, params: { id: @project1.id, f: ['title'], op: { 'title' => '~' }, v: { 'title' => ['xxx'] } }
+ assert_response :success
+ # 'Zero Size File' document
+ assert_select 'a', text: @file10.title, count: 0
end
def test_show_without_file_manipulation