From f4eb85200a61b50d1c030f5f73d97426c94b556a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Thu, 5 Jan 2023 11:01:18 +0100 Subject: [PATCH] #1414 Empty default version by default --- app/helpers/dmsf_upload_helper.rb | 2 +- app/models/dmsf_file_revision.rb | 3 +- app/models/dmsf_upload.rb | 9 +++- .../dmsf_files/_version_selector.html.erb | 9 +++- app/views/settings/_dmsf_settings.html.erb | 8 +++ config/locales/cs.yml | 2 + config/locales/de.yml | 2 + config/locales/en.yml | 2 + config/locales/es.yml | 2 + config/locales/fa.yml | 2 + config/locales/fr.yml | 2 + config/locales/hu.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 2 + config/locales/ko.yml | 2 + config/locales/nl.yml | 2 + config/locales/pl.yml | 2 + config/locales/pt-BR.yml | 2 + config/locales/sl.yml | 2 + config/locales/zh-TW.yml | 2 + config/locales/zh.yml | 2 + init.rb | 3 +- test/unit/dmsf_upload_test.rb | 53 +++++++++++++++++++ 23 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 test/unit/dmsf_upload_test.rb diff --git a/app/helpers/dmsf_upload_helper.rb b/app/helpers/dmsf_upload_helper.rb index 26602a4d..fbde8888 100644 --- a/app/helpers/dmsf_upload_helper.rb +++ b/app/helpers/dmsf_upload_helper.rb @@ -165,7 +165,7 @@ module DmsfUploadHelper # 1 -> 2, -1 -> -2, A -> B def self.increase_version(version) - version ||= 0 + return nil unless version return 1 if ((version == ' ') || ((-version) == ' '.ord)) if Integer(version) if version >= 0 diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 5a6913d7..40c8d2c1 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -274,7 +274,8 @@ class DmsfFileRevision < ActiveRecord::Base # Patch version self.patch_version = case version_to_increase when PATCH_VERSION - DmsfUploadHelper.increase_version patch_version + patch_version = 0 unless patch_version + DmsfUploadHelper.increase_version patch_version else nil end diff --git a/app/models/dmsf_upload.rb b/app/models/dmsf_upload.rb index baafe59d..804050cf 100644 --- a/app/models/dmsf_upload.rb +++ b/app/models/dmsf_upload.rb @@ -82,8 +82,13 @@ class DmsfUpload if file.nil? || file.last_revision.nil? @title = DmsfFileRevision.filename_to_title(@name) @description = uploaded[:comment] - @major_version = 0 - @minor_version = 0 + if Setting.plugin_redmine_dmsf['empty_minor_version_by_default'] + @major_version = 1 + @minor_version = nil + else + @major_version = 0 + @minor_version = 0 + end @patch_version = nil @workflow = nil file = DmsfFile.new diff --git a/app/views/dmsf_files/_version_selector.html.erb b/app/views/dmsf_files/_version_selector.html.erb index fece2234..9d6fd65c 100644 --- a/app/views/dmsf_files/_version_selector.html.erb +++ b/app/views/dmsf_files/_version_selector.html.erb @@ -36,8 +36,13 @@ DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.patch_version))), class: 'dmsf-select-version' %> <% else %> - <%= select_tag select_tag_name_minor, options_for_select(DmsfUploadHelper::minor_version_select_options, - DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.minor_version))), + <% if revision_or_upload.minor_version %> + <% minor_version = DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.minor_version)) %> + <% else %> + <% minor_version = '' %> + <% end %> + <%= select_tag select_tag_name_minor, + options_for_select(DmsfUploadHelper::minor_version_select_options, minor_version), class: 'dmsf-select-version' %> . <%= select_tag select_tag_name_patch, options_for_select(DmsfUploadHelper::patch_version_select_options, diff --git a/app/views/settings/_dmsf_settings.html.erb b/app/views/settings/_dmsf_settings.html.erb index a949213d..d8b5bedb 100644 --- a/app/views/settings/_dmsf_settings.html.erb +++ b/app/views/settings/_dmsf_settings.html.erb @@ -160,6 +160,14 @@

+

+ <%= content_tag :label, l(:label_empty_minor_version_by_default) %> + <%= check_box_tag 'settings[empty_minor_version_by_default]', false, @settings['empty_minor_version_by_default'] %> + + <%= l(:label_default) %>: <%= l(:general_text_No) %> + +

+
<%= l(:label_dmsf_columns) %> diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 427cbc0b..8e60ca46 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -464,6 +464,8 @@ cs: note_dmsf_global_menu_disabled: Pokud je zašrtnuto, tak položka DMS není v hlavním menu. error_dmsf_workflow_assigned: Použitý schvalovací proces nemůže být ani upraven ani smazán. + label_empty_minor_version_by_default: Prázdná vedlejší verze jako výchozí + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/de.yml b/config/locales/de.yml index 6927629b..ad0b99f9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -460,6 +460,8 @@ de: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Der verwendete Genehmigungs-Workflow kann weder bearbeitet noch gelöscht werden. + label_empty_minor_version_by_default: Leere Unterversion als Standard + easy_pages: modules: dmsf_locked_documents: Von mir gesperrte Dokumente diff --git a/config/locales/en.yml b/config/locales/en.yml index 079770d3..111cf5a0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -464,6 +464,8 @@ en: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/es.yml b/config/locales/es.yml index 5ee1ff7d..35c78717 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -464,6 +464,8 @@ es: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 6cb2299d..40e631cb 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -443,6 +443,8 @@ fa: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: اسناد قفل شده‌ی من diff --git a/config/locales/fr.yml b/config/locales/fr.yml index eebb10da..1f97b249 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -464,6 +464,8 @@ fr: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 5930fa7a..c720aead 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -463,6 +463,8 @@ hu: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/it.yml b/config/locales/it.yml index e05bd205..4ad1b7c7 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -464,6 +464,8 @@ it: # Italian strings thx 2 Matteo Arceci! note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 886f7ed8..e4bd2f66 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -465,6 +465,8 @@ ja: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: 自分がロック中の文書 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index ee487ed1..adf60b45 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -464,6 +464,8 @@ ko: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: 내 잠긴 파일 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 2ed1c5ed..387391cd 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -464,6 +464,8 @@ nl: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/pl.yml b/config/locales/pl.yml index f717cd44..42cdfed9 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -464,6 +464,8 @@ pl: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 13c59a35..c9934b1a 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -464,6 +464,8 @@ pt-BR: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/sl.yml b/config/locales/sl.yml index e1fe6d95..b58f86f2 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -464,6 +464,8 @@ sl: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 6c5f0d8f..cd9ee108 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -463,6 +463,8 @@ zh-TW: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 18ed2e42..a51a81c3 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -464,6 +464,8 @@ zh: note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu. error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted. + label_empty_minor_version_by_default: Empty minor version by default + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/init.rb b/init.rb index c11440af..cb9ed593 100644 --- a/init.rb +++ b/init.rb @@ -58,7 +58,8 @@ Redmine::Plugin.register :redmine_dmsf do 'dmsf_max_notification_receivers_info' => 10, 'office_bin' => 'libreoffice', 'dmsf_global_menu_disabled' => nil, - 'dmsf_default_query' => nil + 'dmsf_default_query' => nil, + 'empty_minor_version_by_default' => nil } end diff --git a/test/unit/dmsf_upload_test.rb b/test/unit/dmsf_upload_test.rb new file mode 100644 index 00000000..2ce352c8 --- /dev/null +++ b/test/unit/dmsf_upload_test.rb @@ -0,0 +1,53 @@ +# encoding: utf-8 +# frozen_string_literal: true +# +# Redmine plugin for Document Management System "Features" +# +# Copyright © 2011-23 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../test_helper', __FILE__) + +class DmsfUploadTest < RedmineDmsf::Test::UnitTest + + fixtures :projects + + def setup + super + @uploaded = { + disk_filename: '230105094726_1-TIOMAN_IMG_4391a.JPG', + content_type: 'image/jpeg', + original_filename: '1-TIOMAN_IMG_4391a.JPG', + comment: '', + tempfile_path: '/opt/redmine/files/2023/01/230105104724_1-TIOMAN_IMG_4391a.JPG', + digest: '3fae7e571666c3b9a70067970a00396b5019e6ea94b26398d13e989e695a1a39' + } + end + + def test_initialize + with_settings plugin_redmine_dmsf: { 'empty_minor_version_by_default' => '1' } do + upload = DmsfUpload.new(@project1, nil, @uploaded) + assert_equal 1, upload.major_version + assert_nil upload.minor_version + end + with_settings plugin_redmine_dmsf: { 'empty_minor_version_by_default' => nil } do + upload = DmsfUpload.new(@project1, nil, @uploaded) + assert_equal 0, upload.major_version + assert_equal 0, upload.minor_version + end + end + +end \ No newline at end of file