New UI: Add additional filter 'Locked documents' #1124

This commit is contained in:
Karel Pičman 2022-10-12 11:31:01 +02:00
parent 679c448e1d
commit 417b9bff0a
17 changed files with 46 additions and 5 deletions

View File

@ -101,6 +101,7 @@ class DmsfQuery < Query
# Returns the count of all items # Returns the count of all items
def dmsf_count def dmsf_count
Rails.logger.info ">>> #{base_scope.where(statement).to_sql}"
base_scope.where(statement).count base_scope.where(statement).count
rescue ::ActiveRecord::StatementInvalid => e rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new e.message raise StatementInvalid.new e.message
@ -110,6 +111,7 @@ class DmsfQuery < Query
add_available_filter 'author', type: :list, values: lambda { author_values } add_available_filter 'author', type: :list, values: lambda { author_values }
add_available_filter 'title', type: :text add_available_filter 'title', type: :text
add_available_filter 'updated', type: :date_past add_available_filter 'updated', type: :date_past
add_available_filter 'locked', type: :list, values: [[l(:general_text_yes), '1'], [l(:general_text_no), '0']]
add_custom_fields_filters DmsfFileRevisionCustomField.all add_custom_fields_filters DmsfFileRevisionCustomField.all
end end
@ -240,6 +242,15 @@ class DmsfQuery < Query
end end
end end
def now
case ActiveRecord::Base.connection.adapter_name.downcase
when 'sqlserver'
'GETDATE()'
else
'NOW()'
end
end
def get_cf_query(id, type, table) def get_cf_query(id, type, table)
if Redmine::Database.mysql? || Redmine::Database.sqlite? if Redmine::Database.mysql? || Redmine::Database.sqlite?
aggr_func = 'GROUP_CONCAT(value)' aggr_func = 'GROUP_CONCAT(value)'
@ -277,6 +288,7 @@ class DmsfQuery < Query
0 AS customized_id, 0 AS customized_id,
projects.description AS description, projects.description AS description,
'' AS comment, '' AS comment,
0 AS locked,
0 AS sort#{cf_columns}}).visible 0 AS sort#{cf_columns}}).visible
if dmsf_folder_id || deleted if dmsf_folder_id || deleted
scope.none scope.none
@ -313,8 +325,11 @@ class DmsfQuery < Query
dmsf_folders.id AS customized_id, dmsf_folders.id AS customized_id,
dmsf_folders.description AS description, dmsf_folders.description AS description,
'' AS comment, '' AS comment,
(case when dmsf_locks.id IS NULL then 0 else 1 end) AS locked,
1 AS sort#{cf_columns}}). 1 AS sort#{cf_columns}}).
joins('LEFT JOIN users ON dmsf_folders.user_id = users.id') joins('LEFT JOIN users ON dmsf_folders.user_id = users.id').
joins("LEFT JOIN dmsf_locks ON dmsf_folders.id = dmsf_locks.entity_id AND dmsf_locks.entity_type = 1 AND
(dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > #{now})")
return scope.none unless project return scope.none unless project
if deleted if deleted
scope = scope.deleted scope = scope.deleted
@ -360,9 +375,12 @@ class DmsfQuery < Query
dmsf_folders.id AS customized_id, dmsf_folders.id AS customized_id,
dmsf_folders.description AS description, dmsf_folders.description AS description,
'' AS comment, '' AS comment,
(case when dmsf_locks.id IS NULL then 0 else 1 end) AS locked,
1 AS sort#{cf_columns}}). 1 AS sort#{cf_columns}}).
joins('LEFT JOIN dmsf_folders ON dmsf_links.target_id = dmsf_folders.id'). 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)') joins('LEFT JOIN users ON users.id = COALESCE(dmsf_folders.user_id, dmsf_links.user_id)').
joins("LEFT JOIN dmsf_locks ON dmsf_folders.id = dmsf_locks.entity_id AND dmsf_locks.entity_type = 1 AND
(dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > #{now})")
if deleted if deleted
scope = scope.deleted scope = scope.deleted
else else
@ -407,9 +425,12 @@ class DmsfQuery < Query
dmsf_file_revisions.id AS customized_id, dmsf_file_revisions.id AS customized_id,
dmsf_file_revisions.description AS description, dmsf_file_revisions.description AS description,
dmsf_file_revisions.comment AS comment, dmsf_file_revisions.comment AS comment,
(case when dmsf_locks.id IS NULL then 0 else 1 end) AS locked,
2 AS sort#{cf_columns}}). 2 AS sort#{cf_columns}}).
joins(:dmsf_file_revisions). joins(:dmsf_file_revisions).
joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id '). joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id ').
joins("LEFT JOIN dmsf_locks ON dmsf_files.id = dmsf_locks.entity_id AND dmsf_locks.entity_type = 0 AND
(dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > #{now})").
where(sub_query) where(sub_query)
if deleted if deleted
scope = scope.deleted scope = scope.deleted
@ -422,7 +443,7 @@ class DmsfQuery < Query
if statement.present? || deleted if statement.present? || deleted
scope.where dmsf_files: { project_id: project.id } scope.where dmsf_files: { project_id: project.id }
else else
scope.where dmsf_files: { project_id: project.id, dmsf_folder_id: nil } scope.where(dmsf_files: { project_id: project.id, dmsf_folder_id: nil })
end end
end end
end end
@ -455,10 +476,13 @@ class DmsfQuery < Query
dmsf_file_revisions.id AS customized_id, dmsf_file_revisions.id AS customized_id,
dmsf_file_revisions.description AS description, dmsf_file_revisions.description AS description,
dmsf_file_revisions.comment AS comment, dmsf_file_revisions.comment AS comment,
(case when dmsf_locks.id IS NULL then 0 else 1 end) AS locked,
2 AS sort#{cf_columns}}). 2 AS sort#{cf_columns}}).
joins('JOIN dmsf_files ON dmsf_files.id = dmsf_links.target_id'). joins('JOIN dmsf_files ON dmsf_files.id = dmsf_links.target_id').
joins('JOIN dmsf_file_revisions ON dmsf_file_revisions.dmsf_file_id = dmsf_files.id'). 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 '). joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id ').
joins("LEFT JOIN dmsf_locks ON dmsf_files.id = dmsf_locks.entity_id AND dmsf_locks.entity_type = 0 AND
(dmsf_locks.expires_at IS NULL OR dmsf_locks.expires_at > #{now})").
where(sub_query) where(sub_query)
if deleted if deleted
scope = scope.deleted scope = scope.deleted
@ -505,6 +529,7 @@ class DmsfQuery < Query
0 AS customized_id, 0 AS customized_id,
'' AS description, '' AS description,
'' AS comment, '' AS comment,
0 AS locked,
2 AS sort#{cf_columns}}). 2 AS sort#{cf_columns}}).
joins('LEFT JOIN users ON dmsf_links.user_id = users.id ') joins('LEFT JOIN users ON dmsf_links.user_id = users.id ')
if deleted if deleted

View File

@ -404,6 +404,7 @@ cs:
field_first_at: První field_first_at: První
field_last_at: Poslední field_last_at: Poslední
field_size: Velikost field_size: Velikost
field_locked: Zamčen
label_add_width: Přidat s label_add_width: Přidat s
@ -459,8 +460,8 @@ cs:
label_column_description: Popis label_column_description: Popis
label_column_comment: Komentář label_column_comment: Komentář
label_dmsf_global_menu_disabled: Global DMS menu disabled label_dmsf_global_menu_disabled: Globální DMS menu zakázáno
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. note_dmsf_global_menu_disabled: Pokud je zašrtnuto, tak položka DMS není v hlavním menu.
easy_pages: easy_pages:
modules: modules:

View File

@ -400,6 +400,7 @@ de:
field_first_at: Erste field_first_at: Erste
field_last_at: Letzte field_last_at: Letzte
field_size: Größe field_size: Größe
field_locked: Gesperrt
label_add_width: Zugeben mit label_add_width: Zugeben mit

View File

@ -404,6 +404,7 @@ en:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Size field_size: Size
field_locked: Locked
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ es:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Tamaño field_size: Tamaño
field_locked: Bloqueado
label_add_width: Add with label_add_width: Add with

View File

@ -385,6 +385,7 @@ fa:
field_first_at: اولین field_first_at: اولین
field_last_at: آخرین field_last_at: آخرین
field_size: حجم field_size: حجم
field_locked: Locked
label_add_width: اضافه با label_add_width: اضافه با

View File

@ -404,6 +404,7 @@ fr:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Taille field_size: Taille
field_locked: Verrouillé
label_add_width: Add with label_add_width: Add with

View File

@ -403,6 +403,7 @@ hu:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Méret field_size: Méret
field_locked: Lezárták
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ it: # Italian strings thx 2 Matteo Arceci!
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Dydis field_size: Dydis
field_locked: Bloccato
label_add_width: Add with label_add_width: Add with

View File

@ -405,6 +405,7 @@ ja:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: サイズ field_size: サイズ
field_locked: Locked
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ ko:
field_first_at: 처음 field_first_at: 처음
field_last_at: 마지막 field_last_at: 마지막
field_size: 크기 field_size: 크기
field_locked: Locked
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ nl:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Grootte field_size: Grootte
field_locked: Vergrendeld
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ pl:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Rozmiar field_size: Rozmiar
field_locked: Zablokowany
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ pt-BR:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Tamanho field_size: Tamanho
field_locked: Bloqueado
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ sl:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: Velikost field_size: Velikost
field_locked: Zaklenjena
label_add_width: Add with label_add_width: Add with

View File

@ -403,6 +403,7 @@ zh-TW:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: 大小 field_size: 大小
field_locked: Locked
label_add_width: Add with label_add_width: Add with

View File

@ -404,6 +404,7 @@ zh:
field_first_at: First field_first_at: First
field_last_at: Last field_last_at: Last
field_size: 大小 field_size: 大小
field_locked: Locked
label_add_width: Add with label_add_width: Add with