diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index d6742560..20e8deba 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -146,7 +146,7 @@ class DmsfQuery < Query "SELECT ct.id FROM dmsf_folders ct LEFT OUTER JOIN custom_values ON custom_values.customized_type='DmsfFolder' AND custom_values.customized_id=ct.id AND custom_values.custom_field_id=", 'SELECT custom_values.customized_id FROM custom_values WHERE custom_values.customized_type=dmsf_folders.customized_type AND custom_values.customized_id=dmsf_folders.customized_id AND custom_values.custom_field_id=') sql_cf.gsub! 'WHERE dmsf_folders.id = ct.id AND (', 'AND ' - sql_cf.gsub!(/\)$/, '') + sql_cf.gsub! /\)$/, '' filters_clauses << sql_cf else filters_clauses << '(' + sql_for_field(field, operator, v, queried_table_name, field) + ')' diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb index bef12411..50d00994 100644 --- a/test/functional/dmsf_controller_test.rb +++ b/test/functional/dmsf_controller_test.rb @@ -235,6 +235,16 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase assert_select 'a', text: @file10.title, count: 0 end + def test_show_filters_custom_field + get :show, params: { id: @project1.id, set_filter: '1', f: ['cf_21', ''], op: { 'cf_21' => '=' }, + v: { 'cf_21' => ['User documentation']} } + assert_response :success + # Folder 1 with Tag=User documentation + assert_select 'a', text: @folder1.title + # Other document/folders are not present + assert_select 'a', text: @file10.title, count: 0 + end + def test_show_without_file_manipulation @role_manager.remove_permission! :file_manipulation get :show, params: { id: @project1.id }