diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e258735..2207df23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ Changelog for Redmine DMSF ========================== +4.2.2 *2025-07-23* +------------------ + + Missing lock icons + +* Bug: #3 - Missing lock icons by locked objects + 4.2.1 *2025-07-10* ------------------ diff --git a/README.md b/README.md index a89876e4..3106811d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Redmine DMSF Plugin 4.2.1 +# Redmine DMSF Plugin 4.2.2 [![GitHub CI](https://github.com/picman/redmine_dmsf/actions/workflows/rubyonrails.yml/badge.svg?branch=master)](https://github.com/picman/redmine_dmsf/actions/workflows/rubyonrails.yml) [![Support Ukraine Badge](https://bit.ly/support-ukraine-now)](https://github.com/support-ukraine/support-ukraine) diff --git a/app/helpers/dmsf_queries_helper.rb b/app/helpers/dmsf_queries_helper.rb index 5332f3da..c5066758 100644 --- a/app/helpers/dmsf_queries_helper.rb +++ b/app/helpers/dmsf_queries_helper.rb @@ -30,7 +30,7 @@ module DmsfQueriesHelper case item.type when 'file' file = DmsfFile.find_by(id: item.id) - if !item.deleted && file&.locked? + if !item.deleted? && file&.locked? return content_tag(:span, val) + link_to(sprite_icon('unlock', nil, icon_only: true, size: '12'), unlock_dmsf_files_path(id: file, @@ -40,7 +40,7 @@ module DmsfQueriesHelper end when 'folder' folder = DmsfFolder.find_by(id: item.id) - if !item.deleted && folder&.locked? + if !item.deleted? && folder&.locked? return content_tag(:span, val) + link_to(sprite_icon('unlock', nil, icon_only: true, size: '12'), unlock_dmsf_path(id: folder.project, @@ -54,37 +54,37 @@ module DmsfQueriesHelper when :id case item.type when 'file' - if item&.deleted&.positive? + if item.deleted? h(value) else link_to h(value), dmsf_file_path(id: item.id) end when 'file-link' - if item&.deleted&.positive? + if item.deleted? h(item.revision_id) else link_to h(item.revision_id), dmsf_file_path(id: item.revision_id) end when 'folder' if item.id - if item&.deleted&.positive? + if item.deleted? h(value) else link_to h(value), edit_dmsf_path(id: item.project_id, folder_id: item.id) end - elsif item&.deleted&.positive? + elsif item.deleted? h(item.project_id) else link_to h(item.project_id), edit_root_dmsf_path(id: item.project_id) end when 'folder-link' if item.id - if item&.deleted&.positive? + if item.deleted? h(item.revision_id) else link_to h(item.revision_id), edit_dmsf_path(id: item.project_id, folder_id: item.revision_id) end - elsif item&.deleted&.positive? + elsif item.deleted? h(item.project_id) else link_to h(item.project_id), edit_root_dmsf_path(id: item.project_id) diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index 972e2142..dea55d78 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -26,7 +26,7 @@ class DmsfQuery < Query # Standard columns self.available_columns = [ - QueryColumn.new(:id, sortable: 'id', caption: +'#'), + QueryColumn.new(:id, sortable: 'id', caption: :label_column_id), DmsfQueryTitleColumn.new(:title, sortable: 'title', frozen: true, caption: :label_column_title), QueryColumn.new(:size, sortable: 'size', caption: :label_column_size), DmsfQueryModifiedColumn.new(:modified, sortable: 'updated', caption: :label_column_modified), diff --git a/init.rb b/init.rb index d800df49..2d12e050 100644 --- a/init.rb +++ b/init.rb @@ -27,7 +27,7 @@ Redmine::Plugin.register :redmine_dmsf do author_url 'https://github.com/picman/redmine_dmsf/graphs/contributors' author 'Vít Jonáš / Daniel Munn / Karel Pičman' description 'Document Management System Features' - version '4.2.1' + version '4.2.2' requires_redmine version_or_higher: '6.0.0' diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb index 00ed5287..f215d93a 100644 --- a/test/functional/dmsf_controller_test.rb +++ b/test/functional/dmsf_controller_test.rb @@ -290,6 +290,14 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase assert @response.media_type.include?('text/csv') end + def test_show_locked + post '/login', params: { username: 'jsmith', password: 'jsmith' } + get "/projects/#{@project2.id}/dmsf" + assert_response :success + # An unlock icon next to a locked file + assert_select 'a.icon-unlock', count: 1 + end + def test_show_folder_doesnt_correspond_the_project post '/login', params: { username: 'jsmith', password: 'jsmith' } assert @project1 != @folder3.project