From 524aca0e0b2ce807b657718208cc1d4a84e8f00f Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Tue, 10 Nov 2020 12:10:35 +0100 Subject: [PATCH] New UI: List view improvements #1123 --- app/helpers/dmsf_queries_helper.rb | 18 ++++++++++++++++++ app/models/dmsf_folder.rb | 10 ++++++++++ app/models/dmsf_query.rb | 13 ++++++++++++- app/views/dmsf_context_menus/_folder.html.erb | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/helpers/dmsf_queries_helper.rb b/app/helpers/dmsf_queries_helper.rb index 94fe18b3..e4bf778f 100644 --- a/app/helpers/dmsf_queries_helper.rb +++ b/app/helpers/dmsf_queries_helper.rb @@ -29,6 +29,24 @@ module DmsfQueriesHelper return super column, item, value end case column.name + when :modified + val = super(column, item, value) + case item.type + when 'file' + file = DmsfFile.find_by(id: item.id) + if file&.locked? + return content_tag(:span, val) + + content_tag(:span, '', title: l(:title_locked_by_user, user: file.locked_by), class: 'icon icon-unlock') + end + when 'folder' + folder = DmsfFolder.find_by(id: item.id) + if folder&.locked? + return content_tag(:span, val) + + content_tag(:span, '', title: l(:title_locked_by_user, user: folder.locked_by), class: 'icon icon-unlock') + end + end + content_tag(:span, val) + + content_tag(:span, '', class: 'icon icon-none') when :id case item.type when 'file', 'file-link' diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 20477e97..e3174bb5 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -128,6 +128,16 @@ class DmsfFolder < ActiveRecord::Base end end + def locked_by + if lock && lock.reverse[0] + user = lock.reverse[0].user + if user + return (user == User.current) ? l(:label_me) : user.name + end + end + '' + end + def delete(commit = false) if locked? errors[:base] << l(:error_folder_is_locked) diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index 582a0afd..3e20ea4f 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -29,7 +29,7 @@ class DmsfQuery < Query # Standard columns self.available_columns = [ - QueryColumn.new(:id, sortable: 'id', caption: +'#'), + QueryColumn.new(:id, sortable: 'id', caption: +'#', frozen: false), DmsfTitleQueryColumn.new(:title, sortable: 'title', frozen: true), QueryColumn.new(:size, sortable: 'size'), DmsfModifiedQueryColumn.new(:modified, sortable: 'updated'), @@ -140,6 +140,17 @@ class DmsfQuery < Query filters['title'] = filter if filter end + def columns + cols = super + # Just move the optional column Id to the beginning as it isn't frozen + id_index = cols.index { |col| col.name == :id } + if id_index == 1 + id_col = cols.delete_at(id_index) + cols.insert 0, id_col + end + cols + end + ###################################################################################################################### # New diff --git a/app/views/dmsf_context_menus/_folder.html.erb b/app/views/dmsf_context_menus/_folder.html.erb index 9d507af5..263db48c 100644 --- a/app/views/dmsf_context_menus/_folder.html.erb +++ b/app/views/dmsf_context_menus/_folder.html.erb @@ -38,6 +38,7 @@
  • <% if locked %> <%= context_menu_link l(:button_unlock), unlock_dmsf_path(id: project, folder_id: dmsf_folder), + title: l(:title_locked_by_user, user: dmsf_folder.locked_by), class: 'icon icon-unlock', disabled: !allowed || !unlockable %> <% else %> <%= context_menu_link l(:button_lock), lock_dmsf_path(id: project, folder_id: dmsf_folder),