Document's filtering in sub-folders
This commit is contained in:
parent
a4a00828d1
commit
f4d35a8a50
@ -82,6 +82,7 @@ class DmsfQuery < Query
|
||||
|
||||
def base_scope
|
||||
unless @scope
|
||||
statement # We need statement before scope due to the current folder filtering
|
||||
@scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_files_scope, dmsf_file_links_scope, dmsf_url_links_scope].
|
||||
inject(:union_all)
|
||||
end
|
||||
@ -110,12 +111,14 @@ class DmsfQuery < Query
|
||||
|
||||
def statement
|
||||
unless @statement
|
||||
@filter_dmsf_folder_id = false
|
||||
filters_clauses = []
|
||||
filters.each_key do |field|
|
||||
v = values_for(field).clone
|
||||
next unless v and !v.empty?
|
||||
operator = operator_for(field)
|
||||
if field == 'author'
|
||||
case field
|
||||
when 'author'
|
||||
if v.delete('me')
|
||||
v.push User.current.id.to_s
|
||||
end
|
||||
@ -183,13 +186,11 @@ class DmsfQuery < Query
|
||||
0 AS sort #{cf_columns}}).
|
||||
joins('LEFT JOIN users ON dmsf_folders.user_id = users.id').
|
||||
visible(!deleted)
|
||||
if deleted
|
||||
scope.where dmsf_folders: { project_id: project.id, deleted: deleted }
|
||||
else
|
||||
if filters.any?
|
||||
scope.where dmsf_folders: { project_id: project.id, deleted: deleted }
|
||||
elsif dmsf_folder_id
|
||||
if dmsf_folder_id
|
||||
scope.where dmsf_folders: { dmsf_folder_id: dmsf_folder_id, deleted: deleted }
|
||||
else
|
||||
if filters.any? || deleted
|
||||
scope.where dmsf_folders: { project_id: project.id, deleted: deleted }
|
||||
else
|
||||
scope.where dmsf_folders: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
|
||||
end
|
||||
@ -224,13 +225,11 @@ class DmsfQuery < Query
|
||||
0 AS sort #{cf_columns}}).
|
||||
joins('LEFT JOIN dmsf_folders ON dmsf_links.target_id = dmsf_folders.id').
|
||||
joins('LEFT JOIN users ON users.id = COALESCE(dmsf_folders.user_id, dmsf_links.user_id)')
|
||||
if deleted
|
||||
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, deleted: deleted }
|
||||
else
|
||||
if filters.any?
|
||||
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, deleted: deleted }
|
||||
elsif dmsf_folder_id
|
||||
if dmsf_folder_id
|
||||
scope.where dmsf_links: { target_type: 'DmsfFolder', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
|
||||
else
|
||||
if filters.any? || deleted
|
||||
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, deleted: deleted }
|
||||
else
|
||||
scope.where dmsf_links: { target_type: 'DmsfFolder', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
|
||||
end
|
||||
@ -266,13 +265,11 @@ class DmsfQuery < Query
|
||||
joins(:dmsf_file_revisions).
|
||||
joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id ').
|
||||
where('dmsf_file_revisions.created_at = (SELECT MAX(r.created_at) FROM dmsf_file_revisions r WHERE r.dmsf_file_id = dmsf_file_revisions.dmsf_file_id)')
|
||||
if deleted
|
||||
scope.where dmsf_files: { project_id: project.id, deleted: deleted }
|
||||
else
|
||||
if filters.any?
|
||||
scope.where dmsf_files: { project_id: project.id, deleted: deleted }
|
||||
elsif dmsf_folder_id
|
||||
if dmsf_folder_id
|
||||
scope.where dmsf_files: { dmsf_folder_id: dmsf_folder_id, deleted: deleted }
|
||||
else
|
||||
if filters.any? || deleted
|
||||
scope.where dmsf_files: { project_id: project.id, deleted: deleted }
|
||||
else
|
||||
scope.where dmsf_files: { project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
|
||||
end
|
||||
@ -309,17 +306,16 @@ class DmsfQuery < Query
|
||||
joins('JOIN dmsf_file_revisions ON dmsf_file_revisions.dmsf_file_id = dmsf_files.id').
|
||||
joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id ').
|
||||
where('dmsf_file_revisions.created_at = (SELECT MAX(r.created_at) FROM dmsf_file_revisions r WHERE r.dmsf_file_id = dmsf_file_revisions.dmsf_file_id)')
|
||||
if deleted
|
||||
scope.where project_id: project.id, deleted: deleted
|
||||
if dmsf_folder_id
|
||||
scope.where dmsf_links: { target_type: 'DmsfFile', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
|
||||
else
|
||||
if filters.any?
|
||||
scope.where project_id: project.id, deleted: deleted
|
||||
elsif dmsf_folder_id
|
||||
scope.where dmsf_folder_id: dmsf_folder_id, deleted: deleted
|
||||
if filters.any? || deleted
|
||||
scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, deleted: deleted }
|
||||
else
|
||||
scope.where project_id: project.id, dmsf_folder_id: nil, deleted: deleted
|
||||
scope.where dmsf_links: { target_type: 'DmsfFile', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def dmsf_url_links_scope
|
||||
@ -349,17 +345,16 @@ class DmsfQuery < Query
|
||||
dmsf_links.deleted AS deleted,
|
||||
1 AS sort #{cf_columns}}).
|
||||
joins('LEFT JOIN users ON dmsf_links.user_id = users.id ')
|
||||
if deleted
|
||||
scope.where target_type: 'DmsfUrl', project_id: project.id, deleted: deleted
|
||||
if dmsf_folder_id
|
||||
scope.where dmsf_links: { target_type: 'DmsfUrl', dmsf_folder_id: dmsf_folder_id, deleted: deleted }
|
||||
else
|
||||
if filters.any?
|
||||
scope.where target_type: 'DmsfUrl', project_id: project.id, deleted: deleted
|
||||
elsif dmsf_folder_id
|
||||
scope.where target_type: 'DmsfUrl', dmsf_folder_id: dmsf_folder_id, deleted: deleted
|
||||
if filters.any? || deleted
|
||||
scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, deleted: deleted }
|
||||
else
|
||||
scope.where target_type: 'DmsfUrl', project_id: project.id, dmsf_folder_id: nil, deleted: deleted
|
||||
end
|
||||
scope.where dmsf_links: { target_type: 'DmsfUrl', project_id: project.id, dmsf_folder_id: nil, deleted: deleted }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -72,6 +72,7 @@
|
||||
</div>
|
||||
|
||||
<%= form_tag(dmsf_folder_path(id: @project, folder_id: @folder), method: :get, id: 'query_form', class: 'dmsf-query-form') do %>
|
||||
<%= hidden_field_tag('folder_id', @folder.id) if @folder %>
|
||||
<%= render partial: 'queries/query_form' %>
|
||||
<% end %>
|
||||
<%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages } %>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user